Ansible1.9からはsudo/suの代わりにbecomeを使う

  • 141
    Like
  • 0
    Comment
More than 1 year has passed since last update.

今まではplaybookをroot権限で実行したい場合に :point_down: のようにsudoディレクティブを使って書いていた。

- hosts: all
- sudo: yes

Ansible1.9からはbecomeディレクティブを使って同じことができる。

- hosts: all
- become: yes

もちろんtask毎に指定することもできる。

これだけ見ると前者の方が分かりやすく見えるが、そもそもsudoディレクティブは必ずしもrootユーザに切り替わるわけではなくsudo_userに設定されているユーザ(デフォルトはroot)に切り替わるので、例えば :point_down: のようにroot以外のユーザに切り替わるために使うこともできた。

- hosts: all
- sudo: yes
- sudo_user: deploy

Ansible1.9からはこう書ける。

- hosts: all
- become: yes
- become_user: deploy

個人的にはbecomeの方が実際の機能に即していて誤解が少ない名前だと思うし、sudoは後方互換のために残してあるものの非推奨になったらしいので今後はbecomeを使った方が良さそう。

ちなみにbecome_methodというディレクティブも追加されていて、例えばsudoではなくsuを使って権限変更をしたい場合には :point_down: のように書けばいい。

- hosts: all
- become: yes
- become_method: su

関連リンク: http://docs.ansible.com/become.html