Etape 2
Pour l'installation d'Ansible, se reporter à la documentation officielle.
Dans un répertoire dédié, créer un premier fichier (par exemple vms ou vms.ini ou vms.yml) qui contiendra toutes les machines cibles.
nano vms
Y ajouter :
# fichier inventaire vms
[vms]
192.168.10.50
192.168.10.51
192.168.10.84
192.168.10.85
192.168.10.86
# On peut aussi renseigner directement une plage: 192.168.10.[10:50]
Avant de commencer à créer des "playbooks" de déploiement (= le fichier d'une tâche d'automatisation que va exécuter Ansible), il est conseillé de vérifier que l'on arrive à joindre les VM. La documentation Ansible propose un premier playbook de test de connexion :
- name: My first play
hosts: vms
remote_user: ansible
become: true
tasks:
- name: Ping my hosts
ansible.builtin.ping:
- name: Print message
ansible.builtin.debug:
msg: Hello world
NB : s'il y a eu des connexions précédentes en ssh, penser à supprimer les entrées créées (fingerprints)
ssh-keygen -f "~/.ssh/known_hosts" -R "XX.XX.XX.XX"
---
- name: ajout user dans sshd_config
hosts: vms
remote_user: ansible # le compte qui va permettre l'accès ssh à toutes les machines
become: true # obtenir l'escalade de droits
tasks:
- name: hostname
command: hostname #on va se servir de cette commande pour récupérer sur chaque VM le nom d'utilisateur puisque c'est le même que le hostname (cf config de terraform)
register: hostname_output
changed_when: false
- name: Ajout hostname à sshd_config
lineinfile:
path: /etc/ssh/sshd_config
regexp: '^AllowUsers ansible '
insertafter: '^#AllowUsers ansible '
line: "AllowUsers "
state: present # = on veut que la modification soit présente (absent = suppression)
- name: Restart sshd service # redémarrer ssh
service:
name: sshd
state: restarted
ansible-playbook -i vms adduserssh.yml -kK
# ansible-playbook -i <fichier d'inventaire> <playbook> -kK = identification ssh + sudo
A présent chaque utilisateur peut se logger en ssh sur "sa" VM.
---
- name: Ajout Docker
hosts: vms
remote_user: ansible
gather_facts: true
become: true
tasks:
- name: Installer plusieurs outils
apt:
name: ['apt-transport-https', 'ca-certificates', 'curl', 'gnupg', 'lsb-release']
update_cache: yes
- name: Créer le répertoire pour les clés
file:
path: /etc/apt/keyrings
state: directory
mode: '0755'
- name: Télécharger la clé Docker GPG
get_url:
url: "https://download.docker.com/linux/debian/gpg"
dest: /etc/apt/keyrings/docker.asc
- name: Changer les permissions
shell: chmod a+r /etc/apt/keyrings/docker.asc
- name: Ajouter le dépôt Docker debian bookorm
apt_repository:
repo: deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian bookworm stable
state: present
- name: Apt update
apt:
update_cache: yes
- name: Installer Docker
apt:
name: [docker-ce, docker-ce-cli, containerd.io, docker-buildx-plugin, docker-compose-plugin]
state: present
- name: S'assurer que le service est démarré
service:
name: docker
state: started
enabled: yes