Ansible : typo, syntax…
This commit is contained in:
parent
821b738a25
commit
da03cf427b
|
@ -52,7 +52,7 @@ Exemples d'utilisation basique :
|
||||||
~~~
|
~~~
|
||||||
$ ansible localhost -m ping
|
$ ansible localhost -m ping
|
||||||
localhost | SUCCESS => {
|
localhost | SUCCESS => {
|
||||||
"changed": false,
|
"changed": false,
|
||||||
"ping": "pong"
|
"ping": "pong"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -135,7 +135,7 @@ Voici quelques exemples de modules que nous utilisons :
|
||||||
regexp: "^IS_APTICRON="
|
regexp: "^IS_APTICRON="
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
*Note:* _replace_ vs _lineinfile_ ? Le fonctionnement exacte de _replace_ et de _lineinfile_ peut être déroutant. Voici quelques constatations :
|
*Note:* _replace_ vs _lineinfile_ ? Le fonctionnement exact de _replace_ et de _lineinfile_ peut être déroutant. Voici quelques constatations :
|
||||||
|
|
||||||
* avec _lineinfile_, si l'argument _regexp_ n'est pas matché… il insère quand même la ligne ! _regexp_ n'est pas une condition pour l'insertion mais pour remplacer au lieu d'insérer !
|
* avec _lineinfile_, si l'argument _regexp_ n'est pas matché… il insère quand même la ligne ! _regexp_ n'est pas une condition pour l'insertion mais pour remplacer au lieu d'insérer !
|
||||||
* avec _lineinfile_, sauf cas tordus, l'argument _regexp_ doit matcher l'argument _line_ (sinon il va insérer la valeur de _line_ à chaque exécution !)
|
* avec _lineinfile_, sauf cas tordus, l'argument _regexp_ doit matcher l'argument _line_ (sinon il va insérer la valeur de _line_ à chaque exécution !)
|
||||||
|
@ -194,9 +194,9 @@ Voici quelques exemples de modules que nous utilisons :
|
||||||
state: latest
|
state: latest
|
||||||
update_cache: yes
|
update_cache: yes
|
||||||
cache_valid_time: 3600
|
cache_valid_time: 3600
|
||||||
with_items:
|
with_items:
|
||||||
- vim
|
- vim
|
||||||
- htop
|
- htop
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
* Module [apt_repository](http://docs.ansible.com/ansible/apt_repository_module.html) :
|
* Module [apt_repository](http://docs.ansible.com/ansible/apt_repository_module.html) :
|
||||||
|
@ -257,13 +257,13 @@ Pour avoir plus d'infos sur un module :
|
||||||
(…)
|
(…)
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
> *Note* : c'est pratique pour avoir la documentation exacte pour votre version d'Ansible. En effet, celle du site corespond à la dernière version et n'indique pas toujours toutes les différences.
|
> *Note* : c'est pratique pour avoir la documentation exacte pour votre version d'Ansible. En effet, celle du site correspond à la dernière version et n'indique pas toujours toutes les différences.
|
||||||
|
|
||||||
### playbook
|
### playbook
|
||||||
|
|
||||||
<http://docs.ansible.com/ansible/playbooks.html>
|
<http://docs.ansible.com/ansible/playbooks.html>
|
||||||
|
|
||||||
Un playbook va ensuite dérouler des _actions_ qui seront organisées en _tasks_, [roles](#roles) et [handlers](#handlers).
|
Un playbook va ensuite dérouler des actions qui seront organisées en _tasks_, [roles](#roles) et [handlers](#handlers).
|
||||||
|
|
||||||
Exemple de playbook simple :
|
Exemple de playbook simple :
|
||||||
|
|
||||||
|
@ -320,7 +320,7 @@ On lance des playbooks ainsi :
|
||||||
~~~
|
~~~
|
||||||
$ ansible-playbook PLAYBOOK.yml --limit HOSTNAME --forks 1
|
$ ansible-playbook PLAYBOOK.yml --limit HOSTNAME --forks 1
|
||||||
|
|
||||||
$ ansible-playbook PLAYBOOK_WITH-SUDO.yml --limit HOSTNAME --ask-become-pass
|
$ ansible-playbook PLAYBOOK_WITH_SUDO.yml --limit HOSTNAME --ask-become-pass
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
Options utiles pour [ansible-playbook](https://manpages.debian.org/cgi-bin/man.cgi?query=ansible-playbook&apropos=0&sektion=0&manpath=Debian+unstable+sid&format=html&locale=en) :
|
Options utiles pour [ansible-playbook](https://manpages.debian.org/cgi-bin/man.cgi?query=ansible-playbook&apropos=0&sektion=0&manpath=Debian+unstable+sid&format=html&locale=en) :
|
||||||
|
@ -333,7 +333,7 @@ Options utiles pour [ansible-playbook](https://manpages.debian.org/cgi-bin/man.c
|
||||||
|
|
||||||
#### Limiter l'exécution à certaines machines
|
#### Limiter l'exécution à certaines machines
|
||||||
|
|
||||||
Quelques exemples d'utilisation de l'option `--limit` (ou l`) :
|
Quelques exemples d'utilisation de l'option `--limit` (ou `l`) :
|
||||||
|
|
||||||
* limiter aux groupes _www_ et _sql_ (qui peuvent être indifféremment des groupes ou des serveurs) :
|
* limiter aux groupes _www_ et _sql_ (qui peuvent être indifféremment des groupes ou des serveurs) :
|
||||||
|
|
||||||
|
@ -390,6 +390,8 @@ Dans des rôles longs, nous conseillons de purger les handlers de temps en temps
|
||||||
- meta: flush_handlers
|
- meta: flush_handlers
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
|
NB : n'importe quel module peut être utilisé comme handler.
|
||||||
|
|
||||||
### roles
|
### roles
|
||||||
|
|
||||||
<http://docs.ansible.com/ansible/playbooks_roles.html>
|
<http://docs.ansible.com/ansible/playbooks_roles.html>
|
||||||
|
@ -416,6 +418,8 @@ foo
|
||||||
└── main.yml
|
└── main.yml
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
|
Cette sutructure permet à Ansible de retrouver automatiquement les fichiers et de les rendre disponibles dans l'exécution du rôle.
|
||||||
|
|
||||||
À titre d'exemple, voici des rôles Ansible que nous utilisons : <https://forge.evolix.org/projects/ansible-roles/repository?rev=unstable>
|
À titre d'exemple, voici des rôles Ansible que nous utilisons : <https://forge.evolix.org/projects/ansible-roles/repository?rev=unstable>
|
||||||
|
|
||||||
### inventory
|
### inventory
|
||||||
|
@ -424,7 +428,7 @@ foo
|
||||||
|
|
||||||
La partie **inventory** correspond à la description de l'inventaire des serveurs à configurer et inclus un mécanisme de configuration individuelle et par groupe.
|
La partie **inventory** correspond à la description de l'inventaire des serveurs à configurer et inclus un mécanisme de configuration individuelle et par groupe.
|
||||||
|
|
||||||
Permet d'indiquer la liste des machines concernées par Ansible (peut être limité lors de l'exécution de la commande par l'option `-l`) et de pouvoir les regrouper dans des groupes.
|
Il permet d'indiquer la liste des machines concernées par Ansible (peut être limité lors de l'exécution de la commande par l'option `-l`) et de pouvoir les ranger dans des groupes.
|
||||||
|
|
||||||
Exemple:
|
Exemple:
|
||||||
|
|
||||||
|
@ -502,16 +506,17 @@ Les variables peuvent être définies à de multiples niveaux, chacun ayant une
|
||||||
* task vars (only for the task)
|
* task vars (only for the task)
|
||||||
* extra vars (always win precedence)
|
* extra vars (always win precedence)
|
||||||
|
|
||||||
Pour gérer de nombreuses variables dans un projet, on peut stocker toutes celles qui correspondent à un groupe de serveur dans un fichier portant le nom du groupe, ainsi que toutes celle d'un serveur en particulier dans un fichier du nom du serveur. Voici l'arborescence conseillée :
|
Pour gérer de nombreuses variables dans un projet, on peut stocker toutes celles qui correspondent à un groupe de serveur dans un fichier portant le nom du groupe, ainsi que toutes celles d'un serveur en particulier dans un fichier du nom du serveur. Voici l'arborescence conseillée :
|
||||||
|
|
||||||
~~~
|
~~~
|
||||||
└── inventory
|
└── inventory
|
||||||
├── group_vars
|
├── hosts # fichier d'inventaire
|
||||||
│ └── group1.yml
|
├── group_vars # dossier regrouppant …
|
||||||
│ └── group2.yml
|
│ └── group1.yml # … les variables du groupe "group1"
|
||||||
└── host_vars
|
│ └── group2.yml # … les variables du groupe "group2"
|
||||||
└── hostname1.yml
|
└── host_vars # dossier regrouppant …
|
||||||
└── hostname2.yml
|
└── hostname1.yml # … les variables du serveur "hostname1"
|
||||||
|
└── hostname2.yml # … les variables du serveur "hostname2"
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
Les groupes sont définis dans le fichier d'[inventaire](http://docs.ansible.com/ansible/intro_inventory.html).
|
Les groupes sont définis dans le fichier d'[inventaire](http://docs.ansible.com/ansible/intro_inventory.html).
|
||||||
|
@ -535,7 +540,7 @@ On peut également utiliser les tags pour limiter/exclure des tâches :
|
||||||
$ ansible-playbook (…) --skip-tags "message"
|
$ ansible-playbook (…) --skip-tags "message"
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
On peut aussi n'éxecuter que certains tags :
|
On peut aussi n'exécuter que certains tags :
|
||||||
|
|
||||||
~~~
|
~~~
|
||||||
$ ansible-playbook (…) --tags "configuration,packages"
|
$ ansible-playbook (…) --tags "configuration,packages"
|
||||||
|
@ -545,8 +550,8 @@ $ ansible-playbook (…) --tags "configuration,packages"
|
||||||
|
|
||||||
### Register
|
### Register
|
||||||
|
|
||||||
`register` est un attribut d'action que l'on peut rajouter pour tout type de tâche et qui initialisera la variable (par le nom donné) avec les valeurs retour du module.
|
`register` est un attribut d'action que l'on peut rajouter pour tout type de tâche et qui initialisera la variable (par le nom donné) avec les valeurs retournées par le module.
|
||||||
Pour `shell`, on a le droit à `.stdout`, `.stderr`, `.rc`… Mais cela dépend bien des valeurs de retour du module.
|
Pour `shell`, on a le droit à `.stdout`, `.stderr`, `.rc`… mais cela dépend des valeurs de retour du module.
|
||||||
|
|
||||||
Il est possible de consulter le contenu détaillé de la variable avec `debug` :
|
Il est possible de consulter le contenu détaillé de la variable avec `debug` :
|
||||||
|
|
||||||
|
@ -786,7 +791,7 @@ C'est beaucoup plus simple et rapide que de tester le fichier par le module `sta
|
||||||
|
|
||||||
<https://docs.ansible.com/ansible/playbooks_delegation.html#delegation>
|
<https://docs.ansible.com/ansible/playbooks_delegation.html#delegation>
|
||||||
|
|
||||||
~~~
|
~~~{.yaml}
|
||||||
- name: /etc/hosts
|
- name: /etc/hosts
|
||||||
command: cat /etc/hosts
|
command: cat /etc/hosts
|
||||||
register: tmp
|
register: tmp
|
||||||
|
@ -802,7 +807,7 @@ Pour une exécution locale, on peut aussi utiliser l'attribut `local_action`.
|
||||||
|
|
||||||
<https://docs.ansible.com/ansible/playbooks_delegation.html#run-once>
|
<https://docs.ansible.com/ansible/playbooks_delegation.html#run-once>
|
||||||
|
|
||||||
~~~
|
~~~{.yaml}
|
||||||
- name: Début installation, envoie email
|
- name: Début installation, envoie email
|
||||||
run_once: true
|
run_once: true
|
||||||
(…)
|
(…)
|
||||||
|
@ -831,15 +836,15 @@ Par exemple pour l'installation de plusieurs nouveaux paquets :
|
||||||
- hosts: localhost
|
- hosts: localhost
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
- apt:
|
- apt:
|
||||||
name: '{{ item }}'
|
name: '{{ item }}'
|
||||||
state: present
|
state: present
|
||||||
with_items:
|
with_items:
|
||||||
- cmatrix
|
- cmatrix
|
||||||
- tetrinet-server
|
- tetrinet-server
|
||||||
- tetrinet-client
|
- tetrinet-client
|
||||||
- xtel
|
- xtel
|
||||||
- xtell
|
- xtell
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
Même si il y aura plusieurs paquets installés, cela ne comptera que pour *un* changement (`changed=1`).
|
Même si il y aura plusieurs paquets installés, cela ne comptera que pour *un* changement (`changed=1`).
|
||||||
|
@ -849,7 +854,7 @@ Cette tâche appellera un par un les éléments de la liste (présents dans `wit
|
||||||
|
|
||||||
Pour croiser les éléments des items :
|
Pour croiser les éléments des items :
|
||||||
|
|
||||||
~~~
|
~~~{.yaml}
|
||||||
tasks:
|
tasks:
|
||||||
- include: "./ajout_utilisateur_sur_machine.yml"
|
- include: "./ajout_utilisateur_sur_machine.yml"
|
||||||
vars:
|
vars:
|
||||||
|
@ -866,7 +871,7 @@ Cela a pour effet d'exécuter l'inclusion pour `alice` pour chacune des 3 machin
|
||||||
|
|
||||||
Avec hash :
|
Avec hash :
|
||||||
|
|
||||||
~~~
|
~~~{.yaml}
|
||||||
users:
|
users:
|
||||||
bob:
|
bob:
|
||||||
name: Bob
|
name: Bob
|
||||||
|
@ -924,14 +929,14 @@ Pour des modules comme `shell`, `command`… Ansible ne peut savoir si un change
|
||||||
|
|
||||||
Il est possible de forcer le statut du changement :
|
Il est possible de forcer le statut du changement :
|
||||||
|
|
||||||
~~~
|
~~~{.yaml}
|
||||||
- command: date
|
- command: date
|
||||||
changed_when: False
|
changed_when: False
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
Ou donner une condition
|
Ou donner une condition
|
||||||
|
|
||||||
~~~
|
~~~{.yaml}
|
||||||
- shell: cat > {{ fichier }} < /dev/null
|
- shell: cat > {{ fichier }} < /dev/null
|
||||||
changed_when: {{ fichier.stats.exist }}
|
changed_when: {{ fichier.stats.exist }}
|
||||||
~~~
|
~~~
|
||||||
|
|
Loading…
Reference in New Issue