自宅ではAnsibleを用いて各種作業の自動化を進めている。Ansibleのインストール手順は以下に記載している。
上記は、2022年7月にインストールした記事であり、Ansibleのバージョンが6.0.0とかなり古くなっていた。
Ansibleのバージョン情報は、以下URLから確認することができ、Ansible core 2.13に該当するAnsible 6.xはすでにUnmaintained (end of life)
となっている。
そこで今回、Ansibleを6.0.0 (core 2.13) から 8.1.0 (core 2.15) へバージョンアップすることにした。
環境
コントロールノードとなるOSは、AlmaLinuxを用いる。ただし、Red Hat系のディストリビューションであるCentOSやRocky Linuxなどでも同様の手順で作業ができるだろう。
- OS : AlmaLinux 8.5
- Python : 3.8 -> 3.9
- Ansible : 6.0.0 -> 8.1.0
Ansibleバージョンアップ手順
1. pipを最新バージョンに更新
Ansibleインストール前に、pip自体をバージョンアップする。
# python3 -m pip install --upgrade pip
2. インストール可能なAnsibleのバージョンを確認
pipを使ってインストール可能なバージョンを確認してみる。pip install [インストールモジュール名]==
のように対象バージョンを省略して記載すると、インストール可能なバージョンの一覧が表示される。
以下の通り、Python 3.8の場合は、Ansible 6.xまでしか表示されない。そのため、以降の手順でPython 3.9のインストールを行うことにする。
# python3 -m pip install --upgrade ansible==
~(中略)~
ansible== (from versions: (中略) 6.0.0, 6.1.0, 6.2.0,
6.3.0, 6.4.0, 6.5.0, 6.6.0, 6.7.0)
ERROR: No matching distribution found for ansible==
3. Python 3.9をインストール
Ansibleを利用する場合、Pythonも対応するバージョンを使用する必要がある。例えば、最近のバージョンでは以下のバージョン制約がある。
Ansible | Python |
---|---|
8.x | 3.9-3.11 |
7.x | 3.9-3.11 |
6.x | 3.8-3.10 |
今回、Ansibleのバージョンは8.1.0となることから、AlmaLinux 8.xでインストール可能なPython 3.9をインストールする。
# dnf install python39 -y
4. 通常使用するPythonの入れ替え
通常利用するPythonをPython 3.6から3.8に変更するため、alternatives
を使って、以下の通り設定する。
# ls -l /usr/bin/python3*
lrwxrwxrwx 1 root root 25 7月 1 2022 /usr/bin/python3 -> /etc/alternatives/python3
lrwxrwxrwx 1 root root 31 10月 10 2021 /usr/bin/python3.6 -> /usr/libexec/platform-python3.6
lrwxrwxrwx 1 root root 32 10月 10 2021 /usr/bin/python3.6m -> /usr/libexec/platform-python3.6m
-rwxr-xr-x 1 root root 7760 4月 21 2022 /usr/bin/python3.8
-rwxr-xr-x 1 root root 7768 4月 4 01:41 /usr/bin/python3.9
# alternatives --list
libnssckbi.so.x86_64 auto /usr/lib64/pkcs11/p11-kit-trust.so
python auto /usr/libexec/no-python
ifup auto /usr/libexec/nm-ifup
cifs-idmap-plugin auto /usr/lib64/cifs-utils/cifs_idmap_sss.so
python3 manual /usr/bin/python3.8
libwbclient.so.0.15-64 auto /usr/lib64/samba/wbclient/libwbclient.so.0.15
# alternatives --set python3 /usr/bin/python3.9
# alternatives --list
libnssckbi.so.x86_64 auto /usr/lib64/pkcs11/p11-kit-trust.so
python auto /usr/libexec/no-python
ifup auto /usr/libexec/nm-ifup
cifs-idmap-plugin auto /usr/lib64/cifs-utils/cifs_idmap_sss.so
python3 manual /usr/bin/python3.9
libwbclient.so.0.15-64 auto /usr/lib64/samba/wbclient/libwbclient.so.0.15
5. 再度、インストール可能なAnsibleのバージョンを確認
再度、インストール可能なAnsibleのバージョンを確認する。今度は、8.xのバージョンがインストール可能となっていることがわかる。
# python3 -m pip install --upgrade ansible==
~(中略)~
ansible== (from versions: (中略) 6.0.0, 6.1.0, 6.2.0,
6.3.0, 6.4.0, 6.5.0, 6.6.0, 6.7.0, 7.0.0a1, 7.0.0a2,
7.0.0b1, 7.0.0rc1, 7.0.0, 7.1.0, 7.2.0, 7.3.0, 7.4.0,
7.5.0, 7.6.0, 7.7.0, 8.0.0a1, 8.0.0a2, 8.0.0a3,
8.0.0b1, 8.0.0rc1, 8.0.0, 8.1.0)
ERROR: No matching distribution found for ansible==
6. Ansibleバージョンアップ
今回は、Ansible 8.1.0のバージョンを指定して、以下の通りAnsibleをインストールする。
# python3 -m pip install ansible==8.1.0
問題なくインストールされたことを以下コマンドで確認する。Ansible 8.1.0がインストールされ、ansible
コマンドの表示バージョンがansible core 2.15となっていることがわかる。
# pip3 list
Package Version
------------------- -------
ansible 8.1.0
ansible-core 2.15.1
cffi 1.15.1
cryptography 41.0.1
importlib-resources 5.0.7
Jinja2 3.1.2
MarkupSafe 2.1.3
packaging 23.1
pip 20.2.4
pycparser 2.21
PyYAML 6.0
resolvelib 1.0.1
setuptools 50.3.2
# ansible --version
ansible [core 2.15.1]
config file = /etc/ansible/ansible.cfg
configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/local/lib/python3.9/site-packages/ansible
ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections
executable location = /usr/local/bin/ansible
python version = 3.9.16 (main, Apr 3 2023, 12:39:37) [GCC 8.5.0 20210514 (Red Hat 8.5.0-18)] (/usr/bin/python3)
jinja version = 3.1.2
libyaml = True
7. Ansible関連のPythonモジュールを追加
最後に、Ansibleを実行する際に必要となるPythonモジュールをインストールする。
私の環境の場合は以下をインストールした。
モジュール | 用途 |
---|---|
ansible-lint | Ansible Lint(構文チェックツール)本体。 |
jmespath | Ansible Lintの構文チェックで利用されるモジュール。 |
pywinrm | Windows操作用モジュール。 |
pyvmomi | vSphere操作用モジュール。 |
zabbix-api | Zabbix操作用モジュール。 |
passlib | パスワードハッシュ用モジュール。 |
# python3 -m pip install ansible-lint jmespath
# python3 -m pip install pywinrm pyvmomi zabbix-api passlib
以上で、Ansibleを6.0.0 (core 2.13) から 8.1.0 (core 2.15) へバージョンアップする手順は完了となる。
バージョンアップ後もほとんどのPlaybookはそのまま実行させることができたが、Zabbix操作のPlaybookは接続時の指定方法が変更となっており、そのままでは実行できなかった。Ansibleを用いたZabbixの操作方法の最新手順は、以下別記事に記載する。
0 件のコメント:
コメントを投稿