【PlayBook概要】構築方法 2章:ホスト及びユーザ
Playbookの各Playについて
インフラストラクチャー内のどのマシンを対象にするか どのリモートユーザがステップ(タスクと呼ばれる)を完了するか選択できます。
hosts
行は、パターン: ホストおよびグループを対象とするのドキュメントで説明されているように
コロンで区切られた1つ以上のグループまたはホストパターンのリストです。
remote_user
は、ユーザーアカウントです。
Note
remote_user
パラメーターは、以前はuser
と呼ばれていました。 Ansible1.4で名前が変更され userモジュール(リモートシステムでユーザを作成するために使用)との区別がより明確になりました。
リモートユーザは、タスクごとに定義することも出来ます。
- hosts: webservers remote_user: root tasks: - name: test connection ping: remote_user: yourname
別のユーザとしての実行に関するサポートも利用可能です。権限昇格の理解:becomeを参照
- hosts: webservers remote_user: yourname become: yes
Becomeコマンド
become
キーワードを、play
全体ではなく特定のタスクで使用することも出来ます。
- hosts: webservers remote_user: yourname tasks: service: name: nginx state: started become: yes become_method: sudo
また、自信のユーザとしてログインしてから、rootとは別のユーザになることも出来ます。
- hosts: webservers remote_user: yourname become: yes become_user: postgres
suなどの他の権限昇格メソッドを使用することも出来ます。
- hosts: webservers remote_user: yourname become: yes become_method: su
sudoのパスワードを指定する必要がある場合は
ansible-playbook
に--ask-become-pass
または-K
を付けて実行します。
become
を使用してPlaybookを実行し
Playbookがハングしているように見える場合は
おそらく権限昇格のプロンプトでスタックしており、Control-Cを使用して停止できます。
これにより、適切なパスワードを追加してPlaybookを再実行出来ます。
important
root以外のユーザに対して
become_user
を使用すると、モジュールの引数が、/tmp
のランダムな一時ファイルに簡単に記述されます。 これらは、コマンドの実行直後に削除されます。
これにより、たとえば「bob」ユーザから「timmy」ユーザに特権を変更した場合に限り発生させ、「bob」から「root」に変更し場合、または「bob」または「root」として直接ログインした場合に発生させません。
このデータが、一時的に読み込み可能(書き込み不可)であることが懸念される場合、become_userを設定して暗号化されていないパスワードを転送しないでください。
その他の場合は、/tmp
が使用されず、これは機能しません。Ansibleは、passwordパラメータをログに記載しないようにします。
ホストの実行順序を制御することもできます。
デフォルトは、イベントリーで指定されている順序に従います。
- hosts: all order: sorted gather_facts:False tasks: debug: var: inventory_hostname
順序に使用できる値は以下のとおりです。
項目 | 説明 |
---|---|
inventory | デフォルトです。インベントリーで「提供されたとおり」の順序になります。 |
reverse_inventory | 名前が示すように、インベントリーで「提供されたとおり」のものと逆の順序になります |
sorted | ホストの名前をアルファベット順で並べます |
reverse_sorted | ホストの名前を逆アルファベット順で並べます |
shuffle | ホストは実行ごとにランダムに並べられます |