ゆるい感じのプログラムを書きたい。

プログラムの敷居を下げて、多くの人が開発出来るように色々書いていきます!

【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 ホストは実行ごとにランダムに並べられます