Kemungkinan: menyalin file tergantung pada nama host atau peran

9

Apa cara terbaik untuk menyalin file tergantung pada nama host?

Saya perlu menyalin file dengan konten yang berbeda tetapi dengan nama file yang sama ke beberapa mesin.

Saya punya beberapa file:

file.role1
file.role2
file.role3

Bergantung pada nama host dan / atau peran, saya ingin menyalin file.roleXdan mengganti namanyafile

Terima kasih.

Tuinslak
sumber

Jawaban:

31

Ada banyak cara untuk melakukan ini. Paling sederhana:

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

Alternatif, lebih ringkas:

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

Atau, menggunakan templat:

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

tempat templatnya bisa seperti ini:

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

Jika Anda ingin file yang berbeda di peran yang berbeda, kenapa tidak Anda taruh saja ini:

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

dalam kode peran masing-masing?

Tidak ada cara yang disukai untuk melakukannya - itu tergantung pada apa yang sebenarnya ingin Anda capai.

Antonis Christofides
sumber
5
poin bonus untuk TIMTOWTDI !
tedder42
Terima kasih - Saya sebenarnya untuk file apt.sources berbeda tergantung pada OS & arsitektur tanpa membuat kekacauan atau memiliki terlalu banyak peran / file inventaris besar. Saya mencari variabel di belakang nama host di file inventaris: sources_list = debian dan yang menyebabkan sources.list.debian untuk menyalin ke sources.list.
Tuinslak