Переменная, которая имеет путь к текущему ansible-playbook, который выполняется?
есть ли переменная ansible, которая имеет абсолютный путь к текущему ansible-playbook, который выполняется?
контекст:
Я запускаю / создаю ansible скрипт против localhost чтобы настроить докер mysql и желая смонтировать объем данных относительно сценария ansible.
например, допустим, я проверяю репозиторий на ~/branch1/ а потом я бегу ansible-playbook dev.yml Я думал, что он должен сохранить объем ~/branch1/.docker_volume/. Если бы я побежал от него ~/branch2 затем он должен настроить громкость на ~/branch2/.docker_volume/.
5 ответов:
кажется, нет переменной, которая содержит именно то, что вы хотите.
со ссылкой документы:также доступна,
inventory_dir- Это путь к каталог Файл хоста инвентаризации Ansible,inventory_file- это путь и имя файла, указывающее на файл узла инвентаризации Ansible.playbook_dir содержит каталог базы playbook.
и наконец,
role_pathбудет возвращать текущее путь к роли (с тех пор 1.8). Это будет работать только внутри роли.зависит от вашей установки, те или
$ pwdрешение может быть достаточно.
к сожалению, нет. На самом деле абсолютный путь-это немного бессмысленно (и непонятным) в контексте того, как работает Анзибль. В двух словах, когда вы вызываете playbook, то для каждой задачи Ansible физически копирует модуль, связанный с задачей, во временный каталог на целевой машине, а затем вызывает модуль с необходимыми параметрами. Поэтому абсолютный путь на целевой машине-это просто временный каталог, который содержит только несколько временных файлов внутри него, и он даже не включает в себя полный сборник пьес. Кроме того, знание полного пути файла на сервере Ansible практически бесполезно на целевой машине, если вы не реплицируете все дерево каталогов Ansible на цели.
чтобы увидеть все переменные, которые определены Ansible вы можете просто запустить следующую команду:
$ ansible -m setup hostnameпо какой причине вы думаете, что нужно знать абсолютный путь к книге?
я использовал playbook, как это, чтобы проверить свои роли локально:
--- - hosts: localhost roles: - role: .но это перестало работать с Ansible v2.2.
Я отладил вышеупомянутое решение
--- - hosts: all tasks: - name: Find out playbooks path shell: pwd register: playbook_path_output - debug: var=playbook_path_output.stdoutи он произвел мой домашний каталог, а не"текущий рабочий каталог"
Я договорился с
--- - hosts: all roles: - role: '{{playbook_dir}}'на вышеуказанное решение.
для этой цели нет встроенной переменной, но вы всегда можете узнать абсолютный путь playbook с помощью команды "pwd" и зарегистрировать его выход в переменную.
- name: Find out playbook's path shell: pwd register: playbook_path_output - debug: debug: var=playbook_path_output.stdoutтеперь путь доступен в переменной playbook_path_output.стандартный вывод
Comments