Ho avuto la stessa domanda e sembra che ogni set di pacchetti con gli stessi stati dovrà essere il proprio blocco. Guardando la documentazione di Ansible, hanno un blocco per ogni stato come esempio, quindi ho preso quell'esempio, ho tagliato i miei pacchetti in base ai loro stati e ho seguito l'esempio di ignacio e ha finito per funzionare perfettamente.
Quindi sostanzialmente sarebbe simile a questo
- 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
Spero che abbia senso e aiuti!
Puoi codificare l'array in stile YAML per renderlo più leggibile:
- name: Install utility packages common to all hosts
apt:
name:
- aptitude
- jq
- curl
- git-core
- at
state: present
autoclean: yes
Mi sono imbattuto nello stesso identico problema, ma con un elenco di app molto più lungo, contenuto in un file vars. Questo è il codice che ho implementato per aggirare il problema. L'elenco delle app viene inserito nella variabile "apps" e Ansible lo ripete.
- name: Install default applications
apt:
name: "{{item}}"
state: latest
loop: "{{ apps }}"
when: ansible_distribution == 'Ubuntu' or ansible_distribution == 'Debian'
tags:
- instapps
Il file che contiene l'elenco delle app da installare si trova nella directory Defaults nella directory dei ruoli per questa attività, vale a dire la directory dei ruoli "comune".
roles
- common
- Defaults
- main.yml