Назад | Перейти на главную страницу

Как я могу установить переменную Ansible в зависимости от имени хоста?

Если я сбегу ansible-playbook playbooks/snapshot.yml -l my.host.net Я хочу сослаться на VMID переменная, которая предварительно установлена ​​для этого идентификатора виртуальной машины хоста (например, 4321).

я обнаружил вопрос который должен был ответить на этот вопрос, однако когда я добавляю my.host.net.yml(ниже) к host_vars каталог в моем проекте, я получаю сообщение об ошибке ...'VMID' is undefined при запуске playbook. Либо ansible не читает автоматически host_vars/my.host.net.yml или у меня что-то напортачило.

---
- hosts: all
  gather_facts: false
  tasks:

  - name: print a host variable
    debug:
      msg: "hostvar VMID is {{ VMID }}"

host_vars / my.host.net.yml

---
VMID: 4321

Обновление - Добавлена ​​структура каталогов:

ansible
├── ansible.cfg
├── group_vars
├── host_vars
│   └── my.host.net.yml
├── inventories
├── playbooks
│   └── snapshot.yml
├── roles
└── tests

Для всех, кто сталкивался с этим, я поместил символические ссылки в свой playbooks каталог. При настройке ansible я не понимал, что размещение playbooks в другом каталоге вызовет эти проблемы. Я уверен, что не хочу, чтобы сотни сценариев загромождали доступный корень, поэтому это работает. Я мог бы сделать то же самое с group_vars как это в моих пьесах как vars_files: ../group_vars/ но пока это кажется нормальным.

ansible
├── ansible.cfg
├── group_vars
├── host_vars
│   └── my.host.net.yml
├── inventories
├── templates
├── host_vars
├── playbooks
│   ├── snapshot.yml
│   ├── templates -> ../templates 
|   └── host_vars -> ../host_vars
├── roles
└── tests