LoginSignup
160

More than 5 years have passed since last update.

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

Posted at

今までは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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
160