Ansible: becomeをUbuntu 26.04 LTSでやる時の一つのワークアラウンド

Ansible: becomeをUbuntu 26.04 LTSでやる時の一つのワークアラウンド
Page content

sudoコマンド変わったの……

Ubuntu Serverの最新LTS、26.04 LTSが2026年4月にリリースされた。さっそくこのLTSバージョンのUbuntuで構築したサーバに、Ansibleでアクセスして、これまで通りにbecomeしようとするとどうなるか。実は、原稿執筆時点のansible core 2.16等だとタイムアウトしてしまう。

タイムアウトするのは何故かというと、Ubuntu Server 26.04 LTSにおいては、従来のsudoコマンドとプロンプトの出方が異なる、新しいsudoコマンドが実装されているためだ。そこで本記事では、ワークアラウンドとして、26.04 LTSに対しても従来と同じansible playbookを使ってbecomeできるようにする方法の一つを、書き留めたい。

ワークアラウンド

アクセス先のOSがUbuntu 26.04 LTSの場合には、sudo時に使用するコマンドを、sudoからsudo.wsに切り替えるとよい。後者のsudo.wsは、従来のsudoと同等の互換性があるコマンドとして用意されており、プロンプト表示の仕方も変わらないので、従来通りのplaybookが使えるというわけだ。

例えば、インベントリーファイル (inventory file) にて、当該サーバに対して個別指定する場合にはこのようになる。

[group_hogehoge]
server1_ubuntu2404
server2_ubuntu2604 ansible_become_exe=sudo.ws

このワークアラウンドはシンプルなので、後々不要になるときには容易に元へ戻せると思う。

参考リンク