J'exécute un livre de lecture qui a défini plusieurs paquets à installer via apt
:
- name: Install utility packages common to all hosts
apt:
name: "{{ item }}"
state: present
autoclean: yes
with_items:
- aptitude
- jq
- curl
- git-core
- at
...
Une récente mise à jour ansible sur mon système affiche maintenant ce message concernant le Playbook ci-dessus:
[DEPRECATION WARNING]: Invoking "apt" only once while using a loop via squash_actions is deprecated. Instead of
using a loop to supply multiple items and specifying `name: {{ item }}`, please use `name: [u'aptitude',
u'jq', u'curl', u'git-core', u'at', u'heirloom-mailx', u'Sudo-ldap', u'sysstat', u'vim', u'at', u'ntp',
u'stunnel', u'sysstat', u'arping', u'net-tools', u'lshw', u'screen', u'tmux', u'lsscsi']` and remove the loop.
Si je comprends bien, Ansible veut maintenant cette liste de paquets comme un tableau qui laisse ceci:
name: [u'aptitude', u'jq', u'curl', u'git-core', u'at','heirloom-mailx', u'Sudo-ldap', u'sysstat', u'vim', u'at', u'ntp',u'stunnel', u'sysstat', u'arping', u'net-tools', u'lshw', u'screen', u'tmux', u'lsscsi']
Y a-t-il un meilleur moyen? On dirait que je vais faire défiler pour toujours dans VIM pour essayer de maintenir cela. Soit ça, soit Word l'enveloppe et traite un paquet de paquets Word-cloud.
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 eu la même question et il semble que chaque ensemble de paquets 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 paquets en fonction de leurs états et suivi l'exemple d'ignacio, et tout a parfaitement fonctionné.
Donc, fondamentalement, 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!