Spec-Zone.ru › Ansible

Пути поиска в Ansible

Вы можете управлять путями, по которым Ansible ищет ресурсы на управляющем узле (включая конфигурацию, модули, роли, ключи SSH и многое другое), а также ресурсы на управляемых вами удалённых узлах. По возможности указывайте абсолютные пути, чтобы сообщить Ansible, где искать ресурсы. Однако абсолютные пути не всегда удобны. На этой странице описано, как Ansible интерпретирует относительные пути поиска, а также как устранить неполадки, если Ansible не может найти нужный ресурс.

  • Пути к файлам конфигурации
  • Пути в задачах

    • Разрешение локальных относительных путей

      • Устранение неполадок с путями поиска

Пути к файлам конфигурации

По умолчанию такие пути должны быть относительными к файлу конфигурации. Для некоторых из них явно указано, что они задаются относительно текущего рабочего каталога или плейбука. Например, для ключей SSH используется текущий рабочий каталог, поскольку так же поступают базовые инструменты.

Пути в задачах

Относительные пути, используемые в задаче, обычно указывают на удалённые файлы и каталоги на управляемых узлах. Однако пути, передаваемые плагинам поиска, и некоторые пути, используемые в плагинах действий, например путь «src» для модулей template и copy, указывают на локальные файлы и каталоги на управляющем узле.

Разрешение локальных относительных путей

Если для локального файла указан относительный путь, Ansible сначала попытается найти этот файл в роли текущей задачи, затем в других ролях, которые включили текущую роль или от которых она зависит, затем относительно файла, в котором определена задача, и, наконец, относительно текущего плейбука. Будет выбран первый найденный подходящий файл. Таким образом, если существует несколько файлов с одинаковым именем, Ansible найдёт файл, который находится ближе всего к текущей задаче и, скорее всего, является нужным.

В частности, Ansible ищет файл в следующем порядке:

  1. В текущей роли.

    1. В соответствующем подкаталоге: «files», «vars», «templates» или «tasks» — в зависимости от типа файла, который ищет Ansible.
    2. Непосредственно в каталоге роли.
  2. Как в пункте 1, в родительской роли, которая вызвала текущую роль с помощью include_role, import_role или через зависимость роли. Если у родительской роли есть собственная родительская роль, Ansible повторит этот шаг для неё.
  3. Как в пункте 1, в каталоге файла текущей задачи.
  4. Как в пункте 1, в каталоге файла текущего плейбука.

Ansible не ищет локальные файлы в текущем рабочем каталоге, то есть в каталоге, из которого вы запускаете Ansible.

Примечание

  • Текущий рабочий каталог может различаться в зависимости от плагина подключения и от того, выполняется ли действие локально или удалённо. Для удалённого выполнения это обычно каталог, в который пользователь попадает при входе через командную оболочку. Для локального выполнения это каталог, из которого вы запустили Ansible, или в некоторых случаях каталог плейбука.
  • Контекст путей поиска является накопительным: при разрешении путей к файлам Ansible использует «стек» контекстов. При разрешении локальных относительных путей к файлам в задачах наивысший приоритет в стеке имеет контекст роли, включающей задачи с инструкцией include_role или import_role. Если вы импортируете задачи с помощью инструкций include_task или import_task, Ansible использует контекст импортирующего файла.

Устранение неполадок с путями поиска

При выполнении Ansible переменная ansible_search_path будет содержать пути, по которым выполнялся поиск, в порядке поиска, но без перечисления их подкаталогов. Если запустить Ansible с уровнем подробности 5, передав аргумент -vvvvv, Ansible будет сообщать о каждом каталоге по мере поиска, за исключением случаев поиска файла задач.

© 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/playbook_guide/playbook_pathing.html

Spec-Zone.ru

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