Ansible инвентарь: определение групповой принадлежности с переменными хоста - PullRequest
1 голос
/ 19 января 2020

Я разрабатываю структуру инвентаря, которая будет использоваться для хостов по всему миру. Они объединяются в группы (несколько типов хостов (устройства, а не только ПК \ ma c) для каждого местоположения) и отличаются многочисленными характеристиками, которые влияют на то, как ими нужно управлять (эффективно - какую роль им будет отведено). Это означает, что по сути есть много групп, и хост обычно является членом нескольких.

Кроме того, этот инвентарь подвержен изменениям (из-за нового развертывания, перемещения или повторного использования данного хоста). ). Из-за вышеизложенного я хочу, чтобы членство в группе определялось на стороне хоста, а также максимально автоматизировал процесс.

Я читал о add_host и group_by, но не уверен:

  1. Если Я правильно понимаю использование (например, не уверен, смогу ли я использовать group_by с обычными переменными хоста)
  2. Как лучше всего их использовать (если есть рекомендации или общие соображения, которые мне не хватает - не могу найти подробный пример)

Ниже приведен пример свойств (не реальных, obvs):

group_vars/host001:
type: "PC"
os: "windows"
os_version: "10"
has_widescreen: True
office_version: "2019"
<more properties>

group_vars/host041:
type: "mac"
os: "macos"
macos_version: "10.13"
<more properties>

group_vars/host053:
type: "mac"
os: "macos"
os_version: "10.13"
office_version: "2007"
<more properties>

Затем для создания групп, которые я хочу использовать, например:

# create groups named "windows 10" and "macos 10.13", under the groups "windows" and "macos" accordingly.
- group_by:
    key: {{ os }}-{{ os_version }}
    parents:
      - {{ os }} 

# create groups named "office2007" and office2019"
- group_by:
    key: {{ office_version }}

# create group of hosts with wide screens
add_host: hostname={{ item }} groups=has_widescreen
  with_items: groups['all']
  when: (has_widescreen == True)

Это допустимое использование? Это рекомендуется? Есть ли где-нибудь исчерпывающий пример динамической c группировки со многими группами, из которых можно поучиться?

...