将变量传递给嵌套的剧本的最佳实践?

所以我试图绕着Ansible包围并构建一个简单的LEMP堆栈.我决定使用nested playbook,因为我想在学习的同时尽可能地划分区域.我遇到了这个问题,我需要传递一些变量,比如mysql的root密码.现在我想知道是否有任何最佳实践从主要剧本中传递各种各样的剧本,或者是否应该在各个子剧本中设置变量?我使用this repo作为我自己项目的基础.我也想知道如何在varibles中使用overriding,如果在子playbook中设置了默认值,那么在主playbook中设置的变量是否会覆盖这个值?
最佳答案
我想如果可能的话,最佳实践是重用现有代码.如果您还没有听说过,Ansible在https://galaxy.ansible.com/有Galaxy网站,人们可以在这里分享各种即用型角色.其中一个角色是mysql(其相关的github回购时间是https://github.com/bennojoy/mysql).

您不仅可以在剧本中使用该角色,而且该页面还有示例,说明如何将参数/变量传递给您的角色:

4) A fully installed/configured MySQL Server with master and slave replication.

- 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}] }

转载注明原文:将变量传递给嵌套的剧本的最佳实践? - 代码日志