背景

背景

背景

我正在编写一个剧本,在不同机器上安装两个相同的 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

相关内容