Ubuntu 26.04 LTS での sudo 問題 : hkob の雑記録 (530)

はじめに

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

おわりに

先週金曜日からほぼずっと書類作成に追われているので、授業準備も直前になってしまっていました。とりあえず予備実験だけはやる時間があったので、授業中にトラブらなくてよかったです。この世界は何が急に変更になるかわからないので、毎年こうやって新しいものを試しておくことは必要ですね。

hkob.notion.site