Ansible: инвентаризация YAML для промежуточных / производственных узлов

#ansible

#ansible

Вопрос:

Я не могу настроить инвентарь, который будет простым и полезным в yml формате для Ansible Playbook: (

Например:

 all:
  children:
    db:
      children:
        production:
          hosts:
            1.1.1.1:

        staging:
          hosts:
            11.11.11.11:

    web:
      children:
        production:
          hosts:
            2.2.2.2:

        staging:
          hosts:
            22.22.22.22:
 

Итак, у меня есть два сборника с:

playbook-db.yml

 ...
hosts:
  - db
 

и playbook-web.yml

 ...
hosts:
  - db
 

И я хочу использовать этот инвентарь как:

andible-playbook -D playbook-db.yml --limit=staging

Я ожидаю, что мой playbook будет использоваться только db staging для хостов and, но playbook применяется для всех staging хостов: 11.11.11.11 и 22.22.22.22 (но я ожидаю только 11.11.11.11): (

Как я могу это правильно реализовать?

Ответ №1:

Похоже, у вас есть недопонимание относительно файла инвентаризации, поскольку ansible выполняет то, что вы описали

 ansible-inventory -i your-posted-file.yml --list
 

выдает

 {   ...
    "all": {
        "children": [
            "db",
            "ungrouped",
            "web"
        ]
    },
    "db": {
        "children": [
            "production",
            "staging"
        ]
    },
    "production": {
        "hosts": [
            "1.1.1.1",
            "2.2.2.2"
        ]
    },
    "staging": {
        "hosts": [
            "11.11.11.11",
            "22.22.22.22"
        ]
    }
 

показывает, что в db группе есть все члены production и staging , но staging есть хосты "11.11.11.11", "22.22.22.22" , как вы описали

Я думаю, возможно, вы объединяли отступ yaml с членством, но это не так, как работают инвентаризации ansible.

Гораздо более вероятно, что вам понадобится a db-staging и db-production group , для случая, который вы описали, когда вам нужны только db те хосты, которые есть staging , оставляя db группу для обозначения каждого db участника

Комментарии:

1. похоже, это единственный способ сделать db-staging и т. Д. — Я пробовал это раньше, и это сработало. Спасибо