Ansible Tower(AWX) のvenv設定方法

スポンサーリンク

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押下を試みてください。キャッシュ等の問題でメニューが表示されない事もあります。

Ansible Tower プロジェクト単位のvenv設定

この操作をCLIまたはAPIで実行する例は以下の通りです。以下実行例のproject_idは環境に応じて適宜変更ください。

CLIを使用する場合は、プロジェクトはidだけでなく名前で指定する事もできます。

CLI操作
PROJECT_ID=<project_id>
awx projects modify ${PROJECT_ID} \
  --custom_virtualenv "/var/lib/awx/venv/sample-venv/"
API操作
PROJECT_ID=<project_id>
curl -XPATCH -u admin:P@ssw0rd \
  --header "Content-Type: application/json" \
  -d @- http://localhost/api/v2/projects/${PROJECT_ID}/ << EOF
{
  "custom_virtualenv": "/var/lib/awx/venv/sample-venv/"
}
EOF

テンプレート単位の設定

ジョブテンプレートまたはワークフローテンプレートでもvenvを設定する事ができます。

Ansible Tower ジョブテンプレート単位のvenv設定

この操作をCLIまたはAPIで実行する例は以下の通りです。以下実行例のjob_template_idは環境に応じて適宜変更ください。

CLIを使用する場合は、ジョブテンプレートはidだけでなく名前で指定する事もできます。

CLI操作
JOB_TEMPLATE_ID=<job_template_id>
awx job_templates modify ${JOB_TEMPLATE_ID} \
  --custom_virtualenv "/var/lib/awx/venv/sample-venv/"
API操作
JOB_TEMPLATE_ID=<job_template_id>
curl -XPATCH -u admin:P@ssw0rd \
  --header "Content-Type: application/json" \
  -d @- http://localhost/api/v2/job_templates/${JOB_TEMPLATE_ID}/ << EOF
{
  "custom_virtualenv": "/var/lib/awx/venv/sample-venv/"
}
EOF
タイトルとURLをコピーしました