Jam*_*mes 6 cloud deployment configuration amazon-ec2 amazon-web-services
在不使用第 3 方云配置服务的情况下,关于使用 EC2 进行配置管理的常见模式/策略或白皮书有哪些?特别是关于如何在启动时配置和提供新实例、代码部署策略等......
我已经从数十篇博文中汇总了我们引导 EC2 的方法。仍在进行中,但我们使用cloud-init将实例连接到我们的Puppet master,使用 Puppet 将所有包配置为该实例将扮演的角色,并使用Webistrano(Capistrano 的 GUI)将我们的代码部署到服务器。
如果您构建自己的机器映像,您几乎可以构建您想要的任何系统,但我们希望使用公开可用的官方 Ubuntu 映像,它们没有安装配置管理软件。
所以,我们使用 cloud-init 来引导一个实例。Cloud-init 是一个存在于Ubuntu和 Amazon Linux AMI 上的包。它允许通过 EC2 的“用户数据”元数据选项在创建实例时将各种数据传递给实例。通过 user-data 传入的数据在实例启动时由 cloud-init 执行,可以采用多种形式,例如 shell 脚本、cloud-config yaml 等。
这篇文章展示了一个使用 cloud-init 的例子,类似于我们的做法:http : //www.atlanticdynamic.com/you-should-be-using-cloud-init/
这是我们的版本:
#cloud-config
apt_update: true
apt_upgrade: true
packages:
- puppet
puppet:
conf:
agent:
server: "puppet.example.com"
certname: "%i.web.cluster1.eu-west-1.ec2"
Run Code Online (Sandbox Code Playgroud)
一旦实例启动,它就会安装 Puppet 并将其连接到我们的 Puppet master。一旦您允许它连接到主服务器(签署了它的证书),该实例将自动开始自我配置。master 将使用 nodes.pp 文件中的正则表达式来匹配实例的证书名称,从而为其分配一个角色。然后 master 能够将目录发送到 puppet 代理,后者使用它来配置自己。
启动几分钟后,实例就可以使用了。如果我们需要将任何代码部署到节点,我们不使用 Puppet,而是使用 Webistrano。目前我们手动将节点添加到 Webistrano 的配置中,但我们打算使用 MCollective 根据节点元数据自动执行此操作。