问题标签 [cloud-init]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
182 浏览

amazon-web-services - AWS - 保持 AMI 更新

假设我从我的一个 EC2 实例创建了一个 AMI。现在,我可以手动将其添加到 LB 或让 AutoScaling 组为我执行此操作(基于我提供的条件)。到目前为止,一切都很好。

现在,假设我的开发人员添加了一个新功能,并且我在现有实例上提取了新代码。请注意,AMI 此时未更新,仍然有旧代码。我的问题是我应该如何处理这种情况,以便当自动缩放组从我的 AMI 创建一个新实例时,它将使用最新的代码。

我想到了两种方法,如果您有其他解决方案,请告诉我:

a) 始终保持 AMI 更新;这意味着只要有拉取请求,就应该删除(删除)旧的 AMI 并用新的 AMI 替换。

b) 在 AMI 上有一个启动脚本 (cloud-init),它将在初始启动时从存储库中提取最新代码。(通过将存储库凭据存储在实例上并直接从 git 中提取代码)

这些方法中哪一种更好?如果两者都不好,那么实现这一目标的最佳做法是什么?

0 投票
1 回答
546 浏览

ibm-cloud-infrastructure - 使用 Cloud-init 和 Softlayer 传递用户数据

我们一直在尝试使用 SLCLI 在 Softlayer 中配置机器,并希望能够传递用户数据来帮助我们的 CM 工具(厨师)完成机器安装。我们正在使用以下选项配置机器。机器设置正常,我们登录它,但没有证据表明用户数据已通过。我们做错了什么吗?

这是 yml 文件:

任何帮助,将不胜感激。谢谢你。

0 投票
1 回答
2047 浏览

amazon-ec2 - cloud-init 未执行用户数据

在由 terraform 启动后,我正在尝试获取一个 Ubuntu 云映像(特别是 ami-311a1a5b)来引导 docker。为此,我有以下配置:

实例启动后,没有安装 docker,似乎还没有应用云配置。云配置如下所示:

如果我查询用户数据,它似乎在那里:

我的理解是它应该被执行,有没有理由不执行?

0 投票
1 回答
2076 浏览

vagrant - 用户数据脚本中的环境变量

我在让我的用户数据脚本读取在脚本执行之前设置的环境变量时遇到问题。我正在使用 Vagrant 进行测试。

所以我在我的 Vagrantfile 中有这一行......

...指向配置脚本。该脚本包含加载 cloud-init 所需的所有内容,如此所述。

在里面build.sh,我有一条线......

...大概使环境变量在全球范围内可用。

完整的文件,如果你有兴趣:

现在,我有一条线像这样SOME_PATH在里面回响/vagrant/bin/vagrant/user-data.sh......

...当我跑步时vagrant up,什么都没有打印出来!

有没有办法让环境变量在里面可用user-data.sh

0 投票
2 回答
14761 浏览

linux - 在 EC2 实例上使用用户数据脚本运行 ansible-playbook

我正在使用 Packer 和 Ansible 创建 AWS EC2 映像 (AMI)。Ansible 用于安装 Java 8,安装数据库(Cassandra),安装 Ansible 并上传 Ansible playbook(我知道我应该将 playbook 推送到 git 并拉取它,但当它工作时我会这样做)。我正在安装 Ansible 并上传剧本,因为当从 AMI 启动实例时,我必须更改一些 Cassandra 属性(例如,在 Cassandra 选项中添加当前实例 IP)。为了实现这一点,我编写了一个简单的 bash 脚本,将其添加为user-data-file属性。这是脚本:

如您所见,我正在 localhost 模式下执行 ansible-playbook。

问题是当我启动实例时,我在/var/log/cloud-init.log文件中发现了一个错误。错误状态,ansible-playbook无法找到。所以我ls在用户数据脚本中添加了一行来检查/usr/bin/文件夹的内容(安装 Ansible 的文件夹)并且其中没有 Ansible,但是当我使用 ssh 访问实例时,我可以看到里面存在 Ansible文件夹,/usr/bin/执行 ansible-playbook 没有问题。

