如何使用 Puppet 管理自动扩展实例?我想根据实例类型配置软件堆栈(例如,如果是 Web,则配置 Apache 或 Nginx;如果是应用程序,则配置 java 或 php)
答案1
这可以通过 hiera 轻松管理。在服务器的引导程序中,您可以编写一个自定义事实,hiera 将使用该事实将相关模块应用到您的服务器。在您的 cloud-init 用户数据脚本中,您可以添加类似以下内容:
echo 'role=apache_web' > /etc/facter/facts.d/role.txt
然后,您可以在 hiera 的层次结构中使用该角色。以下是 的示例部分hiera.yml
:
:hierarchy:
- "nodes/%{::trusted.certname}"
- "environment/%{::environment}"
- "role/%{::server_role}"
- "common"
您的 apache_web 角色的 hiera 文件将位于hieradata/role/apache_web.yaml
您的控制存储库中。对于 Puppet 4,绝对路径应为/etc/puppetlabs/code/environments/$ENVIRONMENT/hieradata/role/apache_web.yaml
。以下是示例:
---
classes:
- 'apache'
- 'myinternalmodule'
为了将所有内容联系在一起,让所有节点使用相同的 site.pp,其中包括:
hiera_include('classes')