Tools/Ansible/Use Cases : Différence entre versions
Sauter à la navigation
Sauter à la recherche
| Ligne 36 : | Ligne 36 : | ||
become: true | become: true | ||
when: ansible_os_family == 'RedHat' | when: ansible_os_family == 'RedHat' | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | |||
| + | Il peut être avantageusement factorisé en 3 tâches distinctes de la façon suivante : | ||
| + | |||
| + | |||
| + | <syntaxhighlight lang="yaml"> | ||
| + | --- | ||
| + | # ./roles/redis/tasks/setup-Debian.yml | ||
| + | |||
| + | - name: install redis on Debian based distros | ||
| + | apt: | ||
| + | name: redis-server | ||
| + | state: present | ||
| + | update_cache: true | ||
| + | become: true | ||
| + | when: ansible_os_family == 'Debian' | ||
| + | |||
| + | |||
| + | |||
| + | </syntaxhighlight> | ||
| + | |||
| + | <syntaxhighlight lang="yaml"> | ||
| + | --- | ||
| + | # ./roles/redis/tasks/setup-RedHat.yml | ||
| + | |||
| + | - name: ensure epel-release repo is installed on RHEL based distros | ||
| + | yum: | ||
| + | name: epel-release | ||
| + | state: present | ||
| + | update_cache: true | ||
| + | become: true | ||
| + | when: ansible_os_family == 'RedHat' | ||
| + | |||
| + | - name: install redis on RHEL based distros | ||
| + | yum: | ||
| + | name: redis | ||
| + | state: present | ||
| + | update_cache: true | ||
| + | become: true | ||
| + | when: ansible_os_family == 'RedHat' | ||
| + | |||
| + | </syntaxhighlight> | ||
| + | |||
| + | |||
| + | <syntaxhighlight lang="yaml"> | ||
| + | # ./roles/redis/tasks/main.yml | ||
| + | |||
| + | - include_tasks: "setup-{{ ansible_os_family }}.yml" | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Version du 7 mai 2020 à 12:33
Inclure des "tasks" à partir de fichier dynamiques
L'inclusion de tâches avec un nom de fichier dynamique est le plus souvent utilisée pour faire varier les tâches en fonction du système d'exploitation de l'hôte distant.
Prenons l'exemple suivant :
# ./roles/redis/tasks/main.yml
- name: install redis on Debian based distros
apt:
name: redis-server
state: present
update_cache: true
become: true
when: ansible_os_family == 'Debian'
- name: ensure epel-release repo is installed on RHEL based distros
yum:
name: epel-release
state: present
update_cache: true
become: true
when: ansible_os_family == 'RedHat'
- name: install redis on RHEL based distros
yum:
name: redis
state: present
update_cache: true
become: true
when: ansible_os_family == 'RedHat'
Il peut être avantageusement factorisé en 3 tâches distinctes de la façon suivante :
---
# ./roles/redis/tasks/setup-Debian.yml
- name: install redis on Debian based distros
apt:
name: redis-server
state: present
update_cache: true
become: true
when: ansible_os_family == 'Debian'---
# ./roles/redis/tasks/setup-RedHat.yml
- name: ensure epel-release repo is installed on RHEL based distros
yum:
name: epel-release
state: present
update_cache: true
become: true
when: ansible_os_family == 'RedHat'
- name: install redis on RHEL based distros
yum:
name: redis
state: present
update_cache: true
become: true
when: ansible_os_family == 'RedHat'
# ./roles/redis/tasks/main.yml
- include_tasks: "setup-{{ ansible_os_family }}.yml"