В Интернете есть примеры, но мне кажется, ни один из них не работает:
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
Есть ли <somehost>
в инвентаре? Аргумент hosts:
должен быть указан в вашем инвентаре (именно это и делает ваша последняя команда).
Для файла инвентаризации 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'
Документация
Это работает, когда вы запускаете тот, у которого есть
hosts: all
, с помощьюansible-playbook -i hosts test.yaml
?