가능 : 호스트 이름 또는 역할에 따라 파일 복사


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

고마워-실제로 엉망을 만들거나 너무 많은 역할 / 큰 인벤토리 파일을 사용하지 않고 OS 및 아키텍처에 따라 다른 apt.sources 파일을 사용했습니다. 인벤토리 파일에서 호스트 이름 뒤에 변수를 찾았습니다 : sources_list = debian 그리고 그 결과 sources.list.debian이 sources.list에 복사됩니다.
Tuinslak
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.