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環境を使用していることが原因と考えた。

対応

前提条件

  • uvがインストール済みであること
  • WSL2上のUbuntu20.04 LTS

ansibleインストール手順

  1. 最新の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>
    $
    
  2. ansibleの作業ディレクトリで、python 仮想環境を作成
    $ cd ansible
    $ uv venv
    Using CPython 3.13.7
    Creating virtual environment at: .venv
    Activate with: source .venv/bin/activate
    $
    
  3. 仮想環境を有効化し、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
    
  4. 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) のトリガを処理しています ...
     $