Dans l'article Les cinq meilleurs plugins Vim pour les administrateurs système, j'ai couvert cinq plugins plus un bonus qui facilitent la vie des administrateurs système lorsqu'ils utilisent Vim. Cet article développera cela en développant un playbook Ansible pour configurer un environnement Vim initial à l'aide de ces plugins.
Ce playbook fonctionne sur le système Fedora Linux mais devrait fonctionner de la même manière avec d'autres distributions en apportant de petites modifications. Dans chacune des sections suivantes, nous discuterons des changements nécessaires pour le faire fonctionner sur d'autres systèmes.
Remarque :Ce playbook écrase un .vimrc
existant fichier de configuration, il est donc plus utile de configurer un nouveau système sur lequel Vim n'est pas encore configuré. Si vous avez un fichier de configuration Vim existant, sauvegardez-le avant d'exécuter ce playbook.
Pour exécuter ce playbook, vous devez installer Ansible. Dans Fedora, vous pouvez installer Ansible en utilisant dnf
, comme ceci :
$ sudo dnf install -y ansible
Pour plus de détails sur les options d'installation d'Ansible, consultez le Guide d'installation d'Ansible.
1. Démarrer le playbook
Créez votre fichier de playbook Ansible vim-config.yaml
et modifiez-le à l'aide de votre éditeur de texte préféré. Si vous débutez avec Ansible, consultez ce lien vers le playbook pour en savoir plus.
$ vi vim-config.yaml
[ Vous pourriez également aimer : Une introduction à l'éditeur vi ]
Maintenant, commencez la définition de votre playbook en fournissant un nom et la liste des hôtes cibles. Dans ce cas, nous ciblerons uniquement le localhost
pour configurer Vim localement.
- nom :Config Vim avec les hôtes des plug-ins :localhost
Ensuite, définissez le gather_facts :oui
possibilité de collecter des informations sur votre système. Vous en aurez besoin pour accéder aux variables d'environnement à l'étape suivante :
rassemble_facts :oui
Enfin, définissez l'option globale become :no
pour indiquer qu'en général, ces tâches ne nécessitent pas d'élévation de privilèges. Nous définirons localement l'élévation des privilèges pour les tâches individuelles qui en ont besoin, telles que l'installation de packages système.
devient :non
Ensuite, définissez quelques variables utiles.
2. Définition des variables
La configuration des plugins Vim et Vim nécessite l'ajout de contenu au $HOME/.vim
répertoire et au $HOME/.vimrc
fichier de configuration. Pour nous assurer que nous utilisons ces valeurs de manière cohérente et éviter de les retaper plusieurs fois, définissons deux variables pour stocker leurs valeurs :
vars : vim_dir :"{{ ansible_env.HOME }}/.vim" vimrc :"{{ ansible_env.HOME }}/.vimrc"
Notez que nous utilisons le ansible_env.HOME
variable de fait pour récupérer la valeur du $HOME
variables d'environnement. Pour plus d'informations sur l'obtention des variables d'environnement, consultez la documentation.
Commençons maintenant à définir les tâches exécutées par le playbook.
3. Installation des packages requis
La prochaine étape de la création d'un playbook consiste à définir les tâches que le playbook exécutera. Commencez par fournir les tâches :
Paramètre de playbook :
tâches :
Comme la première tâche consiste à installer les packages système requis par certains des plug-ins Vim, nous les installerons plus tard. Utilisez le module package pour les installer et fournissez le paramètre become :yes
pour activer l'élévation des privilèges, qui est nécessaire pour installer les packages système :
- nom :Installer les packages requis package : nom : - vim-enhanced - git - powerline-fonts - fzf état :installé devenir :oui
Le paquet
module fonctionne sur différentes distributions, mais les noms de packages sont différents. Ces valeurs sont valides pour Fedora 32. Si vous exécutez ce playbook dans une distribution différente, modifiez les noms des packages en fonction des exigences de votre distribution.
Ensuite, créez le .vim
structure de répertoire.
4. Création de répertoires
Utilisez le module file avec le paramètre state:directory
pour créer les répertoires requis. Puisqu'il y a trois répertoires, exécutez ce module en boucle pour tous les créer en une seule tâche :
- nom :Assurez-vous que le répertoire .vim/{autoload,bundle} existe fichier : chemin :"{{ élément }}" état :répertoire recurse :non mode :0750 boucle : - "{{ vim_dir }}" - "{{ vim_dir }}/autoload" - "{{ vim_dir }}/bundle"
Notez que nous utilisons le vim_dir
variable que nous avons définie précédemment pour représenter le .vim
annuaire. Nous utilisons la syntaxe Jinja2 {{ vim_dir }}
.
Maintenant que les répertoires sont en place, vous devez télécharger Pathogen.
5. Téléchargement du pathogène
Pour cet exemple, utilisons Vim-Pathogen comme gestionnaire de plug-ins Vim. Pour l'installer à l'aide d'Ansible, appliquez le module get_url pour télécharger le fichier du plugin directement dans son répertoire de destination :
Ensuite, déployez les plugins requis.
6. Déployer des plugins depuis Git
Une fois Pathogen installé, utilisons le module git pour déployer les plugins requis en clonant leur référentiel GitHub dans le répertoire de destination. Semblable à la création de répertoires, utilisez une boucle pour cloner tous les dépôts avec une seule tâche :
- nom :Deploy plugins git : dest :"{{ vim_dir }}/bundle/{{ item.name }}" repo :"{{ item.url }}" 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 - nom :vim-gitgutter URL :https://github.com/airblade/vim-gitgutter - nom :vim-fugitive URL :https://github. com/tpope/vim-fugitive - nom :vim-floaterm URL :https://github.com/voldikss/vim-floaterm
Notez que nous utilisons une liste de dictionnaires comme entrée pour la boucle et utilisons leurs valeurs avec la syntaxe {{ item.KEY }}
si nécessaire comme entrée pour les paramètres du module.
Ensuite, copiez un fichier de configuration de base pour Vim.
7. Copie du fichier de configuration initial
Comme tâche finale, utilisez le module de copie pour copier un fichier de configuration de base pour Vim. Commencez par créer le fichier de configuration dans un sous-répertoire files
:
$ mkdir files$ vim files/vimrcexecute pathogen#infect()syntax onfiletype plugin indent oncolo darkblue" Configuration vim Airlineset laststatus=2let g:airline#extensions#tabline#enabled=1let g:airline_powerline_fonts=1" Configuration NERDTreemap :NERDTreeToggle" Configuration floatermlet g:floaterm_keymap_toggle =''let g:floaterm_width =0.9let g:floaterm_height =0.9" Configuration Vim.FZFlet g:fzf_preview_window ='right:50%'let g :fzf_layout ={ 'fenêtre' :{ 'largeur' :0,9, 'hauteur' :0,6 } }
Ensuite, utilisez le copier
module pour copier le fichier vers la destination cible :
Notez que vous n'avez pas besoin de spécifier le répertoire files
dans le src
chemin. Par défaut, Ansible recherche les fichiers à copier dans ce sous-répertoire.
Enfin, exécutez le playbook.
8. Tout mettre ensemble
Votre playbook est terminé. Pour référence, voici le playbook complet :
- nom :Config Vim avec les plugins hôtes :localhost rassemble_facts :oui devient :non vars : vim_dir :"{{ ansible_env.HOME }}/.vim" vimrc :"{{ ansible_env.HOME }}/. vimrc" tâches : - nom :Installer les packages requis package : nom : - vim-enhanced - git - powerline-fonts - fzf état :installé devenir :oui tags : file : path :"{{ item }}" state:directory recurse:no mode:0750 loop: - "{{ vim_dir }}" - "{{ vim_dir }}/autoload" - "{{ vim_dir" }}/bundle - nom :Assurez-vous que Pathogen est en place get_url : dest :"{{ vim_dir }}/autoload/pathogen.vim" url :https://tpo.pe/pathogen.vim - name :Deploy plugins git : dest :"{{ vim_dir }}/bundle/{{ item.name }}" dépôt :"{{ item.url }}" clone :oui mise à jour :oui récursif :non loo p : - nom :vim-airline URL :https://github.com/vim-airline/vim-airline - nom :nerdtree URL :https://github.com/preservim/nerdtree - nom :fzf-vim URL :https://github.com/junegunn/fzf.vim - nom :vim-gitgutter URL :https://github.com/airblade/vim-gitgutter - nom :vim-fugitive URL :https://github.com/ :oui mode :0640
Maintenant, enregistrez votre fichier, puis fermez l'éditeur de texte.
Exécutez le playbook en utilisant le ansible-playbook
commande et le nom du playbook. Étant donné que ce playbook cible le localhost
seulement, un inventaire n'est pas strictement exigé. Vous pouvez toujours en créer un. De plus, comme l'une des tâches nécessite une élévation de privilèges, fournissez le paramètre -K
pour taper votre sudo
mot de passe, permettant à Ansible d'exécuter ces tâches.
Remarque :Sauvegardez un .vimrc
existant fichier de configuration avant d'exécuter ce playbook.
$ ansible-playbook -K vim-config.yamlBECOME password : PLAY [Config Vim with plugins] ************************ *************TACHE [Recueillir des faits] ******************************** *************ok :[localhost]TASK [Installer les packages requis] ************************** *********modifié :[localhost]TASK [Assurez-vous que le répertoire .vim/{autoload,bundle} existe] ************** modifié :[localhost] => ( item=/home/ricardo/.vim) modifié :[localhost] => (item=/home/ricardo/.vim/autoload) modifié :[localhost] => (item=/home/ricardo/.vim/bundle) TASK [Assurez-vous que le pathogène est en place] *********************************modifié :[localhost]TASK [Déployer les plugins ] ********************************************** modifié:[ localhost] => (item={'name':'vim-airline', 'url':'https://github.com/vim-airline/vim-airline'}) modifié :[localhost] => (item ={'name' :'nerdtree', 'url' :'https://github.com/preservim/nerdtree'}) modifié :[localhost] => (item={'name' :'fzf-vim', 'URL' :'https://github.com/junegunn/fzf.vim'}) modifié :[localhost] => (item={'name' :'vim-gitgutter', 'url' :'https://github.c modifié :[localhost] => (item={'name' :'vim -fugitive', 'url' :'https://github.com/tpope/vim-fugitive'}) modifié :[localhost] => (item={'name' :'vim-floaterm', 'url' :'https://github.com/voldikss/vim-floaterm'})TASK [Assurez-vous que la configuration .vimrc est en place] ************************ *******modifié :[localhost] PLAY RECAP ************************************ *********************localhost :ok=5 changed=5 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Vous pouvez maintenant tester votre nouvelle configuration Vim en exécutant vim
:
[ Besoin d'en savoir plus sur Ansible ? Suivez un cours de présentation technique gratuit de Red Hat. Ansible Essentials :Présentation technique de la simplicité dans l'automatisation. ]
Quelle est la prochaine ?
Vous avez créé un playbook pour automatiser le déploiement d'une configuration de base de Vim avec six plugins utiles pour les administrateurs système. Si vous souhaitez utiliser le même playbook pour déployer des plugins supplémentaires, ajoutez-les à la liste des boucles dans Déployer des plugins
Tâches. Ajoutez également tous les packages système requis au Installer les packages requis
tâches.
À l'aide de ce playbook, vous pouvez rapidement déployer et mettre à jour votre configuration Vim en utilisant les principes de l'infrastructure en tant que code.
Pour plus d'informations sur Ansible, consultez sa documentation officielle.