Подтвердить что ты не робот

Переменная, которая имеет путь к текущей исполняемой исполняемой книге воспроизведения?

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

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

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

4b9b3361

Ответ 1

Вы можете использовать переменную playbook_dir.

Ответ 2

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

Тем не менее, цитируя документы:

Также доступно, inventory_dir - путь к каталогу, в котором хранится Файл хоста инвентаризации Ansibles, inventory_file - это путь и имя файла, указывающее на файл хоста инвентаризации Ansibles.

playbook_dir содержит базовый каталог playbook.

И, наконец, role_path вернет путь к текущей роли (так как 1,8). Это будет работать только внутри роли.

В зависимости от вашей настройки, может быть достаточно тех или другого решения $ pwd -based.

Ответ 3

К сожалению, нет. Фактически абсолютный путь является немного бессмысленным (и потенциально запутанным) в контексте того, как работает Ansible. В двух словах, когда вы вызываете playbook, то для каждой задачи Ansible физически копирует модуль, связанный с задачей во временный каталог на целевой машине, а затем вызывает модуль с необходимыми параметрами. Таким образом, абсолютный путь на целевой машине - это всего лишь временная директория, содержащая только несколько временных файлов внутри нее, и в нее даже не входит полноценная playbook. Кроме того, знание полного пути файла на сервере Ansible практически бесполезно на целевой машине, если вы не реплицируете все дерево дерева Ansible в целевые объекты.

Чтобы увидеть все переменные, которые определены Ansible, вы можете просто запустить следующую команду:

$ ansible -m setup hostname

По какой причине вы считаете, что вам нужно знать абсолютный путь к учебнику?

Ответ 4

Я использовал подобную игру, чтобы проверить локальные роли:

---
- 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}}'

для решения выше.

Ответ 5

Для этой цели встроенной переменной не существует, но вы всегда можете узнать абсолютный путь к playbook с помощью команды "pwd" и зарегистрировать ее вывод в переменной.

- name: Find out playbook path
  shell: pwd
  register: playbook_path_output
- debug: var=playbook_path_output.stdout

Теперь путь доступен в переменной playbook_path_output.stdout.