2014-11-25 3 views
3

내 플레이 북에 zzet.rbenv role을 사용 중입니다. 프로비저닝 된 시스템에 복사하는 files/default-gems 파일이 있습니다.책임있는 사람의 역할 파일을 덮어 쓰는 방법?

은 내가 zzet.rbenv/files/default-gems, 그렇지 않은 경우 사용하여 myplaybook/files/default-gems를 확인하고 존재하는 경우를 를 사용하여 내 작전이 필요합니다.

어떻게하면됩니까?

답변

2

일부 연구 및 시행 착오 후. 나는 Anabilities가 파일 사이에 파일이 존재하는지 검사 할 수 없다는 것을 알았습니다. 이는 역할 종속성 (역할 자체)이이를 필요로하는 역할로 확장되어 게임의 일부가되는 방식 때문입니다. my_role/files/my_file.txtrequired_role/files/my_file.txt을 구별 할 수있는 작업은 없습니다. 문제 (내가 가장 쉽고 깨끗한 발견 한)에

한 가지 방법은했다 :

  1. 내가 (기본 하나를 오버라이드 (override)) 사용하고자하는 파일의 경로로 my_role에 변수를 추가
  2. 상기 변수를 정의하고 그것을

01,235을 이용하여 태스크를 실행하는 경우 확인 (기본 파일을 사용하는 것과 동일한) 작업을 추가 16,

required_role

# Existing task 
- name: some task 
    copy: src=roles_file.txt dest=some/directory/file.txt 
    when: my_file_path is not defined 

# My custom task 
- name: my custom task (an alteration of the above task) 
    copy: src={{ my_file_path }} dest=/some/directory/file.txt 
    when: my_file_path is defined 

my_role

에서 언급 한 바와 같이
#... existing code 
my_file_path: "path/to/my/file" 

라몬 데 라 푸 엔테 :이 솔루션이 작동 zzet.rbenv repo :

+1

로 받아 들여졌다, 그러나 그것은 것 의존하고있는 역할의 작업이 어디에서 파일을 사용하는지 문제가 될 수 있습니다. 귀하의 솔루션은 견고한 솔루션이지만 원래 역할에 가변 경로 이름을 사용할 수 있도록 역할 소유자에게 끌어 오기 요청을 보내는 것이 좋습니다. 그것은 더 유연한 은하의 역할을 그런 식으로 만듭니다. –

+1

아, 그 역할이 지금 이것을 지원합니다. https://github.com/andradei/ansible-rbenv-role/commit/434602710d8dbd047ad70f24cdc950971a0bdafc 멋진 :-) –