Неявный «localhost»
Когда вы пытаетесь обратиться к localhost и он не определён в инвентаре, Ansible создаст для вас неявный:
- 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», но вы не предоставили его, мы создаём его для вас. Этот хост определён с определёнными переменными подключения, эквивалентными этому в инвентаре:
...
hosts:
localhost:
vars:
ansible_connection: local
ansible_python_interpreter: "{{ansible_playbook_python}}"
Это гарантирует, что для выполнения задач локально используется правильное подключение и Python. Вы можете переопределить встроенную неявную версию, создав запись хоста localhost в вашем инвентаре. В этот момент все неявные поведения игнорируются; запись localhost в инвентаре обрабатывается как любой другой хост. Применяются переменные группы и хоста, включая переменные подключения, которые включают настройку ansible_python_interpreter. Это также повлияет на delegate_to: localhost и local_action, последнее из которых является псевдонимом для первого.
Примечание
- Этот хост нельзя выбрать через какую-либо группу, однако он будет использовать переменные из
host_varsи из группы «all». - Магические переменные
inventory_fileиinventory_dirнедоступны для неявного localhost, так как зависят от каждого хоста в инвентаре. - Этот неявный хост также срабатывает при использовании
127.0.0.1или::1, так как они представляют собой IPv4 и IPv6 представления «localhost». - Несмотря на то, что существует множество способов его создания, неявный localhost будет только один, используя имя, первое использованное для его создания.
- Наличие
connection: localНЕ запускает неявный localhost, вы просто меняете подключение дляinventory_hostname.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.7/inventory/implicit_localhost.html