Pio*_*icz 5 puppet amazon-web-services
我的 AWS 部署遇到了问题,对 AWS 和 Puppet 来说还很陌生。
所以来到我的问题 - 你能用 AWS 机器标签或 CNAME 域区分 puppet 节点吗?
关于计划的一点背景:
因此,在 AWS 中,您会获得那些超级讨厌的公共/私有机器 dns ……您无法识别这些机器上的机器。为了缓解这个问题,像 AWS 这样的接缝希望你标记所有东西 - 所以我做到了。由于 Route53 API,找到了一个脚本,该脚本为每台带有“ShortName”标签的机器创建 CNAME 记录。
每台机器都有一个 ShortName 标签,它成为它的 CNAME,不幸的是 puppet 仍然解析私有 dns 名称。
我想要
node 'perl-cluster'{}
Run Code Online (Sandbox Code Playgroud)
在傀儡中,有人知道如何实现这一目标吗?
谢谢
我这样做的方法是为服务器编写一个自定义事实,以从用户数据中识别其角色,可以在 169.254.169.254 上访问,查看您自己的用户数据...
curl http://169.254.169.254/latest/
Run Code Online (Sandbox Code Playgroud)
所以当我输入facter role
'dbserver','webserver' 什么的,然后用它来定义一个节点时,重要的是不要让自动缩放组关心服务器的名称是什么。
/etc/puppet/manifests/nodes.pp
node default{
include nodes::type
}
Run Code Online (Sandbox Code Playgroud)
/etc/puppet/modules/nodes/manifests/init.pp
import “type.pp”
Run Code Online (Sandbox Code Playgroud)
/etc/puppet/modules/nodes/manifests/type.pp
class nodes::type{
case $role {
“dbserver” : {
include mysql
}
}
case $role {
“webserver” : {
include httpd
}
}
}
Run Code Online (Sandbox Code Playgroud)
/etc/puppet/manifests/modules.pp
import nodes
Run Code Online (Sandbox Code Playgroud)
我不想确切地告诉您如何在您的情况下执行此操作,但在这里我将向您展示如何创建自定义事实来报告 EC2 实例 ID。
Facter,curl,已安装。
mkdir -p /home/ec2-user/lib/ruby/facter
export FACTERLIB=/home/ec2-user/lib/ruby/facter
cat > /home/ec2-user/lib/ruby/facter/instance_id < EOF
# instance_id.rb
#
require 'facter'
Facter.add("instance_id") do
setcode "/usr/bin/curl -s http://169.254.169.254/latest/meta-data/instance-id"
end
EOF
Run Code Online (Sandbox Code Playgroud)
瞧,写了一个自定义事实。
现在我可以使用它来获取 ec2 实例 ID:
$ facter instance_id
i-a1c0ffee
Run Code Online (Sandbox Code Playgroud)
我没有在这台机器上安装 puppet,但是如果我想让 puppet 可以使用它,请将 id 放入 /var/lib/puppet/lib/facter,并将其分发给客户端 id 确保 puppet.conf 中的 pluginsync=true。
请记住,我所说的都是非常主观的,这只是我如何做的,如果有更好的方法,我会感兴趣。
归档时间: |
|
查看次数: |
5707 次 |
最近记录: |