Ansible:ホスト名または役割に応じてファイルをコピーします


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 2014年

おかげで-混乱を作成したり、役割が多すぎたり、大きなインベントリファイルを作成したりせずに、OSとアーキテクチャに応じて実際に異なるapt.sourcesファイルを求めていました。インベントリファイルのホスト名の背後にある変数に移動しました。sources_list= debianで、sources.list.debianがsources.listにコピーされます。
Tuinslak 2014年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.