Le développeur opérationnel ou l’administrateur système ayant besoin d’utiliser cet outil doit initialiser son environnement d’utilisation.

Il y a plusieurs modes d’installation :

  • Avec la machine Vagrant fournie, quelque soit le système d’origine ;
  • Avec Debian GNU/Linux, sur Windows 10 ;
  • Avec le système local sous Linux ;

Il est nécessaire que soit :

  • L’utilisateur possède déjà l’accès à l’ensemble des serveurs avec sa clé privée SSH ;
  • Un autre utilisateur ayant déjà l’accès est disponible pour lui installer les autorisations ;

Initialisation commune

Dans un premier temps, cloner le dépôt : git clone git@gitlab.mon-oncle.fr:system/ansible-deployment/base.git

Le fichier de clé de chiffrement pour les fichiers protégés (variables de mot de passe de clé privée, par exemple) doit être récupéré. Il est disponible sur Sharepoint. Le fichier se nomme .vault_pass. Il peut dans un premier temps être téléchargé à la racine du projet.

Initialisation avec Vagrant

Initialisation avec Debian GNU/Linux on Windows

Dans la suite, soit votre utilisateur Windows myuser et le chemin relatif du dossier de ce projet project_path, supposé sous votre dossier de profil.

  1. Initialiser l’environnement Debian GNU/Linux, bullseye minimum, si ce n’est pas déjà fait ;
  2. Copier le fichier .vault_pass dans votre dossier d’accueil de l’environnement ;
    cp /mnt/c/Users/myuser/project_path/.vault_pass ~/
    chmod -x ~/.vault_pass
    
  3. Créer un lien symbolique vers le projet de déployment dans le dossier d’accueil de votre utilisateur :
    ln -s /mnt/c/Users/myuser/project_path/ansible ~/ansible_root
    
  4. Exécuter bash /mnt/c/Users/myuser/project_path/build/provision-debian.sh
  5. Exécuter ssh-keygen -b 4096 -C "${USER}@$(hostname)-deployment" -q -t rsa -f ~/.ssh/id_rsa_ansible -N ""
    Ou ecdsa.
  6. Éditer ~/.ansible.cfg et le remplir avec, en substituant les valeurs :
    [defaults]
    interpreter_python=auto
    library=/mnt/c/Users/myuser/project_path/ansible/library
    gathering=smart
    roles_path=/mnt/c/Users/myuser/project_path/ansible/roles:~/.ansible/roles
    action_plugins     = /mnt/c/Users/myuser/project_path/ansible/action_plugins:/usr/share/ansible/plugins/action
    #become_plugins     = /usr/share/ansible/plugins/become
    #cache_plugins      = /usr/share/ansible/plugins/cache
    #callback_plugins   = /usr/share/ansible/plugins/callback
    #connection_plugins = /usr/share/ansible/plugins/connection
    lookup_plugins     = /mnt/c/Users/myuser/project_path/ansible/lookup_plugins:/usr/share/ansible/plugins/lookup
    inventory_plugins  = /mnt/c/Users/myuser/project_path/ansible/inventory_plugins:/usr/share/ansible/plugins/inventory
    vars_plugins       = /mnt/c/Users/myuser/project_path/ansible/vars_plugins:/usr/share/ansible/plugins/vars
    filter_plugins     = /mnt/c/Users/myuser/project_path/ansible/filter_plugins:/usr/share/ansible/plugins/filter
    #test_plugins       = /usr/share/ansible/plugins/test
    #terminal_plugins   = /usr/share/ansible/plugins/terminal
    #strategy_plugins   = /usr/share/ansible/plugins/strategy
    
    private_key_file = ~/.ssh/id_rsa_ansible
    vault_password_file = ~/.vault_pass
    
    force_color=1
    retry_files_enabled=False
    yaml_valid_extensions = .yml, .yaml, .json, .vault
    vars_plugins_enabled = custom_host_group_vars
    
    [inventory]
    enable_plugins = yaml, schroot
    
  7. L’utilisateur possède déjà un accès aux machines avec sa clé privée :
    1. Si ce n’est pas déjà le cas, lancer un agent ssh comme ssh-agent et y ajouter sa clé privée avec ssh-add ;
    2. Exécuter les commandes :
      ansible-playbook ansible_root/init-publickey.yaml -i …/inventory -l all:\!chroot -f 1
      
      Il peut y avoir des problèmes de connexion à certains hôtes en raison de l’absence de l’établissement des connexions VPN requises. Il sera toujours possible de refaire les commandes pour les nouvelles machines.
  8. L’utilisateur ne possède pas d’accès aux machines avec sa clé privée :
    1. Exécuter la commande cat .ssh/id_rsa_ansible.pub
    2. Transmettre le résultat à une personne ayant l’accès, et se référer à Comment ajouter une clé publique aux autorisations

