Запуск Vagrant с несколькими хостами с CentOS7 в качестве контроллера Ansible и несколькими клиентами дистрибутива Linux для тестирования сценариев Ansible.
Подключите общие файлы NFS в / vagrant / на контроллере Cent7 Ansible. В файле ansible.cfg роли изначально показаны как / vagrant / Ansible / roles.
Вызов роли ... Просматриваем задачи / main.yml и доходим до include_tasks: some_yaml_file.yml
который представляет собой цикл по блоку задач.
По сути, это include_tasks, который вызывает «блок» задач через другой файл, поскольку это наиболее чистый способ перебора переменной, насколько я понимаю вложенный цикл над структурой блока. Кроме того, импорт не может этого сделать при тестировании этого сценария.
- name: "Iterate over crontab files."
include_tasks: ./tasks/crontab_files.yml
loop: "{{ user_data }}"
Обратите внимание на ./tasks/
в пути. Это не относится к файлу, но возвращает ошибку, которая точно соответствует пути. Я безуспешно пробовал множество вариантов, включая полный путь на диске.
Тем не менее, функциональность задачи отлично работает как два простых сценария с определенными переменными. Однако в роли он выдает сообщение о том, что не может найти "включенный" playbook.
Игра с различными путями и косой чертой в конце добавлена к:
roles_path = /vagrant/Ansible/roles/
наконец, он правильно отображает путь на диске:
/vagrant/Ansible/roles/adim/tasks/crontab_files.yml
туда, где находится файл.
По-прежнему ошибки с:
FAILED! => {"reason": "Could not find or access '/vagrant/Ansible/roles/adim/tasks/crontab_files.yml' on the Ansible Controller."}
Что я упускаю или делаю не так?
Спасибо за помощь и отзывы!
В include_task
относительно положения папки задач роли. У вас есть следующая структура
playbook.yml
roles/tasks/main.yml
roles/tasks/crontab_files.yml
В вашем main.yml роли вам нужно определить местоположение относительно main.yml.
- name: "Iterate over crontab files."
include_tasks: crontab_files.yml
loop: "{{ user_data }}"