1

我想在 AWS EC2 上运行一个简单的脚本,每次我使用 AMI-xxxx 启动一个新实例

我的脚本已经在 AMI 中进行了调整,但是每次我启动一个新实例时它都应该在 ec2 实例上运行

从终端我可以运行脚本

ruby ~/script/couchbase-config.rb

是否也有可能每次我重新启动实例时它都不运行,而只在 ec2 实例第一次启动时运行?

4

3 回答 3

0

在您的脚本中放置一个“锁定”文件(例如/etc/couchbase-config-done),并且在脚本的开头仅在找不到此文件时继续执行脚本。

但是我不明白谁调用了你的脚本,为什么你不能简单地调用它/仅在实例创建期间/之后而不是在每次启动时调用它......

于 2013-07-05T13:25:47.110 回答
0

与其尝试通过脚本为节点分配 IP,不如注册域名并使用其 FQDN 将节点添加到集群中。例如,您可以在区域记录中的主域的 unbrella 下为每台机器指定其自己的子域名:(cb1.mydomain.com、cb2.mydomain.com 等)

让您的动态 DNS 提供商处理 IP 映射。如果您已经在 AWS EC2 上,您应该尝试他们的 Route53 服务。当您的 EC2 映像启动时,您会根据在启动时为 VM 提供的 IP 更新该子域的 A 记录。由于 EC2 的定期维护,该 IP 也可能会发生变化,因此如果您愿意,可以将其放入 cron 作业中。

查看fog从 Ruby 处理 DNS 的 gem:http: //fog.io/dns/

您还可以使用 AWS Route53 服务route53,这是一个更轻量级的 gem,因为它只处理 AWS DNS: https ://rubygems.org/gems/route53

于 2014-06-19T18:16:40.343 回答
0

我猜你正在配置 Couchbase 环境变量。为什么不运行脚本,然后从您刚刚运行它的 AMI 创建一个新的 AMI,并且一切都已经配置好?如果您从 EBS 快照启动,您启动的每个后续实例都将以相同的方式配置,但 EC2 会从快照创建一个新的、唯一的 EBS 卷 - 如果您在实例终止后需要它,您甚至可以保留它. 我用现场实例做到这一点。

于 2013-07-29T16:40:22.030 回答