Відповідь: скопіюйте файл залежно від імені хоста чи ролі


9

Що найкраще скопіювати через файл залежно від імені хоста?

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

У мене є кілька файлів:

file.role1
file.role2
file.role3

Залежно від імені хоста та / або ролі, я хотів би скопіювати його file.roleXта перейменувати йогоfile

Дякую.

Відповіді:


31

Є багато способів зробити це. Найпростіший:

- 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

в коді кожної ролі?

Немає кращого способу зробити це - це залежить від того, що ви насправді намагаєтеся досягти.


5
бонусні бали за TIMTOWTDI !
tedder42

Дякую - я насправді був для іншого файлу apt.sources залежно від ОС та архітектури, не створюючи безлад або маючи занадто багато ролей / великий файл інвентаря. Я перейшов до змінної за іменем хосту у файлі інвентаря: source_list = debian, і це змушує копіювати Source.list.debian у source.list.
Туіншлак
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.