Ansible TowerまたはAWXでvenvを設定する方法をまとめます。Ansible TowerとAWXは、ジョブテンプレートやプロジェクト単位で異なるvenvを指定する事もできます。Ansible TowerとAWXで、設定方法が若干異なる事に注意ください。
様々な運用形態に対応できるようGUI, CLI, APIの3通りの設定手順をまとめます。
venvの作成
Ansible Towerの場合
Ansbile Towerは/var/lib/awx/venv/配下に作成したvenvを使用する事ができます。
venvを作成する場合は、いくつか依存関係があり必要なモジュールをインストールする必要があります。Ansible Tower Upgrade and Migration Guideによると、v3.7.2時点ではpsutilが必要と記載されています。
venv作成例は以下の通りです。
psutilのコンパイルにはgcc, python3-develなどが必要です。エラーが発生する場合はエラーメッセージを見つつ、不足するRPMパッケージを適宜インストールください。
python3 -m venv /var/lib/awx/venv/sample-venv /var/lib/awx/venv/sample-venv/bin/pip install ansible psutil
AWXの場合
AWXのホストOSではなく、コンテナ内部の/var/lib/awx/venv/配下にvenvを作成します。
2020/08/19時点では、コンテナ内にgcc, python3-develがインストールされていないためpythonモジュールをコンパイルできません。venv作成前にまずはgcc, python3-develをインストールします。
docker container exec -i -t awx_web /bin/bash yum install gcc python3-devel
コンテナ内にvenv環境を作成します。
docker container exec -i -t awx_web /bin/bash python3 -m venv /var/lib/awx/venv/sample-venv/ /var/lib/awx/venv/sample-venv/bin/pip install psutil ansible
venvの設定
プロジェクト単位の設定
デフォルト設定以外のvenvを作成すると、プロジェクトの設定画面に「ANSIBLE環境」というメニューが現れます。このプルダウンリストからvenvを選択する事ができます。
「ANSIBLE環境」のメニューが現れない場合はF5押下を試みてください。キャッシュ等の問題でメニューが表示されない事もあります。
この操作をCLIまたはAPIで実行する例は以下の通りです。以下実行例のproject_idは環境に応じて適宜変更ください。
CLIを使用する場合は、プロジェクトはidだけでなく名前で指定する事もできます。
テンプレート単位の設定
ジョブテンプレートまたはワークフローテンプレートでもvenvを設定する事ができます。
この操作をCLIまたはAPIで実行する例は以下の通りです。以下実行例のjob_template_idは環境に応じて適宜変更ください。
CLIを使用する場合は、ジョブテンプレートはidだけでなく名前で指定する事もできます。