Como posso definir uma variável Ansible dependendo do nome do host?

1

Se eu executar ansible-playbook playbooks/snapshot.yml -l my.host.net , desejo referenciar uma variável VMID , que é pré-definida para essa ID de máquina virtual de hosts (4321, por exemplo).

Encontrei uma pergunta que deveria ter respondido No entanto, quando eu adiciono my.host.net.yml (abaixo) a um diretório host_vars em meu projeto, recebo o erro ...'VMID' is undefined ao executar o playbook. Um ansible não está lendo automaticamente host_vars/my.host.net.yml ou eu tenho algo confuso.

---
- 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

Atualização - estrutura de diretórios adicionada:

ansible
├── ansible.cfg
├── group_vars
├── host_vars
│   └── my.host.net.yml
├── inventories
├── playbooks
│   └── snapshot.yml
├── roles
└── tests
    
por Server Fault 26.11.2018 / 17:53

1 resposta

0

Para qualquer outra pessoa que esteja usando isso, acabei colocando links simbólicos no meu diretório playbooks . Eu não percebi ao configurar ansible que colocar playbooks em um diretório diferente causaria esses problemas. Eu certamente não quero centenas de livros de recortes bagunçando a raiz ansible no entanto, isso funciona. Eu poderia fazer o mesmo com group_vars , como em meus livros como vars_files: ../group_vars/ , mas por enquanto isso parece OK.

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
    
por 27.11.2018 / 15:50

Tags