Как написать Ansible Playbook для установки различных приложений на разные хосты в Ubuntu 20.04 {{1} } Условия
Для всех пакетов мы должны указать числа вроде 1,2,3, .....
После указания имени хоста он должен запросить номер пакета, в это время мы должны указать этот номер, конкретный пакет должен быть установлен на конкретном хосте
Я бы организовал свое репозиторий Ansible так, чтобы у него была отдельная роль для каждого программного обеспечения, а затем использовал бы ansible_hostname
факт модуля gather_facts
в качестве условия для установки программного обеспечения для конкретного хоста. Я бы выбрал такую структуру папок:
└── ansible_repo
├── roles
│ ├── vim
│ │ └── tasks
│ │ └── main.yml
│ ├── tmux
│ │ └── tasks
│ │ └── main.yml
│ └── vlc
│ └── tasks
│ └── main.yml
├── inventory
└── playbook.yml
Содержимое playbook.yml
будет выглядеть примерно так:
# playbook.yml
- hosts: all
become: true
# run roles
- hosts: all
roles:
- vim
- tmux
- vlc
main.yml
внутри каждой задачи будет следуйте этому шаблону (там используется vim):
---
# tasks file for vim
- name: Install vim
apt:
name:
- vim
when gather_facts.ansible_hostname = "host1" or "host3"
Вы также можете сохранить имя хоста в файле inventory
.
Хотя это сработает, но я думаю, это не лучшая практика. Лучшим способом было бы сгруппировать ваши хосты в зависимости от того, какие пакеты нужны, а затем использовать определенные роли для этой группы.