system_administration:automation:using_ansible

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
system_administration:automation:using_ansible [2023/08/12 19:04] – external edit 127.0.0.1system_administration:automation:using_ansible [2023/08/13 13:48] (current) – [Déployer le script de vérification d'accès SSH] aziz
Line 1: Line 1:
 +{{tag>Ansible}}
 ====== Configuration des serveurs avec Ansible ====== ====== Configuration des serveurs avec Ansible ======
  
-Ansible permet de réaliser des déploiements logiciel et de configurations sur un ou plusieurs serveurs simultanément.+[[https://www.ansible.com/|Ansible]] permet de réaliser des déploiements logiciels et de configurations sur un ou plusieurs serveurs simultanément
 + 
 +Le dépôt https://git.elosys.net/sys/playbook.git contient quelques recettes (playbooks) utiles que nous allons détailler ci-dessous. 
 + 
 +<code> 
 +playbook$ tree -L 1 -F --dirsfirst 
 +
 +├── files/ 
 +├── waiting_validation/ 
 +├── ansible.cfg 
 +├── AuthorizedKeysCommand.yml 
 +├── inventory 
 +├── InventoryToSshConfig.yml 
 +├── README 
 +├── UpdateBin.yml 
 +└── UpdateDotfiles.yml 
 + 
 + 
 +2 directories, 7 files 
 +</code> 
 + 
 + 
 +===== Le fichier d'inventaire ===== 
 +Le fichier ''inventory'' est central car il répertorie tous les serveurs de la flotte. 
 + 
 +Extrait : 
 + 
 +<file> 
 +########## 
 +#  PROD  # 
 +########## 
 +[prodgroup] 
 +prod               ansible_user=admin    ansible_host=sd-135347.dedibox.fr            ansible_port=22    url=sd-135347.dedibox.fr:8006      # WAN 195.154.29.195 
 +igpro              ansible_user=odoo     ansible_host=erp.elosys.net                  ansible_port=9100  url=erp.elosys.net                 # LAN 100/24 prod:9100 
 +officina           ansible_user=sysadm   ansible_host=erp.officina-international.com  ansible_port=9102  url=erp.officina-international.com # LAN 102/24 prod:9102 
 +elosys.net         ansible_user=sysadm   ansible_host=elosys.net                      ansible_port=9103  url=elosys.net                     # LAN 103/24 prod:9103 
 +bastion            ansible_user=sysadm   ansible_host=sd-135347.dedibox.fr  ansible_port=9120  url=sd-135347.dedibox.fr           # LAN 120/24 prod:9120 
 + 
 +############# 
 +# NEW SDDEV # 
 +############# 
 +[sddevgroup] 
 +sddev             ansible_user=sysadm        ansible_host=sd-117772.dedibox.fr    ansible_port=22    url=sd-117772.dedibox.fr:8006 
 +dockerservice     ansible_user=dockerservice ansible_host=sd-117772.dedibox.fr    ansible_port=9022 
 +backup            ansible_user=sysadm        ansible_host=sd-117772.dedibox.fr    ansible_port=9023 
 +</file> 
 + 
 +Le fichier ''inventory'' contient : 
 +  * les détails de connexion qu'utilisera Ansible pour se connecter aux serveurs 
 +  * peut contenir quelques variables qui seront utilisées dans les playbooks (les fichiers de recettes) 
 + 
 +Le nom du fichier d'inventaire est fixée dans le fichier de configuration ''ansible.cfg''
 + 
 +===== Installer Ansible ===== 
 +La suite de commandes suivantes installera Ansible dans votre espace personnel. ((Ce ne sera pas une installation système. Les autres utilisateurs du système n'auront pas à disposition les commandes Ansible)) 
 + 
 +<cli> 
 +$ python3 -m pip install --user ansible 
 +$ python3 -m pip install --user argcomplete 
 +$ activate-global-python-argcomplete --user 
 +</cli> 
 + 
 +===== Premier playbook InventoryToSshConfig.yml ===== 
 + 
 +En exécutant dans un terminal ((Cela suppose que vous avez au préalable correctement initialisé un dossier ''~/.ssh'' avec la commande ''ssh-keygen'' ou autre)) 
 + 
 +<cli> 
 +$ ansible-playbook InventoryToSshConfig.yml 
 +</cli> 
 + 
 +  * un fichier ''~/.ssh/config'' sera créé avec un contenu qui optimisera le travail avec ssh et Ansible 
 +  * si le fichier ''~/.ssh/config'' existait déjà il sera backupé sous ''~/.ssh/config_ansible_backup_YYYY-MM-DD_HH_mm_SS'' 
 +  * un dossier ''~/.ssh/config.d'' et un fichier ''~/.ssh/config.d/elosys_config'' seront créés 
 + 
 + 
 +En jouant cet Ansible playbook, pour chaque ligne de définition d'un serveur dans le fichier ''inventory'' une configuration de host sera créée dans le fichier ''~/.ssh/config.d/elosys_config''
 + 
 +Exemple : 
 +Pour la ligne suivante dans le fichier ''inventory''
 + 
 +<file> 
 +prod               ansible_user=admin    ansible_host=sd-135347.dedibox.fr            ansible_port=22    url=sd-135347.dedibox.fr:8006      # WAN 195.154.29.195 
 +</file> 
 + 
 +La configuration suivante sera créée dans le fichier  ''~/.ssh/config.d/elosys_config''
 + 
 +<code ini> 
 +# https://sd-135347.dedibox.fr:8006 
 +host prod 
 + hostname sd-135347.dedibox.fr 
 + user admin 
 + port 22 
 +</code> 
 + 
 +Vous disposerez ainsi de l'autocompletion sur les hosts de la flotte et il suffira donc de taper ''ssh prod'' pour se connecter à la machine prod. 
 + 
 +===== Déployer le script de vérification d'accès SSH ===== 
 +Comme expliqué sur [[services:ssh_configuration_for_proxmox_vm]] il est nécessaire de configurer les nouvelles machines pour qu'elles interrogent le serveur de clés publiques autorisées. 
 + 
 +Le playbook ''AuthorizedKeysCommand.yml'' permet d'automatiser les opérations décrites. 
 + 
 +Après avoir ajouté les informations de connection de la nouvelle machine dans le fichier ''inventory'', il suffit d'exécuter la commande suivante pour la configurer : 
 + 
 +<cli> 
 +$ ansible-playbook AuthorizedKeysCommand.yml --limit newmachine 
 +</cli> 
 + 
 +''--limit newmachine'' limite l'exécution du playbook à la machine ''newmachine''. Rien n'interdit d'exécuter le playbook sur l'ensemble des machines précisées dans la clé ''host'' du playbook. Si le playbook a déjà été exécuté sur une machine, réexécuter le playbook n'affectera pas la machine.
  
  • system_administration/automation/using_ansible.1691863477.txt.gz
  • Last modified: 2023/08/12 19:04
  • by 127.0.0.1