pipでansible をインストールする - aktnk/til GitHub Wiki
WSL2上の Ubuntu 20.04 LTS環境に ansible をインストール
解決したいこと
経緯
- Ansibleをインストールするに記載したように、AnsibleのドキュメントInstalling Ansible on Ubuntuに従い、
PPAを使いインストールして使っていた。 - Unbuntu24.04LTS環境にAnsibleを使い、Docker環境のインストールを実施したところ、CustomHPPTConnectionでcert_fileに関するエラーが発生してDockerのインストールが途中で止まってしまう。
原因
- 調べた結果、原因は過去にあったurls.pyに関する不具合で、既に修正済みされている。
- Ubuntu20.04LTSにPPAを使い古いAnsible環境を使用していることが原因と考えた。
対応
- AnsibleのドキュメントInstalling and upgrading Ansible with pipを参考に、uv を使いpython3の 最新環境にansibleをインストールする
前提条件
- uvがインストール済みであること
- WSL2上のUbuntu20.04 LTS
ansibleインストール手順
- 最新のpythonをインストール
$ uv python install- python3.13がインストールされた
$ uv python list cpython-3.14.0rc2-linux-x86_64-gnu <download available> cpython-3.14.0rc2+freethreaded-linux-x86_64-gnu <download available> cpython-3.13.7-linux-x86_64-gnu .local/bin/python3.13 -> .local/share/uv/python/cpython-3.13.7-linux-x86_64-gnu/bin/python3.13 cpython-3.13.7-linux-x86_64-gnu .local/share/uv/python/cpython-3.13.7-linux-x86_64-gnu/bin/python3.13 cpython-3.13.7+freethreaded-linux-x86_64-gnu <download available> <省略> cpython-3.8.20-linux-x86_64-gnu <download available> cpython-3.8.10-linux-x86_64-gnu /usr/bin/python3.8 cpython-3.8.10-linux-x86_64-gnu /usr/bin/python3 -> python3.8 pypy-3.11.13-linux-x86_64-gnu <download available> <省略> graalpy-3.8.5-linux-x86_64-gnu <download available> $ - ansibleの作業ディレクトリで、python 仮想環境を作成
$ cd ansible $ uv venv Using CPython 3.13.7 Creating virtual environment at: .venv Activate with: source .venv/bin/activate $ - 仮想環境を有効化し、ansibleをインストール
$ source .venv/bin/activate (ansible) $ uv pip install ansible Resolved 10 packages in 539ms Prepared 10 packages in 4.79s Installed 10 packages in 1.04s + ansible==11.9.0 + ansible-core==2.18.8 + cffi==1.17.1 + cryptography==45.0.6 + jinja2==3.1.6 + markupsafe==3.0.2 + packaging==25.0 + pycparser==2.22 + pyyaml==6.0.2 + resolvelib==1.0.1 $ uv pip list Package Version ------------ ------- ansible 11.9.0 ansible-core 2.18.8 cffi 1.17.1 cryptography 45.0.6 jinja2 3.1.6 markupsafe 3.0.2 packaging 25.0 pycparser 2.22 pyyaml 6.0.2 resolvelib 1.0.1 - ansibleの動作確認
$ ansible -help usage: ansible [-h] [--version] [-v] [-b] [--become-method BECOME_METHOD] [--become-user BECOME_USER] [-K | --become-password-file BECOME_PASSWORD_FILE] [-i INVENTORY] [--list-hosts] [-l SUBSET] [-P POLL_INTERVAL] [-B SECONDS] [-o] [-t TREE] [--private-key PRIVATE_KEY_FILE] <省略> -u, --user REMOTE_USER connect as this user (default=None) Some actions do not make sense in Ad-Hoc (include, meta, etc) $
補足
- その後、
ansible-playbookを実行したところ、下記のエラーが発生した。$ ansible-playbook -i inventory.ini docker_install.yml --ask-become-pass -v Using /home/aktnk/.ansible.cfg as config file BECOME password: PLAY [docker install ref. https://docs.docker.com/engine/install/ubuntu/] ********************************** TASK [Gathering Facts] ************************************************************************************* fatal: [192.168.0.93]: FAILED! => {"msg": "to use the 'ssh' connection type with passwords or pkcs11_provider, you must install the sshpass program"} PLAY RECAP ************************************************************************************************* 192.168.0.93 : ok=0 changed=0 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0 - そこで
sshpassパッケージをaptでインストールしたところ、正常に動作し、docker環境がインストールできた$ sudo apt install sshpass [sudo] aktnk のパスワード: パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 以下のパッケージが新たにインストールされます: sshpass アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。 10.5 kB のアーカイブを取得する必要があります。 この操作後に追加で 30.7 kB のディスク容量が消費されます。 取得:1 http://archive.ubuntu.com/ubuntu focal/universe amd64 sshpass amd64 1.06-1 [10.5 kB] 10.5 kB を 1秒 で取得しました (16.5 kB/s) 以前に未選択のパッケージ sshpass を選択しています。 (データベースを読み込んでいます ... 現在 74742 個のファイルとディレクトリがインストールされています。) .../sshpass_1.06-1_amd64.deb を展開する準備をしています ... sshpass (1.06-1) を展開しています... sshpass (1.06-1) を設定しています ... man-db (2.9.1-1) のトリガを処理しています ... $