はじめに
Ansible 2.10 から、Collection による モジュール類の配布が本格化し、2.9 までの多くのモジュール類は Collection に移行しました。
これに関連して、Python のパッケージとしては ansible と、ansible-base に別れました。
ansible-baseは、Ansible の基本機能と、標準モジュールです。
ansible は、ansible-base と、Collection に移行した元標準モジュールのセットです。
pip install ansible では、ansible と ansible-base がインストールされます。
注意が必要なのは、pip uninstall ansible すると ansible がアンインストールされ、 ansible-base は残ります。
つまり、Ansible の基本機能と、標準モジュールは残ります。これらもアンインストールするには、ansible-base もアインストールする必要があります。
このあたりのパッケージに役割を理解しておかないと、少し混乱してしまうかもしれません。
この記事では、実際のログを用いて簡単に解説します。
事前状態
ansible がインストールされてない状態からはじめます。
(ansibletest) sakana@mbp16 blog % ansible zsh: command not found: ansible (ansibletest) sakana@mbp16 blog % pip freeze
何も表示されません。
ansible のインストール
pip install ansible でインストールします。
(ansibletest) sakana@mbp16 blog % pip install ansible Collecting ansible Using cached ansible-2.10.1.tar.gz (25.9 MB) Collecting ansible-base<2.11,>=2.10.2 Using cached ansible-base-2.10.2.tar.gz (6.0 MB) Collecting jinja2 Using cached Jinja2-2.11.2-py2.py3-none-any.whl (125 kB) ...(略)... Successfully installed MarkupSafe-1.1.1 PyYAML-5.3.1 ansible-2.10.1 ansible-base-2.10.2 cffi-1.14.3 cryptography-3.2 jinja2-2.11.2 packaging-20.4 pycparser-2.20 pyparsing-2.4.7 six-1.15.0 WARNING: You are using pip version 20.1.1; however, version 20.2.4 is available. You should consider upgrading via the '/Users/sakana/envs/ansibletest/bin/python3 -m pip install --upgrade pip' command.
ansible と ansible-base の両方がインストールされたことが分かります。
(ansibletest) sakana@mbp16 blog % pip freeze ansible==2.10.1 ansible-base==2.10.2 cffi==1.14.3 cryptography==3.2 Jinja2==2.11.2 MarkupSafe==1.1.1 packaging==20.4 pycparser==2.20 pyparsing==2.4.7 PyYAML==5.3.1 six==1.15.0
ansible のインストール後確認
バージョンを確認します。ansible --version では ansible-base としてのバージョンが表示されます。(ここでは 2.10.2)
(ansibletest) sakana@mbp16 blog % ansible --version ansible 2.10.2 config file = /Users/sakana/.ansible.cfg configured module search path = ['/Users/sakana/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /Users/sakana/envs/ansibletest/lib/python3.8/site-packages/ansible executable location = /Users/sakana/envs/ansibletest/bin/ansible python version = 3.8.5 (default, Jul 21 2020, 10:48:26) [Clang 11.0.3 (clang-1103.0.32.62)]
which でパスを確認すると、作業用の venv 配下であることが分かります。
(ansibletest) sakana@mbp16 blog % which ansible /Users/sakana/envs/ansibletest/bin/ansible
ansible のアンインストール
pip uninstall ansible でアンインストールします。
(ansibletest) sakana@mbp16 blog % pip uninstall ansible
Found existing installation: ansible 2.10.1
Uninstalling ansible-2.10.1:
Would remove:
/Users/sakana/envs/ansibletest/lib/python3.8/site-packages/ansible-2.10.1-py3.8.egg-info
/Users/sakana/envs/ansibletest/lib/python3.8/site-packages/ansible_collections/amazon/aws/.github/BOTMETA.yml
/Users/sakana/envs/ansibletest/lib/python3.8/site-packages/ansible_collections/amazon/aws/.github/settings.yml
/Users/sakana/envs/ansibletest/lib/python3.8/site-packages/ansible_collections/amazon/aws/.gitignore
....(略)...
/Users/sakana/envs/ansibletest/lib/python3.8/site-packages/ansible_collections/wti/remote/plugins/modules/cpm_temp_info.py
/Users/sakana/envs/ansibletest/lib/python3.8/site-packages/ansible_collections/wti/remote/plugins/modules/cpm_time_config.py
/Users/sakana/envs/ansibletest/lib/python3.8/site-packages/ansible_collections/wti/remote/plugins/modules/cpm_time_info.py
/Users/sakana/envs/ansibletest/lib/python3.8/site-packages/ansible_collections/wti/remote/plugins/modules/cpm_user.py
Proceed (y/n)? y
Successfully uninstalled ansible-2.10.1
(ansibletest) sakana@mbp16 blog %
Collection に移行した元標準モジュールがある lib/python3.8/site-packages/ansible_collections/ が消えます。
Ansible 本体機能と標準モジュールがある、lib/python3.8/site-packages/ansible/ は残ります。
ansible のアンインストール後確認
pip freeze で確認すると ansible は消えましたが、ansible-base は残っています。
(ansibletest) sakana@mbp16 blog % pip freeze ansible-base==2.10.2 cffi==1.14.3 cryptography==3.2 Jinja2==2.11.2 MarkupSafe==1.1.1 packaging==20.4 pycparser==2.20 pyparsing==2.4.7 PyYAML==5.3.1 six==1.15.0
ansible などのコマンドは引き続き使えます。この点が少々混乱するポイントかも知れません。
(ansibletest) sakana@mbp16 blog % ansible --version ansible 2.10.2 config file = /Users/sakana/.ansible.cfg configured module search path = ['/Users/sakana/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /Users/sakana/envs/ansibletest/lib/python3.8/site-packages/ansible executable location = /Users/sakana/envs/ansibletest/bin/ansible python version = 3.8.5 (default, Jul 21 2020, 10:48:26) [Clang 11.0.3 (clang-1103.0.32.62)]
Ansible 2.10 においても標準モジュールである debug モジュールも使えます。
(ansibletest) sakana@mbp16 blog % ansible -i localhost, all -m debug -a msg=pukupuku
localhost | SUCCESS => {
"msg": "pukupuku"
}
ansible-base のアンインストール
一応、 ansible-base のアンインストールもためします。
(ansibletest) sakana@mbp16 blog % pip uninstall ansible-base
Found existing installation: ansible-base 2.10.2
Uninstalling ansible-base-2.10.2:
Would remove:
/Users/sakana/envs/ansibletest/bin/ansible
/Users/sakana/envs/ansibletest/bin/ansible-config
/Users/sakana/envs/ansibletest/bin/ansible-connection
/Users/sakana/envs/ansibletest/bin/ansible-console
/Users/sakana/envs/ansibletest/bin/ansible-doc
/Users/sakana/envs/ansibletest/bin/ansible-galaxy
/Users/sakana/envs/ansibletest/bin/ansible-inventory
/Users/sakana/envs/ansibletest/bin/ansible-playbook
/Users/sakana/envs/ansibletest/bin/ansible-pull
/Users/sakana/envs/ansibletest/bin/ansible-test
/Users/sakana/envs/ansibletest/bin/ansible-vault
/Users/sakana/envs/ansibletest/lib/python3.8/site-packages/ansible/*
/Users/sakana/envs/ansibletest/lib/python3.8/site-packages/ansible_base-2.10.2-py3.8.egg-info
/Users/sakana/envs/ansibletest/lib/python3.8/site-packages/ansible_test/*
Would not remove (might be manually added):
/Users/sakana/envs/ansibletest/lib/python3.8/site-packages/ansible_test/_data/injector/ansible-inventory
Proceed (y/n)? y
Successfully uninstalled ansible-base-2.10.2
ansible-base のアンインストール後確認
いよいよ ansible コマンドもなくなり、pip freeze で確認しても ansible-base がでなくなりました。
(ansibletest) sakana@mbp16 blog % ansible --version zsh: command not found: ansible (ansibletest) sakana@mbp16 blog % pip freeze cffi==1.14.3 cryptography==3.2 Jinja2==2.11.2 MarkupSafe==1.1.1 packaging==20.4 pycparser==2.20 pyparsing==2.4.7 PyYAML==5.3.1 six==1.15.0
おわりに
pip unsintall ansible しても ansible-base が残るため、Ansible の基本機能、標準モジュールは使えることを確認しました。