インフラエンジニアbacchiのわかったことまとめ

bacchi.me

Ansibleでsudoディレクティブが非推奨になったのでbecomeディレクティブを使おう

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の方があってるのかなと思いました。

  • B!