有没有人遇到过类似的问题?我认为这应该是 Ansible 与 EC2 的一个非常流行的用例。


编辑

经过一些日志记录后,我发现在执行用户数据的过程中不仅没有 Ansible,而且数据库也丢失了。

Packer 的 Ansible 配置器中的部分代码(或全部)是否有可能在实例启动时执行?


编辑2

我发现这里发生了什么。当我通过加壳器通过user_data_file属性添加用户数据时,用户数据在加壳器午餐实例以构建 AMI 时执行。该脚本在执行 Ansible 配置程序之前启动,这就是缺少 Ansible 的原因。

我想要做的是自动将用户数据添加到 AMI,这样当从 AMI 启动实例时,将执行用户数据,而不是在打包程序构建所述 AMI 时执行。

关于如何做到这一点的任何想法?

0 投票
2 回答
13893 浏览

centos - 在 centos 上卸载、删除或禁用 cloud-init

我使用命令 yum install cloud-init 在 centos 6.4 上安装了 cloud-init。但是现在我想完全摆脱它,或者至少禁用它是不可能的。我浏览了互联网,但没有找到任何解决方案。

您能否建议如何从 centos 中删除已安装的 cloud-init?

谢谢

0 投票
5 回答
8235 浏览

amazon-web-services - 如何阻止 cloud-init 在 AWS (CentOS) 上覆盖我的主机名

我有一个在启动时运行的脚本(通过 rc.local)并根据它从 AWS CLI 查询的实例名称设置我的主机名。它可以工作,并且在引导日志的末尾显示“登录:”

认为 cloud-init 覆盖了我的主机名,所以我:

  • 在 /etc/cloud/cloud.cfg 中设置 preserve_hostname: true
  • 在 /etc/cloud/cloud.cfg.d/00_defaults.cfg 的 cloud_config_modules 部分中注释掉了 set-hostname 和 update-hostname

但是在 cloud-init 日志中,我仍然看到“正在运行模块更新主机名”和“迁移信号量更新主机名。始终以频率始终配置更新主机名”,并且在启动后一两分钟主机名恢复为 AWS 默认值。

到底是怎么回事?我该如何阻止它?

0 投票
2 回答
379 浏览

amazon-web-services - 使用 EC2 cloud-init 启动脚本启动长时间运行的任务

当我的 EC2 实例开始安装包、拉取代码然后启动一个长时间运行的任务时,我会使用我的 cloud-init 启动脚本,该任务可能会运行数天:

如果脚本在此行停留数天,这是否是 cloud-init 的问题?如果是这样,在允许 cloud-init 脚本结束的同时让脚本运行的最佳方法是什么?

0 投票
1 回答
238 浏览

amazon-web-services - 无法使用 Troposphere/CloudFormation UserData 设置 ASG 实例主机名

这是我的对流层文件的相关部分:

当我从这个模板创建一个全新的 CloudFormation 堆栈时,实例上的主机名看起来像ip-172-XXX-XXX-XXX默认值。

由于我的TESTING文件,我确定脚本正在运行:

如果我手动运行脚本,则主机名已正确设置。像这样:

当实例首次启动到 ASG 时,如何在实例上设置主机名?

0 投票
1 回答
281 浏览

wordpress - composer.phar 安装问题(cloudinit 与手册)

我面临一个奇怪的问题。从用户数据(cloud-init)执行厨师时,我的以下厨师食谱失败。

它要求 HOME/COMPOSER_HOME 环境变量。

但是,如果我从 SSH 终端执行手动厨师客户端运行(甚至直接在终端上运行命令),它运行良好。

PS:composer.phar 和 composer.json 由开发者提供(捆绑在 wordpress zip 中)

== 食谱片段 ==

== 从 SSH 终端运行时 ==

== Cloud-Init-Output.log 片段 ==