Могут ли в файле инвентаризации Ansible хосты принадлежат разным ОС?

Могут ли в файле инвентаризации Ansible хосты принадлежат разным ОС?

Допустим, мы хотим развернуть веб-приложение Java на нескольких машинах (наборе машин), где каждая машина имеет другую ОС, чем остальные машины. Можем ли мы написать единую книгу, которая сможет настроить веб-приложение Java на каждой из этих машин?

Будет ли такой подход? 1. В playbook проверьте тип ОС (if-условия), а затем в каждом блоке if выполните шаги установки (шаги настройки приложения) соответственно. Если есть какие-либо общие этапы установки, пусть эти задачи не входят в условие проверки типа ОС (если условие).


person Sawan Patwari    schedule 30.11.2018    source источник
comment
Конечно, это абсолютно законно. Вы можете установить идентификаторы хостов в своем инвентаре, чтобы различать операционные системы, или использовать встроенный собранный факт ansible_os_family   -  person reartnew    schedule 30.11.2018
comment
Спасибо за информацию.   -  person Sawan Patwari    schedule 30.11.2018


Ответы (1)


Да, вы можете иметь в своем инвентаре смешанные экземпляры ОС. Вы можете справиться с развертыванием в своем плейбуке, добавив условие «когда» для каждой задачи, например:

- name: "Install the Python bindings for SELinux, for Ansible."
  yum: name=libselinux-python state=present
  when: ansible_os_family == "RedHat"

Или в папке задач вашей роли создайте разные файлы для каждой ОС, а в основном поле вы можете использовать что-то вроде этого:

- include: Debian.yml
  when: ansible_os_family == "Debian"

- include: RedHat.yml
  when: ansible_os_family == "RedHat"

- include: Windows.yml
  when: ansible_os_family == "Windows"
person sys0dm1n    schedule 30.11.2018