Ansible을 사용하여 여러 플레이 북을 실행하는 방법은 무엇입니까?


16

새 서버 인스턴스를 가동시키기 위해 여러 가지 Ansible 플레이 북을 작업 중입니다. 서버를 성공적으로 가동시키기 위해 특정 순서로 실행해야하는 약 15 가지의 플레이 북이 있습니다.

내 생각은 실행 ansible-playbook playbook_name.yml해야 할 각 플레이 북마다 하나의 항목을 실행 하고 복제 하는 쉘 스크립트를 작성하는 것이 었습니다 .

마스터 플레이 북을 사용 하여이 작업을 수행하는 것이 더 똑똑하고 더 나은 방법이 있습니까? 그렇다면 어떻게 보일 것입니까?

나는 그것을 모두 수행하는 하나의 모 놀리 식 플레이 북을 작성할 수 있지만 루트로 먼저 실행 한 다음 나중에 sudo 사용자로 실행되는 플레이가 있습니다.


2
기본 플레이 북에 포함 사용 docs.ansible.com/ansible/playbooks_roles.html
c4f4t0r

1
root로 실행 한 다음 sudo 사용자로 실행하는 경우를 처리하기 위해 블록 기능을 사용할 수 있습니다 become:. 각 블록의 끝에 부품을 배치하십시오 . 연결 사용자를 루트에서 sudo 사용자로 전환하려면 새 재생 을 작성해야 할 수도 있습니다 .
RichVel

답변:


15

많은 하위 플레이 북을 만들고 include 문을 통해 집계하십시오.

- include: playbook-one.yml
- include: playbook-two.yml

플레이 북을 순서대로 실행해야하고 모두 필수 인 경우 기본 플레이 북을 작성하고 작업에 파일을 포함시킵니다. 플레이 북은 항상 닫힌 과정이어야합니다.


2
답의 마지막 부분을 자세히 설명해 주시겠습니까? "플레이 북은 항상 닫힌 과정이어야합니다."는 무슨 뜻입니까? ?
Mike Vella

1
정규식을 사용하여 모든 플레이 북을 지정하는 방법이 있습니까? 예를 들면 :- include : books/*.yml
blueskin

8
include더 이상 사용되지 않는 것 같습니다 . docs.ansible.com/ansible/latest/playbooks_reuse.htmlimport_playbook: foo 올바른 방법 이라고 생각 하지만 경험이 많지는 않습니다.
Andrew

11

최신 버전의 Ansilbe의 경우 많은 하위 플레이 북을 작성하고 import_playbook 문을 통해 집계 할 수 있습니다.

---
- import_playbook: A-systemd-networkd.yml
- import_playbook: B-fail2ban-ssh.yml
- import_playbook: C-enable-watchdog.yml
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.