良许Linux教程网 干货合集 通过Ansible 配置 Vim并安装插件

通过Ansible 配置 Vim并安装插件

本篇文章重点为大家讲解一下Centos8系统通过编写 Ansible playbook 来扩展使用vim编辑器。通过介绍每一步的操作说明,最后将汇总起来。

在执行本实验钱,需要将.vimrc备份一下。本文编写的playbook会覆盖现有的 .vimrc 配置文件。

安装ansible

[ansible@Master ~]$ yum -y install ansible

创建playbook

创建 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: directoryfile模块来创建目录。由于有三个目录,因此使用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插件管理器

本文使用 Vim-Pathogen 作为 Vim 插件管理器。若要使用 Ansible 安装它,可以使用get_url 模块将插件下载到其目标目录:

 - name: Ensure Pathogen is in place
   get_url:
     url: https://github.com/tpope/vim-pathogen/blob/master/autoload/pathogen.vim
     dest: "{{ vim_dir }}/autoload/pathogen.vim"

从github克隆插件

安装 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: https://github.com/vim-airline/vim-airline
     - name: nerdtree
       url: https://github.com/preservim/nerdtree
     - name: fzf-vim
       url: https://github.com/junegunn/fzf.vim
     - name: vim-gitgutter
       url: https://github.com/airblade/vim-gitgutter
     - name: vim-fugitive
       url: https://github.com/tpope/vim-fugitive
     - name: vim-floaterm
       url: https://github.com/voldikss/vim-floaterm

我们使用字典列表作为loop的输入,调用他们的语法是{{ item.KEY }}

创建vim配置文件

作为最后的任务,使用 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  }  }

如何使用 Ansible 配置 Vim并安装插件如何使用 Ansible 配置 Vim并安装插件 然后,使用copy模块将文件复制到目的地:

 - name: Ensure vimrc config in place
   copy;
     src: vimrc
     dest: "{{ vimrc }}"
     backup: yes
     mode: 0640

注意,不需要在 src 路径中指定files目录。默认情况下,Ansible 在此子目录files中查找要复制的文件。

playbook剧本内容整合到一起

这里是完整的剧本:

---
- 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: https://tpo.pe/pathogen.vim
     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: https://github.com/vim-airline/vim-airline
     - name: nerdtree
       url: https://github.com/preservim/nerdtree
     - name: fzf-vim
       url: https://github.com/junegunn/fzf.vim
     - name: vim-gitgutter
       url: https://github.com/airblade/vim-gitgutter
     - name: vim-fugitive
       url: https://github.com/tpope/vim-fugitive
     - name: vim-floaterm
       url: https://github.com/voldikss/vim-floaterm
 - name: Ensure vimrc config in place
   copy:
     src: vimrc
     dest: "{{ vimrc }}"
     backup: yes
     mode: 0640

如何使用 Ansible 配置 Vim并安装插件如何使用 Ansible 配置 Vim并安装插件 使用 ansible-playbook 命令执行改剧本。由于此剧本仅针对本地主机,因此并不严格要求清单。首先添加-C选项,用来试运行一下,检查错误。然后再执行。

[ansible@Master ~]$ ansible-playbook -C vim-config.yaml
[ansible@Master ~]$ ansible-playbook vim-config.yaml

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部