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

Ansible: копировать файл в зависимости от имени хоста или роли

Как лучше всего скопировать файл в зависимости от имени хоста?

Мне нужно скопировать файлы с разным содержимым, но с одним и тем же именем на несколько машин.

У меня есть несколько файлов:

file.role1
file.role2
file.role3

В зависимости от имени хоста и / или роли я хотел бы скопировать file.roleX и переименуйте его в file

Спасибо.

Есть много способов сделать это. Самый простой:

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

Альтернатива, более компактная:

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

Или, используя шаблон:

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

где шаблон может быть примерно таким:

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

Если вам нужны разные файлы в разных ролях, почему бы вам просто не указать это:

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

в коде каждой роли?

Нет предпочтительного способа сделать это - это зависит от того, чего вы на самом деле пытаетесь достичь.