如何使用 Ansible 配置 Vim並安裝外掛
導讀 | 本文將使用 8系統透過編寫 Ansible playbook 來擴充套件使用vim編輯器。透過介紹每一步的操作說明,最後將彙總起來。 |
在執行本實驗錢,需要將
.vimrc
備份一下。本文編寫的playbook會覆蓋現有的
.vimrc
配置檔案。
[ansible@Master ~]$ yum -y install ansible
建立 Ansible playbook檔案
vim-config.yaml
[ansible@Master ~]$ vim vim-config.yaml
現在,透過提供名稱和目標主機列表來開始playbook的定義。本文,我們僅安裝在本機,所以
hosts:
部分的值寫的是
localhost
。如果需要將vim部署到其他主機中,可以再次寫入清單裡面的主機、主機組。
--- - name: Config Vim with Plugins hosts: localhost
接下來,設定
gather_facts: yes
選項以收集有關係統資訊。我們需要它來訪問下一步中的環境變數:
gather_facts: yes
配置 Vim 和 Vim 外掛需要向
$HOME/.vim
目錄和
$HOME/.vimrc
配置檔案新增內容。讓我們定義兩個變數來儲存它們的值:
vars: vim_dir: "{{ ansible_env.HOME }}/.vim" vimrc: "{{ ansible_env.HOME }}/.vimrc"
我們使用
ansible_env.HOME
變數來獲取
$HOME
環境變數的值。
現在開始定義playbook將執行的任務。首先提供
tasks:
:
tasks:
由於第一個任務是安裝一些我們稍後將安裝的 Vim 外掛所需的系統包。使用
package
模組安裝它們:
- name: Install required packages package: name: - vim-enhanced - git - powerline-fonts - fzf state: installed become: yes tags: install_packages
package
模組適用於不同的發行版。可以設定
become: yes
自動提升許可權。
tags
為安裝部分新增一個標籤,方便後面單獨安裝。
使用帶有引數
state: directory
的
file
模組來建立目錄。由於有三個目錄,因此使用
loop
模組來儲存所需的條目:
- name: Ensure .vim/{autoload,bundle} directory exists file: path: "{{ item }}" state: directory recurse: no mode: 0750 loop: - "{{ vim_dir }}" - "{{ vim_dir }}/autoload" - "{{ vim_dir }}/bundle"
本文使用
Vim-Pathogen
作為 Vim 外掛管理器。若要使用 Ansible 安裝它,可以使用
get_url
模組將外掛下載到其目標目錄:
- name: Ensure Pathogen is in place get_url: url: dest: "{{ vim_dir }}/autoload/pathogen.vim"
安裝 Pathogen 後,從 GitHub 克隆到目標目錄來部署所需的外掛。與建立目錄類似,使用
loop
模組克隆所需的倉庫:
- name: Deploy Plugins git: repo: "{{ item.url }}" dest: "{{ vim_dir }}/bundle/{{ item.name }}" clone: yes update: yes recursive: no loop: - name: vim-airline url: - name: nerdtree url: - name: fzf-vim url: - name: vim-gitgutter url: - name: vim-fugitive url: - name: vim-floaterm url:
我們使用字典列表作為
loop
的輸入,呼叫他們的語法是
{{ item.KEY }}
。
作為最後的任務,使用
copy
模組複製 Vim 的配置檔案。首先,在子目錄 files下建立配置檔案:
[ansible@Master ~]$ mkdir files [ansible@Master ~]$ vim files/vimrc
將如下內容複製到files/vimrc中:
execute pathogen#infect() syntax on filetype plugin indent on colo darkblue " Configuration vim Airline set laststatus=2 let g:airline#extensions#tabline#enabled=1 let g:airline_powerline_fonts=1 " Configuration NERDTree map:NERDTreeToggle" Configuration floaterm let g:floaterm_keymap_toggle = '' let g:floaterm_width = 0.9 let g:floaterm_height = 0.9 " Configuration Vim.FZF let g:fzf_preview_window = 'right:50%' let g:fzf_layout = { 'window': { 'width': 0.9, 'height': 0.6 } }
然後,使用
copy
模組將檔案複製到目的地:
- name: Ensure vimrc config in place copy; src: vimrc dest: "{{ vimrc }}" backup: yes mode: 0640
注意,不需要在
src
路徑中指定
files
目錄。預設情況下,Ansible 在此子目錄
files
中查詢要複製的檔案。
這裡是完整的劇本:
--- - name: Config Vim with Plugins hosts: localhost gather_facts: yes vars: vim_dir: "{{ ansible_env.HOME }}/.vim" vimrc: "{{ ansible_env.HOME }}/.vimrc" tasks: - name: Install required packages package: name: - vim-enhanced - git - powerline-fonts state: installed become: yes tags: install_packages - name: Ensure .vim/{autoload,bundle} directory exists file: path: "{{ item }}" state: directory recurse: no mode: 0750 loop: - "{{ vim_dir }}" - "{{ vim_dir }}/autoload" - "{{ vim_dir }}/bundle" - name: Ensure Pathogen is in place get_url: url: dest: "{{ vim_dir }}/autoload/pathogen.vim" - name: Deploy Plugins git: repo: "{{ item.url }}" dest: "{{ vim_dir }}/bundle/{{ item.name }}" clone: yes update: yes recursive: no loop: - name: vim-airline url: - name: nerdtree url: - name: fzf-vim url: - name: vim-gitgutter url: - name: vim-fugitive url: - name: vim-floaterm url: - name: Ensure vimrc config in place copy: src: vimrc dest: "{{ vimrc }}" backup: yes mode: 0640
使用
ansible-playbook
執行改劇本。由於此劇本僅針對本地主機,因此並不嚴格要求清單。首先新增
-C
選項,用來試執行一下,檢查錯誤。然後再執行。
[ansible@Master ~]$ ansible-playbook -C vim-config.yaml [ansible@Master ~]$ ansible-playbook vim-config.yaml
透過本劇本,可以深入瞭解ansible playbook的許多模組使用方法。
本文原創地址:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2850207/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何安裝 Vim 外掛
- vim外掛 NERDTree安裝使用
- Vim常用外掛安裝及配置方法
- 滴滴雲安裝並使用 Ansible
- 如何安裝最新的Vim8.2與Vim外掛管理器vim-plug
- vim實戰:外掛安裝(Vundle,NerdTree)
- 安裝ps 並安裝免費外掛
- Centos8 安裝並使用Ansible(二)CentOS
- Centos8 安裝並使用Ansible(一)CentOS
- ros環境搭建及vim-plug外掛安裝ROS
- vim安裝與配置
- Eclipse安裝lombok外掛及外掛使用案例EclipseLombok
- 剛安裝的sublime如何安裝外掛
- 如何給Wordpress安裝外掛
- IDEA如何檢視已經安裝的外掛並刪除Idea
- Vim 外掛管理
- [20231226]vim Align外掛使用例子.txt
- Lightroom 如何安裝lrplugin格式外掛OOMPlugin
- AU如何安裝vst外掛?Audition話放外掛vst的安裝圖文教程
- VIM 程式碼片段外掛 Ultisnips 使用教程
- ESLint、Prettier外掛的安裝與使用EsLint
- IntelliJ IDEA 如何下載安裝外掛IntelliJIdea
- Groovy的本地安裝和Eclipse外掛的配置Eclipse
- vim外掛之Taglist
- retdec 外掛安裝
- ATOM 安裝外掛
- Elasticsearch外掛安裝Elasticsearch
- vim安裝及個性化配置
- IDEA安裝外掛【Database navigation】並連線資料庫IdeaDatabaseNavigation資料庫
- [20220316]完善vim gdb.vim外掛.txt
- flash外掛怎麼安裝 電腦安裝flash外掛步驟
- 服務網格|如何使用 Amesh 配置外掛
- Sublime安裝PlantUML外掛
- eclipse 安裝svn外掛Eclipse
- ubuntu 常用外掛安裝Ubuntu
- VS Code外掛安裝
- 安裝Jenkins常用外掛Jenkins
- php常用外掛安裝PHP