如何使用 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常用外掛安裝及配置方法
- VIM 外掛安裝
- Redmine 安裝並配置使用Agile plugin外掛Plugin
- vim 外掛的安裝
- vim外掛的安裝
- Vim配置、外掛和使用技巧
- 使用Vundle管理配置Vim的外掛
- 如何安裝最新的Vim8.2與Vim外掛管理器vim-plug
- vim實戰:外掛安裝(Vundle,NerdTree)
- 滴滴雲安裝並使用 Ansible
- 安裝ps 並安裝免費外掛
- 如何管理 Vim 外掛
- vim Vundle 外掛管理器的安裝
- vim外掛的安裝方式 -- vim註釋外掛和doxygen函式註釋生成外掛-ctrlp外掛-tabular等號對齊 外掛...函式
- 如何使用Python編寫vim外掛Python
- vim配置檔案和外掛
- 安裝Vim自動補全外掛YouCompleteMe
- VIM安裝NERDTree外掛顯示工程目錄
- [20170617]vim 8.0外掛安裝.txt
- Centos8 安裝並使用Ansible(一)CentOS
- Centos8 安裝並使用Ansible(二)CentOS
- 親手安裝RabbitMq 3.7.2 並安裝Trace外掛MQ
- Sublime使用,安裝外掛
- Eclipse安裝Spket外掛並破解Eclipse
- vim自動補全外掛配置
- ros環境搭建及vim-plug外掛安裝ROS
- Eclipse如何安裝WindowBuilder外掛及如何使用WBEclipseUI
- 剛安裝的sublime如何安裝外掛
- 如何給Wordpress安裝外掛
- vim安裝與配置
- 配置vim外掛遇到youcompleteme外掛問題解決方案
- VIM安裝TagList外掛顯示檔案函式列表函式
- Eclipse安裝lombok外掛及外掛使用案例EclipseLombok
- 如何優雅地使用 VIM 檔案管理外掛 NERDTree
- Vim 外掛管理
- VIM外掛AutoClose