ansible : 역할에 역할 포함?
역할에서 역할을 재사용 할 수 있습니까? 나는 역할의 메타 / main.yml 파일에 대한 종속성을 정의를 통해 만에 의해 의미하지 않는다 포함한 직접 다른 역할의 작업 / main.yml의 역할을?
예를 들어, 롤북에서 몇 가지 기본 역할을 정의하고 역할에서 더 높은 수준의 역할을 정의합니다. 높은 수준의 역할에 특정 작업 외에 몇 가지 기본 역할이 포함되기를 원합니다.
playbooks/
rolebooks/
some_role/
roles/
webtier/
tasks/
main.yml
playbooks / roles / webtier / tasks / main.yml에서 :
- shell: echo 'hello'
- { role: rolebooks/some_role }
- shell: echo 'still busy'
감사
오래된 질문이지만 기록을 위해 : Ansible 2.2+를 사용하면 괜찮습니다 include_role
. 바로이 목적을 위해 ... 여기 문서를 참조 하십시오 .
확인하세요 import_role
... 여기에서 문서를 참조 하세요.
AFAIK, 당신은 할 수 없습니다. 이것이 의존성이있는 이유입니다.
종속성을 피하려면 (예를 들어 '역할 X'가 두 작업간에 실행되기를 원하기 때문에) 작업이 관련되어 있다고 생각하면 플레이 북 자체에서이 작업을 수행 할 수 있습니다.
roles / webtier / tasks / main.yml :
- shell: echo 'hello'
- include: webtier.yml
- shell: echo 'role done'
대체로 정확히 무엇을 하려는지에 달려 있습니다. 그러나 귀하의 예에서 '아직 바쁘다'는 rolebooks/some_role
것은 아직 실행 중임 을 의미하는 것 같습니다 . 이는 불가능합니다 (여기에는 동시성이 없습니다).
분명히 마스터 플레이 북에서 역할을 순서대로 지정할 수도 있습니다 (아마도 이미 수행 한 작업 일 것입니다).
- name: Polite foo stuff
hosts: foo_hosts
roles:
- say_hello
- rolebooks/some_role
- say_bye
- name: Unpolite foo stuff
hosts: !foo_hosts
roles:
- rolebooks/some_role
당신은 할 수 없지만 비슷한 것을 할 수 있습니다.
레이아웃 :
roles/
...
common/tasks/main.yml
nginx/tasks/main.yml
...
에서 nginx/tasks/main.yml
일반적인 작업을 호출 할 수 있습니다.
- name: Call the 'common' role to do some general setup
include: ../../common/tasks/main.yml
Note that because you're not using the typical import structure, you might run into some "weirdness" like role default variables not being accessible unless you included the role in the standard fashion earlier.
I appreciate that you said not using meta dependencies but the best solution I have come up with is to create a role that only contains meta/dependency.yml
This allows any number of roles to be included in the correct order.
Ensure that you set allow_duplicates: yes
---
allow_duplicates: yes
dependencies:
- { role: app-install-rpms, tags: ['rpms'] }
- { role: app-java-config, tags: ['config'] }
- { role: app-directories, tags: ['dirs'] }
- { role: app-config-site_management, tags: ['site_management'] }
- { role: app-config-initd, tags: ['initd'] }
- { role: tomcat-boapp, tags: ['config'] }
This allows us to in essence call a role from a role.
참고URL : https://stackoverflow.com/questions/26551422/ansible-include-role-in-a-role
'programing' 카테고리의 다른 글
Virtualbox 설치를 수정하는 방법 (0) | 2020.12.12 |
---|---|
nginx가 특정 Content-Type을 보내도록 강제 (0) | 2020.12.12 |
Phoenix 서버가 실행 중일 때 컨트롤러에 무언가를 로그인하는 방법은 무엇입니까? (0) | 2020.12.12 |
AngularJS POST 실패 : 프리 플라이트에 대한 응답에 잘못된 HTTP 상태 코드 404가 있습니다. (0) | 2020.12.12 |
NOT LIKE 및 LIKE가 반대 결과를 반환하지 않음 (0) | 2020.12.12 |