Configuration du serveur Ansible
Une fois Ansible core installé et les machines cible préparés, on peut passer à la configuration générale d’Ansible et la création de l’arborescence.
Création des répertoires
mkdir -p ~/ansible/{production,test}/inventory/{group_vars,host_vars} mkdir -p ~/ansible/{produdction,test}/roles |
Création des fichiers
touch ~/ansible/{production,test}/playbook.yml touch ~/ansible/{production,test}/inventory/00-inventory.yml |
Création de l’inventaire, contenant les machines cible.
vim ~/ansible/test/inventory/00-inventory.yml |
Contenu du fichier inventory
all:
children:
debian:
hosts:
cible1:
cible2:
redhat:
hosts:
cible3:
Je vais utiliser le module ansible-galaxy, pour créer l’arborescence Ansible, ce qui créera tous les fichiers nécessaires.
ansible-galaxy init ~/ansible/test/roles/upgrade |
ansible-galaxy init ~/ansible/test/roles/installer_paquets |
Je vais simplifier l’arborescence et supprimer les fichiers qui ne sont pas indispensables
rm -rf ~/ansible/test/roles/*/{files,handlers,meta,templates,tests} |
Création d’une tache, pour la mise à jour des paquets
vim ~/ansible/test/roles/upgrade/tasks/main.yml |
Contenu du fichier
tasks:
- name: Mettre à jour la liste des paquets (apt ou yum)
package:
update_cache: yes
when: ansible_facts['os_family'] == "Debian" or ansible_facts['os_family'] == "RedHat"
- name: Appliquer les mises à jour des paquets
package:
name: "*"
state: latest
when: ansible_facts['os_family'] == "Debian" or ansible_facts['os_family'] == "RedHat"
Création d’une tache, pour installer des paquets
tasks:
- name: Installer les paquets sur Debian/Ubuntu
package:
name: "{{ packages_list }}"
state: present
Création du groupe de variables, c’est dans ce fichier que je vais déclarer la variable packages_list
mkdir ~/ansible/test/inventory/group_vars/all vim ~/ansible/test/inventory/group_vars/all/main.yml |
Contenu du fichier
packages_list: "git,curl,wget,htop,tree" |