所以我试图围绕Ansible围绕我的脑袋,并构建一个简单的LEMP堆栈。我决定与nested playbook合作,因为我想在学习的同时尽可能多地进行划分。我遇到了这个问题,我需要传递一些变量,比如mysql的root密码。现在我想知道是否有任何最佳做法将主要剧本的变奏曲传递给单独的剧本,或者是否应该在各个子剧本中设置变奏曲?我使用this repo作为我自己项目的基础。我还想知道,如果在子Playbook中设置了默认值,主Playbook中设置的变量是否会覆盖此值,那么覆盖如何与varible一起工作?Ansible将vars传递给嵌套的playbooks的最佳实践?
3
A
回答
9
我想最佳实践是,如果可能的话,重用现有的代码。如果您还没有听说过,Ansible有Galaxy网站https://galaxy.ansible.com/,人们可以在这里共享各种随时可以使用的角色。一个这样的角色是mysql(及其相关的github回购是在https://github.com/bennojoy/mysql)
您不仅可以使用在你的剧本那个角色,但该网页也有例子,说明如何将参数/变量传递给你的角色:
4)完全安装/配置的MySQL服务器,主从复制。
- hosts: master
roles:
- {role: mysql, mysql_db: [{name: benz}, {name: benz2}],
mysql_users: [{name: ben3, pass: foobar, priv: "*.*:ALL"},
{name: ben2, pass: foo}],
mysql_db_id: 8 }
- hosts: slave
roles:
- {role: mysql, mysql_db: none, mysql_users: none,
mysql_repl_role: slave, mysql_repl_master: vm2,
mysql_db_id: 9, mysql_repl_user: [{name: repl, pass: foobar}] }
2
一个好的解决办法是你必须具有可设置的变量的例子vars.yml.dist文件。这存在于你的仓库中,开发人员只需在此基础上创建一个vars.yml的本地副本。然后,简单地将以下内容添加到您的手册中: include: vars.yml
这允许您将变量传递给您的角色,嵌套或不嵌套。
相关问题
- 1. 将数组传递给--extra-vars - Ansible
- 2. 最佳实践:嵌套forEach
- 3. 嵌套jMockit嘲笑的最佳实践
- 4. 最佳实践的嵌套属性
- 5. Ansible最佳实践和ansible.cfg
- 6. 将数据传递给子视图codeigniter的最佳实践
- 7. 将许多参数传递给方法的最佳实践?
- 8. 将服务器端变量传递给javascript的最佳实践?
- 9. 将上下文传递给非活动类的最佳实践?
- 10. 将数据从asp.net-mvc传递给javascript的最佳实践
- 11. 将配置传递给每个GUI对象的最佳实践
- 12. Swift - 将嵌套数组传递给函数的最佳做法
- 13. Ansible playbooks
- 14. VueJS嵌套组件:最佳实践
- 15. Yii2 - 嵌套资源最佳实践
- 16. 嵌套函数最佳实践
- 17. Caliburn.Micro嵌套ViewModels最佳实践
- 18. 最佳实践Mongoid:嵌套资源
- 19. 将静态JSON传递给Django模板 - 最佳实践?
- 20. 将参数传递给过滤器 - 最佳实践
- 21. Ansible显示输出的最佳实践
- 22. 实现嵌套GridView最多4级的最佳实践?
- 23. Autofac最佳实践传递参数
- 24. 将模型中的额外数据传递给查看的最佳实践?
- 25. 存储将传递给jQuery插件的JSON数据的最佳实践
- 26. 将数据从Phoenix传递到Javascript的最佳实践
- 27. 将数据传递到服务层的最佳实践
- 28. GWT MVP最佳实践模型数据传递给视图
- 29. 在Android中将消息从GLSurfaceView传递给MainActivity的最佳实践?
- 30. 将结构严密的信息传递给WCF方法。最佳实践
好的,awsome。现有的代码=最佳实践是有道理的。但我仍然想知道变量重写是如何从主要剧本到副剧本的,你知道吗?我无法找到关于此问题的任何信息。 – StenW
@StenW我提供的例子就是你的手册中的内容。在那个例子中,正在调用mysql的角色,并传入不同的变量。 – Mxx