暗黙的な ‘localhost’¶
localhost
を参照しようとしたにもかかわらず、インベントリーにその localhost が定義されていない場合には、Ansible により暗黙的 localhost が作成されます。:
- hosts: all
tasks:
- name: check that i have log file for all hosts on my local machine
stat: path=/var/log/hosts/{{inventory_hostname}}.log
delegate_to: localhost
上記のような場合 (または local_action
) で、Ansible が ‘localhost’ に問い合わせをする必要があるにもかかわらず、localhost を作成していない場合には、Ansible で localhost が作成されます。このホストは、インベントリーにあるものと同等の特定の接続変数で定義します:
...
hosts:
localhost:
vars:
ansible_connection: local
ansible_python_interpreter: "{{ansible_playbook_python}}"
この設定により、正しい接続および Python が使用してローカルでのタスクが実行されるようになります。
インベントリーに localhost
のホストのエントリーを作成して、組み込まれた暗黙的なホストバージョンを上書きできます。この時点で、すべての暗黙的な動作は無視され、インベントリー内の localhost
は他のホストと同じように処理されます。ansible_python_interpreter
などの接続変数を含む、グループおよびホスト変数が適用されます。この設定は、delegate_to: localhost
や local_action
にも適用されます。local_action は、delegate_to: localhost のエイリアスです。
Note
- このホストはいずれのグループでもターゲットにすることはできませんが、
host_vars
と ‘all’ グループからの vars (変数) を使用します。 "{{ hostvars['localhost'] }}"
などの要求がない限り、暗黙的な localhost はhostvars
マジック変数には表示されません。- マジック変数
inventory_file
およびinventory_dir
は、各インベントリーホスト に依存するため、暗黙的な localhost では利用できません。 - この暗黙的ホストは、「localhost」の IPv4 および IPv6 の表現であるため、
127.0.0.1
または::1
を使用してもトリガーとなります。 - 作成する方法は多数ありますが、暗黙的な localhost は 1 つしかありません。これには、最初に作成したときの名前が使用されます。
connection: local
があっても暗黙的な localhost のトリガーにならない場合は、inventory_hostname
の接続を変更しているだけです。