Как указать хост как переменную в ansible?

В Интернете есть примеры, но мне кажется, ни один из них не работает:

test.yaml

---

- hosts: "{{ non_default_host }}"
  tasks:
    - debug:
        msg: 'This is the host specified"

тогда я запускаю это с

ansible-playbook -i hosts test.yaml -e "non_default_host=<somehost>"

Все, что я вижу, это куча предупреждений:

[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided host list is empty, only localhost is available
[WARNING]: Could not match supplied host pattern, ignoring somehost

PLAY [somehost]
skipping: no hosts matched

Но если я поменяю хосты на все

test.yaml

---

- hosts: all
  tasks:
    - debug:
        msg: 'This is the host specified"

а затем ниже команды это работает нормально

   ansible-playbook -i 'somehost,'  test.yaml

Это работает, когда вы запускаете тот, у которого есть hosts: all, с помощью ansible-playbook -i hosts test.yaml?

sam 19.04.2024 00:47

Есть ли <somehost> в инвентаре? Аргумент hosts: должен быть указан в вашем инвентаре (именно это и делает ваша последняя команда).

larsks 19.04.2024 01:43
Введение в Ansible Roles
Введение в Ansible Roles
Ansible - это отличный инструмент управления конфигурацией, который можно использовать для автоматизации настройки или развертывания на большом...
0
2
116
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Для файла инвентаризации example с содержимым

[example:children]
default
non_default

[default]
node[01:03].example.com

[non_default]
node[01:03].example.net

проверил с

ansible-inventory --inventory example --graph
@all:
  |--@ungrouped:
  |--@example:
  |  |--@default:
  |  |  |--node01.example.com
  |  |  |--node02.example.com
  |  |  |--node03.example.com
  |  |--@non_default:
  |  |  |--node01.example.net
  |  |  |--node02.example.net
  |  |  |--node03.example.net

минимальный пример сборника пьес

---
- hosts: "{{ host }}"
  become: false
  gather_facts: false
  connection: local

  tasks:

  - debug:
      msg: "This is the 'hosts: {{ host }}' specified"

позвонил через

 ansible-playbook --inventory example test.yml --extra-vars = "host=node03.example.com"

приведет к выводу

PLAY [node03.example.com] **********************************

TASK [debug] ***********************************************
ok: [node03.example.com] =>
  msg: 'This is the ''hosts: node03.example.com'' specified'

Документация

Другие вопросы по теме