今まではplaybookをroot権限で実行したい場合に のようにsudo
ディレクティブを使って書いていた。
- hosts: all
- sudo: yes
Ansible1.9からはbecome
ディレクティブを使って同じことができる。
- hosts: all
- become: yes
もちろんtask毎に指定することもできる。
これだけ見ると前者の方が分かりやすく見えるが、そもそもsudo
ディレクティブは必ずしもrootユーザに切り替わるわけではなくsudo_user
に設定されているユーザ(デフォルトはroot)に切り替わるので、例えば のようにroot以外のユーザに切り替わるために使うこともできた。
- hosts: all
- sudo: yes
- sudo_user: deploy
Ansible1.9からはこう書ける。
- hosts: all
- become: yes
- become_user: deploy
個人的にはbecome
の方が実際の機能に即していて誤解が少ない名前だと思うし、sudo
は後方互換のために残してあるものの非推奨になったらしいので今後はbecome
を使った方が良さそう。
ちなみにbecome_method
というディレクティブも追加されていて、例えばsudoではなくsuを使って権限変更をしたい場合には のように書けばいい。
- hosts: all
- become: yes
- become_method: su