Initialisation avec le système local Linux

Dans la suite, soit le chemin du dossier de ce projet project_path. Le système est supposé être Debian/Bullseye ou ultérieur. Dans le cas contraire, l’exécution de provision-debian.sh doit être ajustée et exécutée à la main.

Votre utilisateur doit être dans les sudoers et sudo installé.

  1. Copier le fichier .vault_pass dans votre dossier d’accueil de l’environnement ;
    cp project_path/.vault_pass ~/
    chmod -x ~/.vault_pass
    
  2. Exécuter bash project_path/build/provision-debian.sh
    Utiliser provision-ubuntu.sh sous Ubuntu.
  3. Exécuter ssh-keygen -b 4096 -C "${USER}@$(hostname)-deployment" -q -t rsa -f ~/.ssh/id_rsa_ansible -N ""
    Ou ecdsa.
  4. Éditer ~/.ansible.cfg et le remplir avec, en substituant les valeurs :
    [defaults]
    interpreter_python=auto
    library=project_path/ansible/library
    gathering=smart
    roles_path=project_path/ansible/roles:~/.ansible/roles
    action_plugins     = project_path/ansible/action_plugins:/usr/share/ansible/plugins/action
    #become_plugins     = /usr/share/ansible/plugins/become
    #cache_plugins      = /usr/share/ansible/plugins/cache
    #callback_plugins   = /usr/share/ansible/plugins/callback
    #connection_plugins = /usr/share/ansible/plugins/connection
    lookup_plugins     = project_path/ansible/lookup_plugins:/usr/share/ansible/plugins/lookup
    inventory_plugins  = project_path/ansible/inventory_plugins:/usr/share/ansible/plugins/inventory
    vars_plugins       = project_path/ansible/vars_plugins:/usr/share/ansible/plugins/vars
    filter_plugins     = project_path/ansible/filter_plugins:/usr/share/ansible/plugins/filter
    #test_plugins       = /usr/share/ansible/plugins/test
    #terminal_plugins   = /usr/share/ansible/plugins/terminal
    #strategy_plugins   = /usr/share/ansible/plugins/strategy
    
    private_key_file = ~/.ssh/id_rsa_ansible
    vault_password_file = ~/.vault_pass
    
    force_color=1
    retry_files_enabled=False
    yaml_valid_extensions = .yml, .yaml, .json, .vault
    vars_plugins_enabled = custom_host_group_vars
    
    [inventory]
    enable_plugins = yaml, schroot
    
  5. L’utilisateur possède déjà un accès aux machines avec sa clé privée :
    1. Si ce n’est pas déjà le cas, lancer un agent ssh comme ssh-agent et y ajouter sa clé privée avec ssh-add ;
    2. Exécuter les commandes :
      ansible-playbook project_path/ansible/init-publickey.yaml -i …/inventory -l all:\!chroot -f 1
      
      Il peut y avoir des problèmes de connexion à certains hôtes en raison de l’absence de l’établissement des connexions VPN requises. Il sera toujours possible de refaire les commandes pour les nouvelles machines.
  6. L’utilisateur ne possède pas d’accès aux machines avec sa clé privée :
    1. Exécuter la commande cat .ssh/id_rsa_ansible.pub
    2. Transmettre le résultat à une personne ayant l’accès, et se référer à Comment ajouter une clé publique aux autorisations