programing

ansible 플레이 북에 다른 역할의 작업 포함

nasanasas 2020. 11. 18. 09:13
반응형

ansible 플레이 북에 다른 역할의 작업 포함


저는 개별 작업으로 일종의 플레이 북 라이브러리를 디자인하고 있습니다.

그래서 일반적인 역할 repo에는 다음과 같은 것이 있습니다.

roles
├── common
│   └── tasks
│       ├── A.yml
│       ├── B.yml
│       ├── C.yml
│       ├── D.yml
│       ├── login.yml
│       ├── logout.yml
│       └── save.yml
├── custom_stuff_workflow
│   └── tasks
│       └── main.yml
└── other_stuff_workflow
    └── tasks
        └── main.yml

custom_stuff_workflow의 내 main.yml에는 다음과 같은 내용이 포함됩니다.

---

- include: login.yml
- include: A.yml
- include: C.yml
- include: save.yml
- include: logout.yml

그리고 이것은 다른 워크 플로우에 있습니다.

---

- include: login.yml
- include: B.yml
- include: A.yml
- include: D.yml
- include: save.yml
- include: logout.yml

자연스럽게 할 방법을 찾을 수 없습니다. 모든 작업을 단일 역할에 포함하고 custom_stuff_workflow를 포함하면서 관련 작업에 태그를 지정하는 것이 효과적이었습니다.

내가 가진 문제는 호출 플레이 북에 태그를 설정할 수 없다는 것입니다. 명령에 #!의해 처리되는 yml에 헤더 가 있으면 좋을 것입니다 ansible-playbook)

각 워크 플로에서 관련 작업 (위 트리의 공통 항목 내부)을 복사 할 수도 있지만 반복하고 싶지는 않습니다.

누군가가 다른 역할에 대해 작업을 반복하지 않고 내가 원하는 것을 달성 할 수있는 솔루션을 볼 수 있습니까?

내 문제의 초석은 내가 작업을 개인으로 정의하고 ansible에서 자연스럽지 않은 것 같습니다 ...

고마워

추신 : 워크 플로의 작업은 특정 순서로 수행되어야하며 추상화하는 유일한 단계는 로그인 및 저장 / 로그 아웃입니다.

PPS :이 질문을 본 적이 있습니다 . Ansible의 다른 역할 내에서 역할을 어떻게 호출합니까? 하지만 역할에있는 작업의 하위 집합이 아닌 전체 역할을 호출하므로 내 문제가 해결되지 않습니다.


다른 사람이이 문제에 부딪 힐 경우를 대비 하여 Ansible 버전 2.2 에는 이제 include_role. 이제 이와 같은 작업을 할 수 있습니다.

---
- name: do something
  include_role:
    name: common
    tasks_from: login

여기 에서 문서를 확인 하십시오 .


예, Ansible은 작업을 개별 구성 요소로 좋아하지 않습니다. 역할을 사용하기를 원한다고 생각하지만 단순하고 재사용 가능한 작업에 역할을 사용하지 않는 이유를 알 수 있습니다.

현재 두 가지 가능한 해결책이 있습니다.

1. 작업 파일을 역할로 만들고 종속성 사용

그런 다음 custom_stuff_workflow에서 이와 같은 작업을 수행 할 수 있습니다.

dependencies:
  - { role: login }

참조 : https://docs.ansible.com/playbooks_roles.html#role-dependencies

2. 작업 파일에 대한 "하드 코딩 된"경로와 함께 포함을 사용합니다.

- include: ../../common/tasks/login.yml

방금 한 짧은 테스트 플레이 북에서 꽤 잘 작동했습니다. 이러한 포함에 매개 변수 등을 사용할 수도 있습니다.

See: http://docs.ansible.com/ansible/latest/playbooks_reuse.html

I hope I understood that question correctly and this helps.

참고URL : https://stackoverflow.com/questions/30192490/include-tasks-from-another-role-in-ansible-playbook

반응형