[Ansible]Task単位でsudo有無を切り替える

2015.01.06

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

望月です。Ansibleの超小ネタです。

Ansibleの実行ユーザを変えたい

Ansible PlaybookでOSのセットアップをする際、基本的にはsudoでの実行やrootユーザで接続することが多いです。
ですが一部のセットアップはアプリケーションの実行ユーザで行いたい、ということがあると思います。例えばアプリケーション用のディレクトリ作成や依存ライブラリのインストールなどですね。

そういう時は以下の様に書いておけばOKです。

- hosts: all
- sudo: yes
- tasks:
  - name: example executed by root privilege with sudo
    shell: "echo 'this is root user'"
  - name: example executed by general privilege
    shell: "echo 'this is not root user'"
    sudo: no

2行目のsudo: yesでこのplaybook全体に対してsudoが有効になります。その上で各タスク単位でsudo: noを記述することにより、Ansibleの接続ユーザ権限でコマンドが実行されるようになります。
上記の例では8行目の記述のおかげで2番目のタスクが一般ユーザ権限で実行されるようになります。

覚えておくと役に立つかもしれません。スニペットとしてご活用下さい。