J'ai eu cette même question et il semble que chaque ensemble de packages avec les mêmes états devra être son propre bloc. En regardant la documentation d'Ansible, ils ont un bloc pour chaque état à titre d'exemple, j'ai donc pris cet exemple, découpé mes packages en fonction de leurs états et suivi l'exemple d'ignacio et cela a fini par fonctionner parfaitement.
Donc, en gros, cela ressemblerait à ceci
- name: Install packages required for log-deployment
apt:
name:
- gcc
- python-devel
state: latest
autoclean: yes
- name: Install packages required for log-deployment
apt:
name:
- python
- mariadb
- mysql-devel
state: installed
J'espère que cela a du sens et aide !
Vous pouvez coder le tableau dans le style YAML pour le rendre plus lisible :
- name: Install utility packages common to all hosts
apt:
name:
- aptitude
- jq
- curl
- git-core
- at
state: present
autoclean: yes
J'ai rencontré exactement le même problème, mais avec une liste d'applications beaucoup plus longue, conservée dans un fichier vars. C'est le code que j'ai implémenté pour contourner ce problème. La liste des applications est placée dans la variable "apps" et Ansible itère dessus.
- name: Install default applications
apt:
name: "{{item}}"
state: latest
loop: "{{ apps }}"
when: ansible_distribution == 'Ubuntu' or ansible_distribution == 'Debian'
tags:
- instapps
Le fichier contenant la liste des applications à installer se trouve dans le répertoire Defaults du répertoire de rôle pour cette tâche - à savoir le répertoire de rôle "commun".
roles
- common
- Defaults
- main.yml