Saya memiliki pertanyaan yang sama dan sepertinya setiap set paket dengan status yang sama harus menjadi blok mereka sendiri. Melihat dokumentasi Ansible, mereka memiliki blok untuk setiap negara bagian sebagai contoh jadi saya mengambil contoh itu, memotong paket saya berdasarkan negara bagian mereka dan mengikuti contoh ignacio dan akhirnya bekerja dengan sempurna.
Jadi pada dasarnya akan terlihat seperti ini
- 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
Harapan yang masuk akal dan membantu!
Anda dapat membuat kode array dalam gaya YAML agar lebih mudah dibaca:
- name: Install utility packages common to all hosts
apt:
name:
- aptitude
- jq
- curl
- git-core
- at
state: present
autoclean: yes
Saya menemukan masalah yang sama persis, tetapi dengan daftar aplikasi yang lebih panjang, disimpan dalam file vars. Ini adalah kode yang saya terapkan untuk mengatasi masalah itu. Daftar aplikasi ditempatkan ke dalam variabel "apps" dan Ansible mengulanginya.
- name: Install default applications
apt:
name: "{{item}}"
state: latest
loop: "{{ apps }}"
when: ansible_distribution == 'Ubuntu' or ansible_distribution == 'Debian'
tags:
- instapps
File yang berisi daftar aplikasi yang akan dipasang ada di direktori Defaults di direktori peran untuk tugas ini - yaitu direktori peran "umum".
roles
- common
- Defaults
- main.yml