Ansibleのバージョンをあげると見慣れぬエラーが
Ansible のバージョンをばばっと 2.2系にあげて ansible-playbook を実行したことろ下記の警告が出ました。
[DEPRECATION WARNING]: Instead of sudo/sudo_user, use become/become_user and make sure become_method is 'sudo' (default).
This feature will be removed in a future release. Deprecation warnings can be disabled by setting
deprecation_warnings=False in ansible.cfg.
sudoディレクティブはもうすぐいらない子になるから、bacomeディレクティブを使いましょう 的な感じかな。
公式ドキュメント によると、1.9からsudoディレクティブは非推奨になったようです。
今まで、↓のように書いていたのを
- hosts: web-servers
sudo: yes
roles:
- { role: base_centos7, tags: base_centos7 }
↓のようにすれば警告が出なくなりました。
- hosts: web-servers
become: yes
roles:
- { role: base_centos7, tags: base_centos7 }
ドキュメントを見ていて気付いたこと
becomeディレクティブを有功にすると、デフォルトでは rootユーザーに切り替わります。
rootユーザー以外に切り替えたいのであれば、become_userディレクティブを記述します。
- hosts: web-servers
become: yes
become_user: deploy
roles:
- { role: base_centos7, tags: base_centos7 }
これを調べていて知ったのですが、sudoディレクティブは必ずrootユーザーに切り替わるのではなく、sudo_userディレクティブで定義したユーザーに切り替わるということ。
「sudo」って名前なので、rootに切り替えるだけの働きを担っていると思っていたのでちょっとびっくり。
あらかじめ定義したユーザーに切り替わる、という意味ではbecomeの方があってるのかなと思いました。