複数のAnsible Playbookを実行するには、Pythonで生成された変数を1つのPlayBookでパラメータとして使用します。

複数のAnsible Playbookを実行するには、Pythonで生成された変数を1つのPlayBookでパラメータとして使用します。

変数var1とvar2を生成するPythonスクリプトがあります。

これらの変数は、Ansible Playbookの追加のvarパラメータとして使用されます。

Python scirptとPlaybookで動的に生成されたスクリプト変数は次のとおりです。

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が2回使用されます。

Playbookでplaybook1/2で上記のPythonスクリプトを使用したいと思います。

単一のプレイブックで複数のプレイブックを含むPythonスクリプトを実行できるかどうか教えてもらえますか?

ベストアンサー1

おすすめ記事