Contents
AWXにpythonのモジュールを追加する方法
Ansibleの自作モジュールを作ると標準モジュールでは使用されていないpythonモジュールを使うこともあると思います。
作成した自作モジュールを動作させる場合、必要なpythonモジュールをAWXに追加インストールしてあげる必要があります。
ただ、AWXはDockerコンテナで動作しているためDockerが稼働しているホストにpythonモジュールをインストールしてもAWX側から認識できません。
pythonモジュールを追加でインストールする場合は、テンプレートを実行するコンテナにインストールしてあげる必要があります。
pythonモジュール追加手順
コンテナへ移動
AWXでは awx_task
というコンテナでテンプレートを実行しています。
1 2 3 4 5 |
[root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a3a2b48a3bf7 ansible/awx_task:latest "/tini -- /bin/sh ..." 3 weeks ago Up 8 minutes 8052/tcp awx_task (snip) |
pythonモジュールの追加は awx_task
コンテナにする必要があります。
例えば、以下は pysphere
をインストールする手順になります。
1 2 3 4 |
[root@localhost ~]# docker exec -it awx_task bash [root@awx awx]# pip install pysphere [root@awx awx]# exit |
AWXに自作モジュールを共有する方法
やり方としては、共有ボリュームの /var/lib/awx/projects
に保存するか、awx_task
コンテナの中に移動させるやり方があります。
どちらのやり方でも問題ないですが、AWXの環境変数にも自作モジュールを保存したディレクトリパスを設定する必要があります。
設定箇所は 設定
の 追加の環境変数
です。
以下の例では ANSIBLE_LIBRARY
環境変数に /var/lib/awx/projects/module
へ自作モジュールをインストールしています。
http://docs.ansible.com/ansible/latest/reference_appendices/config.html#environment-variables
パスを追加したら 保存
をクリックします。
awx_taskコンテナの再構築
awx_task
コンテナの再構築方法です。
検証で色々といじくりまわして元に戻したい時があると思います。
コンテナ停止
awx_task
コンテナを停止します。
1 2 |
[root@localhost ~]# docker stop awx_task |
コンテナ削除
awx_task
コンテナを削除します。
1 2 3 |
[root@localhost ~]# docker rm awx_task awx_task |
イメージ削除
次に awx_task
のイメージを削除します。
1 2 3 4 5 6 7 8 9 10 |
[root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/ansible/awx_task latest 38788439772a 3 weeks ago 1.02 GB (snip) [root@localhost ~]# docker rmi 38788439772a Untagged: docker.io/ansible/awx_task:latest Untagged: docker.io/ansible/awx_task@sha256:91187b5db9b5beaa4ad00b38e74ab4ce922aac6a34a11b8e402c5f664987907a Deleted: sha256:38788439772a2b9131ec75aabc1b2d788a910713ce73797b63ca65835963972a Deleted: sha256:4f5aa3200a0c2ec53daf048967425996c8111b330dc71ce427ed8101371b6dbc |
awx_task再構築
awxのplaybookを実行します。
1 2 3 |
[root@localhost ~]# cd awx/installer/ [root@localhost installer]# ansible-playbook install.yml -i inventory |