Есть ли доступная переменная, у которой есть абсолютный путь к текущей исполняемой ansible-playbook?
некоторый контекст:
я запускаю / создаю сценарий ansible localhost
для настройки докера mysql и хочу смонтировать том данных относительно сценария ansible.
Например, предположим, что я проверяю репозиторий, ~/branch1/
а затем запускаю, ansible-playbook dev.yml
я думал, что он должен сохранить том в ~/branch1/.docker_volume/
. Если я запустил его, ~/branch2
он должен настроить громкость на ~/branch2/.docker_volume/
.
Ответы:
Вы можете использовать
playbook_dir
переменную.источник
playbook_dir
задокументирована переменная. Не могли бы вы указать мне на документацию. ИЛИ, не могли бы вы объяснить, как вы узнали об этой переменной?Кажется, не существует переменной, которая содержит именно то, что вы хотите.
Однако, цитируя документы :
В зависимости от вашей настройки
$ pwd
может быть достаточно тех или иных решений.источник
К сожалению, нет. Фактически, абсолютный путь немного бессмысленен (и потенциально сбивает с толку) в контексте того, как работает Ansible. Вкратце, когда вы вызываете playbook, то для каждой задачи Ansible физически копирует модуль, связанный с задачей, во временный каталог на целевой машине, а затем вызывает модуль с необходимыми параметрами. Таким образом, абсолютный путь на целевой машине - это всего лишь временный каталог, который содержит только несколько временных файлов и даже не включает полную книгу воспроизведения. Кроме того, знание полного пути к файлу на сервере Ansible практически бесполезно на целевом компьютере, если вы не реплицируете все дерево каталогов Ansible на целевых объектах.
Чтобы увидеть все переменные, определенные Ansible, вы можете просто выполнить следующую команду :
По какой причине вы думаете, что вам нужно знать абсолютный путь к пьесе?
источник
local_action
модуль, означает, что для этого есть законные варианты использования.Я использовал такой сценарий, чтобы проверить свои роли на местном уровне:
но это перестало работать с Ansible v2.2.
Я отлаживал вышеупомянутое решение
и он создал мой домашний каталог, а не "текущий рабочий каталог"
Я согласился с
в соответствии с решением выше.
источник
Для этой цели нет встроенной переменной, но вы всегда можете узнать абсолютный путь к плейбуку с помощью команды «pwd» и зарегистрировать ее вывод в переменной.
Теперь путь доступен в переменной playbook_path_output.stdout
источник
pwd
не возвращает путь сценария playbook. Он возвращает текущий каталог процесса (обычноansible-playbook
). Эти два параметра не обязательно должны быть одинаковыми и зависят от того, каким образом был вызван анзибль.debug: var=ansible_env.PWD
(это дает мне каталог, из которого я выполнялansible-playbook
на моем локальном компьютере, и домашний каталог на удаленных серверах){{ lookup('env','PWD') }}