有没有办法使用 host_vars/ 或 group vars/ 或者就此而言 defaults/ 或任何类型的变量插件,some_playbook.yml
它们使用自定义集合。导入的角色看不到任何变量。
# some_collection
galaxy.yml
playbooks
|_playbook.yml
roles
|_autopatch <-- is templated i.e. do auto patching and take "datetime" as variable
|_role2
host_vars 的理想情况,因为它可以是每个主机。显然,如果我在集群中有 2 台服务器,我无法硬编码日期并让它们同时重新启动。
inventory
collections.yml
group_vars
host_vars
some_playbook.yml
---
# some_playbook.yml
- hosts: all
name:
tasks:
import_role: namespace.some_collection.autopatch
现在我得到
TASK [namespace.some_collection.autopatch : Setup autopatch cron file] *****************************************************************************************************************
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: ansible.errors.AnsibleUndefinedVariable: 'datetime' is undefined
现在,我可以做到这一点,但它并不能真正与hosts: all
.
tasks:
import_role: namespace.some_collection.autopatch
vars:
datetime: "yolo"