はじめに
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 の基本機能、標準モジュールは使えることを確認しました。