Ansible: copia o arquivo dependendo do hostname ou role

8

Qual é a melhor maneira de copiar um arquivo, dependendo de um nome de host?

Eu preciso copiar arquivos com conteúdo diferente, mas com o mesmo nome de arquivo para várias máquinas.

Eu tenho vários arquivos:

file.role1
file.role2
file.role3

Dependendo do nome do host e / ou da função, eu gostaria de copiar file.roleX e renomeá-lo para file

Obrigado.

    
por Tuinslak 22.11.2014 / 00:07

1 resposta

27

Existem várias maneiras de fazer isso. Mais simples:

- name: Copy file.role1 to host1
  copy: src=file.role1 dest=/somewhere/file
  when: inventory_hostname == "host1"
- name: Copy file.role2 to host2
  copy: src=file.role2 dest=/somewhere/file
  when: inventory_hostname == "host2"

Alternativa, mais compacta:

- name: Copy file to host
  copy: src=file.{{ inventory_hostname }} dest=/somewhere/file

Ou usando um modelo:

- name: Copy file to host
  template: src=file dest=/somewhere/file

onde o modelo pode ser algo assim:

{% if inventory_hostname == "host1" %}
{% include "file1" %}
{% endif %}
...

Se você quiser arquivos diferentes em diferentes funções, por que não coloca isso:

- name: Copy file.role1 to file
  copy: src=file.role1 dest=/somewhere/file

no código de cada função?

Não existe uma maneira preferida de fazer isso - depende do que você está realmente tentando realizar.

    
por 22.11.2014 / 18:13

Tags