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

Ste*_*enW 3 ansible

所以我试图绕着Ansible包围并构建一个简单的LEMP堆栈.我决定使用嵌套的剧本,因为我想在学习的同时尽可能地划分区域.我遇到了这个问题,我需要传递一些变量,比如mysql的root密码.现在我想知道是否有任何最佳实践从主要剧本中传递各种各样的剧本,或者是否应该在各个子剧本中设置变量?我使用这个回购作为我自己项目的基础.我也想知道如何在varibles中使用overriding,如果在子playbook中设置了默认值,那么在主playbook中设置的变量是否会覆盖这个值?

Mxx*_*Mxx 9

我想如果可能的话,最佳实践是重用现有代码.如果您还没有听说过,Ansible 在https://galaxy.ansible.com/上有Galaxy网站,人们可以在这里分享各种即用型角色.其中一个角色是mysql(其相关的github repo位于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}] }
Run Code Online (Sandbox Code Playgroud)