Переменная, которая имеет путь к текущему ansible-playbook, который выполняется?



есть ли переменная ansible, которая имеет абсолютный путь к текущему ansible-playbook, который выполняется?



контекст:
Я запускаю / создаю ansible скрипт против localhost чтобы настроить докер mysql и желая смонтировать объем данных относительно сценария ansible.



например, допустим, я проверяю репозиторий на ~/branch1/ а потом я бегу ansible-playbook dev.yml Я думал, что он должен сохранить объем ~/branch1/.docker_volume/. Если бы я побежал от него ~/branch2 затем он должен настроить громкость на ~/branch2/.docker_volume/.

772   5  

5 ответов:

можно использовать playbook_dir переменной.

кажется, нет переменной, которая содержит именно то, что вы хотите.

со ссылкой документы:

также доступна, 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

    Ничего не найдено.