はじめに
AWX では、デフォルトの Python 環境として /var/lib/awx/venv/ansible
が利用されています。
以前から不思議だったのですが、コマンドライン版の Ansible では 2.8 から、ネットワーク機器への接続に別途 paramiko
をインストールする必要があるのですが、AWX では最初から入ってるようです。
/var/lib/awx/venv/ansible
の環境にはどのような Python パッケージが入ってるのか、調べる方法を調べたのでまとめます。
- 動作確認環境
- AWX 10.0
awx_web
コンテナ内を調べる
AWX は、さくっとインストールをすると docker-compose で起動します。
docker ps はこんな感じです。
$ sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d24c84953696 ansible/awx_task:10.0.0 "/tini -- /bin/sh -c…" 4 days ago Up 5 hours 8052/tcp awx_task 0af150cc5e53 ansible/awx_web:10.0.0 "/tini -- /bin/sh -c…" 4 days ago Up 5 hours 0.0.0.0:80->8052/tcp awx_web 9417f6e7f6a1 redis "docker-entrypoint.s…" 4 days ago Up 5 hours 6379/tcp awx_redis 45e13c7a7c17 memcached:alpine "docker-entrypoint.s…" 4 days ago Up 5 hours 11211/tcp awx_memcached 4cd1b1537087 postgres:10 "docker-entrypoint.s…" 4 days ago Up 5 hours 5432/tcp awx_postgres
このなかの、コンテナ awx_web
が /var/lib/awx/venv/ansible
の環境を持っています。
なので、以下のコマンドで pip freeze
するとパッケージ一覧が表示されます。
$ sudo docker exec awx_web /var/lib/awx/venv/ansible/bin/pip freeze
(もしかしたら awx_task
のほうなんでしょうか・・?)
実行例
ansible
はもちろん、ネットワーク機器への接続に必要な paramiko
、ncclient
、json_query
フィルターが内部的に利用する jmespath
が含まれていることが分かります。
azure-*
や boto3
、pyvmomi
、pywinrm
もありますね。
$ sudo docker exec awx_web /var/lib/awx/venv/ansible/bin/pip freeze adal==1.2.2 ansible==2.9.5 apache-libcloud==2.5.0 appdirs==1.4.3 applicationinsights==0.11.9 argcomplete==1.10.3 asn1crypto==0.24.0 azure-cli-core==2.0.35 azure-cli-nspkg==3.0.2 azure-common==1.1.11 azure-graphrbac==0.40.0 azure-keyvault==1.0.0a1 azure-mgmt-authorization==0.51.1 azure-mgmt-automation==0.1.1 azure-mgmt-batch==5.0.1 azure-mgmt-cdn==3.0.0 azure-mgmt-compute==4.4.0 azure-mgmt-containerinstance==1.4.0 azure-mgmt-containerregistry==2.0.0 azure-mgmt-containerservice==4.4.0 azure-mgmt-cosmosdb==0.5.2 azure-mgmt-devtestlabs==3.0.0 azure-mgmt-dns==2.1.0 azure-mgmt-hdinsight==0.1.0 azure-mgmt-iothub==0.7.0 azure-mgmt-keyvault==1.1.0 azure-mgmt-loganalytics==0.2.0 azure-mgmt-marketplaceordering==0.1.0 azure-mgmt-monitor==0.5.2 azure-mgmt-network==2.3.0 azure-mgmt-nspkg==3.0.2 azure-mgmt-rdbms==1.4.1 azure-mgmt-redis==5.0.0 azure-mgmt-resource==2.1.0 azure-mgmt-servicebus==0.5.3 azure-mgmt-sql==0.10.0 azure-mgmt-storage==3.1.0 azure-mgmt-trafficmanager==0.50.0 azure-mgmt-web==0.41.0 azure-nspkg==2.0.0 azure-storage==0.35.1 Babel==2.5.1 backports.ssl-match-hostname==3.5.0.1 bcrypt==3.1.7 boto==2.47.0 boto3==1.9.223 botocore==1.12.253 cachetools==3.1.1 certifi==2019.11.28 cffi==1.13.2 chardet==3.0.4 colorama==0.4.3 cryptography==2.8 decorator==4.4.1 docutils==0.15.2 dogpile.cache==0.9.0 google-auth==1.6.2 gpg==1.10.0 humanfriendly==4.18 idna==2.8 iso8601==0.1.12 isodate==0.6.0 Jinja2==2.10.1 jmespath==0.9.4 jsonpatch==1.24 jsonpointer==2.0 keystoneauth1==3.18.0 knack==0.3.3 lxml==4.4.2 MarkupSafe==1.1.1 msrest==0.6.1 msrestazure==0.5.0 munch==2.5.0 ncclient==0.6.3 netaddr==0.7.19 netifaces==0.10.9 ntlm-auth==1.4.0 oauthlib==3.1.0 openstacksdk==0.37.0 os-service-types==1.7.0 ovirt-engine-sdk-python==4.3.0 packaging==19.2 paramiko==2.7.1 pbr==5.4.4 ply==3.9 psutil==5.4.3 psycopg2==2.7.5 pyasn1==0.4.8 pyasn1-modules==0.2.7 pycparser==2.19 pycurl==7.43.0.2 Pygments==2.5.2 PyJWT==1.7.1 pykerberos==1.2.1 PyNaCl==1.3.0 pyOpenSSL==19.1.0 pyparsing==2.4.5 python-dateutil==2.8.1 pytz==2017.2 pyvmomi==6.7.3 pywinrm==0.3.0 PyYAML==5.2 requests==2.22.0 requests-credssp==1.0.2 requests-kerberos==0.12.0 requests-ntlm==1.1.0 requests-oauthlib==1.3.0 requestsexceptions==1.4.0 rpm==4.14.2 s3transfer==0.2.1 selectors2==2.0.1 selinux==2.9 six==1.13.0 stevedore==1.31.0 supervisor==4.1.0 tabulate==0.8.2 urllib3==1.25.7 virtualenv==16.7.10 xmltodict==0.12.0