はじめに
hkob の雑記録の第530回目(連続106日目)は、Ubuntu 26.04 LTS での ansible のトラブルについて記録しておきます。
授業準備中のトラブル
月曜日の実験実習は、UTM でインストールした Ubuntu を macOS 側から ansible で設定する内容でした。昨年度まで問題なく動いていたので、念のため午前中に予備実験した時にトラブりました。実際に nginx のパッケージインストールのために、最初の Task を実行したタイミングで次のようなエラーが出ました。
fatal: [is2026]: UNREACHABLE! => {"changed": false, "msg": "Task failed: Timeout (12s) waiting for privilege escalation prompt:", "unreachable": true}
状況的には sudo パスワード入力待ちになっているが、Ansible がプロンプトを受け取れずにタイムアウトしている状況です。
プロンプトの確認
とりあえず、Ubuntu にログインして sudo したところで違和感を感じました。sudo ls としてみたところ、普段は見ないプロンプトが出ています。これだなとピンときました。
sudo ls [sudo: authenticate] Password:
そうとわかれば、ちょっと調べればこんなページに当たります。
Ansible: becomeをUbuntu 26.04 LTSでやる時の一つのワークアラウンド
なるほど、26.04 LTS では Rust で再作成し直したコマンドに差し代わっているのですね。以前のものは sudo.ws という名前で残されているようです。実際に sudo.ws コマンドを実行してみます。すると懐かしいプロンプトが表示されました。Ansible はこの文字列を待っていて、タイムアウトになるのですね。
sudo.ws ls [sudo] password for hkob:
解決策
とりあえず ansible コマンドが対応するまでは、sudo としてこの sudo.ws を使うようにしてもらうしかないようです。interpreter_python は Ubuntu 側で利用する Python のバージョンを指定するものです。最近はこれがないと警告がうざいので入れています。今回の問題は become_exe に /usr/bin/sudo.ws を設定することで対応できるようです。
[defaults] interpreter_python = /usr/bin/python3.14 [privilege_escalation] become_method = sudo become_exe = /usr/bin/sudo.ws
おわりに
先週金曜日からほぼずっと書類作成に追われているので、授業準備も直前になってしまっていました。とりあえず予備実験だけはやる時間があったので、授業中にトラブらなくてよかったです。この世界は何が急に変更になるかわからないので、毎年こうやって新しいものを試しておくことは必要ですね。