在puppet模板中加载特定于环境的变量

时间:2016-07-21 15:12:36

标签: ruby puppet

我正在尝试在puppet模块中配置属性文件。属性文件最终应该包含以下内容:

server_url=https://my-login.com/server
token_url=https://my-login.com/token
client_id=my-application

我们有多个应用程序将部署到的环境(开发,登台和生产),server_urltoken_url在每个环境中都会有所不同,但client_id将永远不同是相同的。所以我制作了一个这样的erb模板:

server_url=<%=@server_url%>
token_url=<%=@token_url%>
client_id=my-application

这样的清单文件:

# $env will be DEV, STG or PRD
$server_url = 'https://my-login-dev.com/server'
$token_url = 'https://my-login-dev.com/token'
​
file {'/apps/my-application/common/client.properties':
  ensure  => 'present',
  content => template("common/client.properties.erb"),
}

我希望根据server_url变量的值设置token_urlenv的值。理想情况下,这可以通过选择要包含的特定文件来实现。例如,为每个环境都有一个urls.properties文件,从中加载变量。因此urls.properties.dev将包含以下内容:

server_url=https://my-login.com/server
token_url=https://my-login.com/token

然后你可以像这样包含它:

# server_url and token_url set up by the following line
include urls.properties.${env}

file {'/apps/my-application/common/client.properties':
  ensure  => 'present',
  content => template("common/client.properties.erb"),
}

我找不到任何关于如何执行此操作的文档,而且我找不到通过黑客攻击使其工作的方法。

有可能实现这一目标吗?我应该采取另一种方法来解决问题吗? (我不想使用部分模板,因为我不希望将文件拆分成很多块)。

0 个答案:

没有答案