Ansible offre la possibilité de créer ce que l'on appelle des "playbooks", ce sont des documents qui contiennent une liste de tâches à effectuer et à appliquer sur une liste d'hôtes que vous allez fournir, dans un premier temps renseigner le fichier hosts puis créez le playbook !
Le fichier host s'appellera hosts.yml
---
all:
vars:
ansible_user: ilan
ansible_ssh_common_args: '-o StrictHostKeyChecking=no'
prod:
hosts:
ubuntu:
ansible_host: 192.168.10.5
vars:
ansible_password: ilan
env : production
Source for container creation here
Le fichier du playbook s'appellera deploy.yml
---
- name: "Apache installation using docker"
hosts: prod
become: true
tasks:
- name: Create Apache container
docker_container:
name: webapp
image: httpd
ports:
- "80:80"
Pour lancer le playbook renseignez la liste des hosts puis le fichier du playbook :
ansible-playbook -i hosts.yml deploy.yml
Le playbook est un fichier qui permet d'effectuer énormement de tâches différentes, parmis celle-ci on retrouve la "loop" qui est tout simplement une boucle, on peut voir ci-dessous que j'ai ajouté une loop pour l'installation de package
---
- name: "Apache installation using docker"
hosts: prod
become: true
pre_tasks:
- name: Install some package
#"item" ici est la variable sur laquelle le yml va loop
package: name='{{ item }}' state=present
when: ansible_distribution == "CentOS"
# Ici on précise la liste des éléments sur lesquels le yml va loop
# Il va donc installer epel-release, wget et git comme package sur mon OS CentOS
loop:
- epel-release
- wget
- git
tasks:
- name: Create Apache container
docker_container:
name: webapp
image: httpd
ports:
- "80:80"