我无法找到的文档的答案,无论是我能找到一个例子:有没有可能在其他role/defaults/
然后main.yml
命名文件?我的意思是,main.yml
是具有默认值的文件的唯一有效名称?Ansible角色。默认值
回答
通过本文档的声音;
http://docs.ansible.com/ansible/playbooks_roles.html#roles
角色只是自动化围绕“包括”指令如上所述 ,真不含有超出一些 改进多少额外的魔法搜索路径处理为引用的文件。但是, 可以是一件大事!
这将指定下列行为,为每个角色的“x”:
如果角色/ X// main.yml存在,其中所列的任务将被添加 到播放任务
如果角色/ X /处理/ main.yml存在,处理程序列出 在其中将被添加到播放
如果角色/ X /瓦尔/ main.yml存在,其中所列 变量将被添加到播放
如果 角色/ X /默认/ main.yml存在,其中列出的变量将是 添加到播放
如果角色/ X /元/ main.yml存在,其中所列的任何角色 依赖将被添加到角色(1.3 及更高版本)的任何副本,脚本,模板或列表中包括(在角色) 可以在角色/ X/{文件,模板,任务}引用文件的任务/(DIR取决于 的任务),而不必以相对或绝对路径
问:我的意思是,main.yml t他只有一个有缺省值的文件的有效名称?
- 答:听起来就像它是只有当你想要自动加载特定的var_files为该角色和自动include
任务文件。
问:是否有可能命名文件
答:是的,它只是意味着在剧本,你必须使用include
指令,并明确其指向唯一的任务的文件名。
例子:
- name: Do role
hosts: localhost
tasks:
- include: roles/operations/tasks/installProgram.yml
Ansible将查找在任务,变量,处理程序等默认的角色/目录。角色/默认只是他们的文档中提供的示例。您可以按不同的方式组织您的角色以满足您的需求例如,我有这样的建立;
roles/windows/<somerole>/tasks/main.yml
roles/linux/<somerole>/tasks/main.yml
main.yml是运行剧本时会被自动加载(通过“默认”)的唯一文件。如果您想要指定另一个文件名称,您需要使用include函数并指向您的文件,如上所述。
“Best Practices”指南对目录结构提供了一些很好的见解。
- 1. 在Ansible中的多个角色之间分享默认值?
- 2. 角色默认变量中的Ansible递归循环
- 3. 分享Ansible角色
- 4. 覆盖Ansible模块选项默认值
- 5. Ansible序列化角色
- 6. 如何组织Ansible角色?
- 7. Ansible中缺少jenkins_configure_proxy角色
- 8. Ansible角色YAML错误
- 9. Ansible角色全局变量
- 10. Woocommerce购买后的默认角色和角色
- 11. Glassfish 3.1默认主体角色映射
- 12. 定义Ansible变量的角色与操作系统特定的默认值,可以轻松覆盖
- 13. 默认蓝色
- 14. 角2:多选择没有默认值
- 15. 角度2选择选项默认值
- 16. 角默认NG选项选择值
- 17. 设置默认值与角JS
- 18. 角2不能设置默认值
- 19. Ansible角色取决于未运行多次的其他角色
- 20. 重命名角色/角色名称/任务/ main.yml在Ansible
- 21. 如何从Ansible中的其他角色调用角色?
- 22. 角选择默认
- 23. Ansible玩没有默认主机
- 24. Ansible自组织命令默认用户
- 25. 变色龙模板:默认值'tal:switch'
- 26. PropertyGrid中,默认值,未知色彩
- 27. Ansible:角色的任务结构
- 28. ansible galaxy - 从回购安装角色
- 29. ansible角色无法找到模块
- 30. Ansible:安装角色包并运行它
如果我命名默认文件'role/defaults/a.yml',然后在我的任务中包含include语句(不确定是否可能),它会真的*默认*吗?它会被覆盖吗? Ansible如何知道这包括必须具有较低的优先级作为常规变量? – madhead
Ansible新手在这里。尽管如此,我的歉意并不确定。我想当你使用'include'语句时,它仅仅意味着'hey运行这个yml脚本',并且它没有像引用文本中提到的所有角色魔法,比如自动变量加载。 –