Ansible playbook на ubuntu 20
Как написать Ansible Playbook для установки разных приложений на разные хосты в Ubuntu 20.04 Условия
- При запуске playbook он должен запрашивать имя хоста (мы должны указать конкретное имя хоста)
Для всех пакетов мы должны указать номера, такие как 1,2,3, .....
После указания имени хоста он должен запросить номер пакета, в это время мы должны указать этот номер, конкретный пакет должен быть установлен на конкретном хосте.
1 ответ
Я бы организовал репозиторий 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
The
main.ymlвнутри каждой задачи будет следовать этому шаблону (там используется vim):
---
# tasks file for vim
- name: Install vim
apt:
name:
- vim
when gather_facts.ansible_hostname = "host1" or "host3"
Вы можете сохранить имя хоста в
inventoryтакже файл.
Пока этот будет работать, но, я думаю, это будет не лучшая практика. Лучшим способом было бы сгруппировать ваши хосты на основе того, какие пакеты нужны, а затем использовать определенные роли для этой группы.