Запуск подзадачи роли в пьесе Ansible разрывает относительные пути
Я ищу способ запуска роли или части роли, включенной в сборник пьес, из корня моего проекта.
Что мне нужно для того, чтобы иметь возможность запускать часть роли, как игровую книгу, чтобы мне не нужно было запускать что-то вроде (см. Пример ниже):
ansible-playbook roles/role1/tasks/upgrade.yml
Однако мне трудно понять, как решить проблему относительных путей.
Проблема в том, что, если я вложил "Включения", путь к vars, шаблонам и т. Д. Больше не будет корректным, если я выполняю часть роли в сборнике пьес или если я запускаю саму роль.
.
+-- plb_run_role1.yml
+-- plb_upgrade.yml
+-- roles
+-- role1
+-- tasks
| +-- main.yml
| +-- task1.yml
| +-- upgrade.yml
+-- templates
| +-- a-template.j2
+-- vars
+-- ftp-credentials.yml
Playbook для запуска полной роли role1. plb_run_role1.yml:
#!/usr/bin/env ansible-playbook
---
- hosts: appservers
roles:
- role: role1
Playbook для запуска просто задачи роли role1. plb_upgrade.yml:
#!/usr/bin/env ansible-playbook
---
- import_playbook: roles/role1/tasks/upgrade.yml
Роли / Role1/ задачи /main.yml:
---
- include_tasks: task1.yml
Задача, которая называется ролью, но может также называться "автономной"
Роли /role1/ задачи /task1.yml
---
- include_vars: ../vars/some-vars.yml => If I call ./plb_upgrade.yml
- include_vars: some-vars.yml => If I call ./plb_run_role1.yml
- name: copy the user profile update script
template:
src: ../templates/a-template.j2 => If I call ./plb_upgrade.yml
src: a-template.j2 => If I call ./plb_run_role1.yml
dest: '/etc/a-template'
Роли /role1/ задачи /upgrade.yml:
---
- include_tasks: set_iptables.yml
Есть ли способ запустить роль, часть роли и правильно ли определить путь?
1 ответ
Существует очень простой способ запустить часть роли (ansible 2.4+).
import_role
задача может выполнять определенный список задач из роли:
- name: Run foo from role bar
import_role:
name: bar
tasks_from: bar
Роль 'bar' должна иметь 'tasks/foo.yaml' для выполнения.
Подробности смотрите в описании import_role: https://docs.ansible.com/ansible/2.4/import_role_module.html