背景
我正在编写一个剧本,在不同机器上安装两个相同的 Web 应用程序。这两个应用程序都需要自己的 MySQL/MariaDB 数据库。我计划通过满足模板文件中特定占位符的外部变量传递 MySQL 信息(数据库名称、用户名和密码)(例如mysql.php
)。
问题
对于应用程序的两个安装,我都有相同的文件(例如mysql.php
)。两者都有占位符{{ db_name }}
,{{ db_user }}
和{{ db_password }}
。我如何才能将传递给剧本的多个外部变量分别用于每个“安装”?
如果这没有意义,我很乐意重新澄清。
答案1
您可以在运行时包含变量文件。
例如,您可以:
/<ansible-root>/environments/
/env-A.yml
/env-B.yml
这些文件将包含站点特定的变量,例如:
---
variable_a: foo
variable_b: bar
...您可以使用标准 ( {{ variable_a }}
) 符号从您的剧本中引用它。
当你运行剧本时,只需包含正确的文件:
$ ansible-playbook playbook.yml -e @environments/env-A.yml