GNU/Linux >> Tutoriels Linux >  >> Linux

Comment utiliser Ansible pour configurer Vim

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.


Linux
  1. Comment configurer Vim comme éditeur par défaut sous Linux

  2. Comment j'utilise Ansible et anacron pour l'automatisation

  3. Comment installer et utiliser Ansible sur Debian 11

  4. Comment utiliser le type de fichier dans Vim ?

  5. Comment configurer docker pour utiliser le proxy

Comment utiliser les boucles dans Ansible Playbook

Comment utiliser le modèle Jinja2 dans Ansible Playbook

Comment utiliser les gestionnaires dans Ansible Playbook

Comment créer et utiliser des faits personnalisés dans Ansible

Comment utiliser Ansible pour configurer un proxy inverse

Comment utiliser Ansible pour envoyer un e-mail avec Gmail