「sudo pip3 install ansible==2.9.20」の実行でエラーが発生

伊藤雅人氏:それでは「気軽にsudo pip3 install ansibleを実行して、Ansible Towerでエラーが起きた話」をしたいと思います。(スライドを指して)やらかした話なので、途中暗くなってもいいように明るい色を使っています。

私のAnsible歴ですが、3年くらい前からAnsibleを触り始め、今はAnsible導入案件のPMやAnsibleのトレーニング講師をしています。本日はよろしくお願いします。

今回の発表内容です。1つ目は「sudo pip3 install ansibleして、さっきまで動いていたジョブテンプレートがおかしくなった!」話です。もう1つは、「(上記の10分後)sudo pip3 install ansible-lintして、さっきまで動いていたジョブテンプレートがおかしくなった!」話です。この「10分後」は、たぶん「これより短いことはない」という誇張表現だと思っています。この2本について話します。

その前に、すごく簡単に「Ansible Tower」のインストール状態と実行するPlaybookについて説明します。Towerはバンドル版を使ったので、同時にAnsibleも入っています。(スライドを指して)Tower 3.7.2にAnsible 2.9.7というかたちです。pipで入れているわけではないので、もちろん「pip3 freeze」では表示されない状況です。

Playbookの内容ですが、Demo Project、Demo Job Templateで使用されているものです。1ヶ所、hostsだけlocalhostに変えています。

これを実行していきます。バージョンを合わせるために、sudo pip3 install ansible==2.9.20を実行しました。その結果、失敗しました。(スライドを指して)こちらにエラー内容が載っています。エラーが起きる前に、明らかになにかしています。動かないという報告だけではプロセスが動かないのかなど、いろいろ考えてしまうので、調査したい時にはエラー表記どおり失敗しましたと伝えるといいと思います。

(スライドを指して)実際のエラー内容です。こちらはPython関係です。検索すると、数年前から起こっている似たような事例が見つかるので、もし起きた場合は調査というより素直にアンインストールしてください。

「sudo pip3 install ansible-lint」の実行でエラーが発生

次のやらかした話です。今度は、バージョンではなく、それ以外の開発環境を整える必要がありました。「ansible」ではなく「ansible-lint」をインストールします。virtualenvの手順ががあやふやなだったので、とりあえず「sudo pip3 install ansible-lint」を実行しました。

その結果、また失敗しました。エラーが起きる前に、明らかになにかしていました。

どういうことかというと、ansible-lintをインストールすると同時にansibleも入ります。スライドの下のほうです。4系を指定すると「ansible」や「ansible-core」も一緒に入ってきます。5系にはansibleは入りません。ansibleが入らないので、もちろんansible-lintも動かない状況です。

やらかさないために注意すること

やらかしのまとめです。気軽に「sudo pip3 install ansible」を実行しない。システムワイドにインストールするのはやめましょう。ほかのansibleのバージョンを試す際には、Pythonの仮想環境を構築できるvirtualenvを利用しましょう。

また、最新バージョンを試すと、最新の4.2.0やansible-coreが入ってくるので、バージョンを指定しましょう。スライドの右下のように、ansibleのバージョンがcoreという表記に変わります。

おまけとしてvirtualenvのコマンドを載せました。もう、これだけで実行できます。私のやらかしは以上です。ご清聴ありがとうございました。