Spec-Zone.ru › Ansible

Неявный «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».
  • Неявный localhost не отображается в специальной переменной hostvars, если в нём нет необходимости, например при использовании "{{ hostvars['localhost'] }}".
  • Специальные переменные inventory_file и inventory_dir недоступны для неявного localhost, поскольку они зависят от каждого хоста в инвентаре.
  • Этот неявный хост также создаётся при использовании 127.0.0.1 или ::1, поскольку они являются представлениями localhost в IPv4 и IPv6.
  • Хотя создать его можно разными способами, неявный localhost будет только один, и ему будет присвоено имя, использованное при первом создании.
  • Наличие connection: local НЕ приводит к созданию неявного localhost: вы просто меняете подключение для inventory_hostname.

© 2012–2018 Michael DeHaan
© 2018–2025 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/projects/ansible/latest/inventory_guide/implicit_localhost.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API