Uygun: ana bilgisayar adına veya rolüne bağlı olarak dosyayı kopyala


9

Ana bilgisayar adına bağlı olarak dosya üzerine kopyalamanın en iyi yolu nedir?

Farklı içeriğe sahip ancak aynı dosya adına sahip dosyaları birkaç makineye kopyalamam gerekiyor.

Birkaç dosyam var:

file.role1
file.role2
file.role3

Ana bilgisayar adına ve / veya rolüne bağlı olarak, kopyalamak file.roleXve yeniden adlandırmak istiyorumfile

Teşekkürler.

Yanıtlar:


31

Bunu yapmanın birçok yolu var. En basit:

- 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, daha kompakt:

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

Veya bir şablon kullanarak:

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

şablon böyle bir şey olabilir:

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

Farklı rollerde farklı dosyalar istiyorsanız, neden bunu basitçe koymuyorsunuz:

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

her rolün kodunda?

Bunu yapmanın tercih edilen bir yolu yoktur - aslında ne yapmaya çalıştığınıza bağlıdır.


5
TIMTOWTDI için bonus puan !
tedder42

Teşekkürler - Ben aslında bir karışıklık yaratmadan veya çok fazla rol / büyük bir envanter dosyası olmadan OS ve mimariye bağlı olarak farklı bir apt.sources dosyası için oldu. Envanter dosyasındaki ana makine adının arkasında bir değişkene gittim: sources_list = debian ve bu, sources.list.debian'ın sources.list dosyasına kopyalanmasına neden oluyor.
Tuinslak
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.