여러 Ansible 플레이북을 실행하려면 Python에서 생성된 변수를 하나의 플레이북에서 매개변수로 사용하세요.

여러 Ansible 플레이북을 실행하려면 Python에서 생성된 변수를 하나의 플레이북에서 매개변수로 사용하세요.

변수 var1 및 var2를 생성하는 Python 스크립트가 있습니다.

이러한 변수는 Ansible 플레이북의 추가 var 매개변수로 사용됩니다.

Python scirpt 및 플레이북에서 동적으로 생성된 스크립트 변수는 다음과 같습니다.

cat palybook1.yml ->

- hosts: localhost tasks:
- name: "CV: Publish New Versions" katello_content_view_version: username: "{{ username }}" password: "{{ password }}" server_url: "{{ server_url }}" validate_certs: "{{ validate_certs }}" organization: "{{ item.org }}" content_view: "{{ item.cv }}" loop: "{{ cvlist }}"

cat palybook2.yml ->

- hosts: localhost tasks:
- name: "CV: Publish New Versions" katello_content_view_version: username: "{{ username }}" password: "{{ password }}" server_url: "{{ server_url }}" validate_certs: "{{ validate_certs }}" organization: "{{ item.org }}" content_view: "{{ item.cv }}" loop: "{{ cvlist }}"

vars1 및 vars2는 Python 스크립트에 의해 생성됩니다.

cat vars1 ->

server_url: "https://www.example1.com" certs: true cvlist:
- { org: 'ORG1',cv: 'cv1' }
- { org: 'ORG2',cv: 'cv2' }
- { org: 'ORG3',cv: 'cv3' }
- { org: 'ORG4',cv: 'cv4' }
- { org: 'ORG5',cv: 'cv5' }

cat vars2 ->

server_url: "https://www.example2.com" certs: true cvlist:
- { org: 'ORG6',cv: 'cv1' }
- { org: 'ORG7',cv: 'cv2' }
- { org: 'ORG8',cv: 'cv3' }
- { org: 'ORG9',cv: 'cv4' }
- { org: 'ORG10',cv: 'cv5' }

다음 단일 스크립트가 필요합니다.

python3 script.py --host server1.example.com --cycle dev --user user1
--password password1 > vars1 ansible-playbook playbook1.yml --extra-vars "@vars1" --extra-vars "username=user1 password=password1"

python3 script.py --host server2.example.com --cycle dev --user user1
--password password1 > vars2 ansible-playbook playbook2.yml --extra-vars "@vars2" --extra-vars "username=user1 password=password1"

보시다시피 script.py와 playbook1/2.yml이 두 번 사용됩니다.

플레이북에서 playbook1/2와 함께 위의 Python 스크립트를 사용하고 싶습니다.

단일 플레이북에서 여러 플레이북이 포함된 Python 스크립트를 실행할 수 있는지 누군가 말해 줄 수 있나요?

관련 정보