今まではplaybookをroot権限で実行したい場合に  のように
 のようにsudoディレクティブを使って書いていた。
- hosts: all
- sudo: yes
Ansible1.9からはbecomeディレクティブを使って同じことができる。
- hosts: all
- become: yes
もちろんtask毎に指定することもできる。
これだけ見ると前者の方が分かりやすく見えるが、そもそもsudoディレクティブは必ずしもrootユーザに切り替わるわけではなくsudo_userに設定されているユーザ(デフォルトはroot)に切り替わるので、例えば  のように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