问题标签 [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 投票
1 回答
251 浏览

amazon-ec2 - 通过云配置每次启动运行命令

从规范的 ubuntu 图像启动 ec2 实例时,我通过 --user-data-file 参数传递云配置。

它运行良好,但问题是它的某些命令需要在每次启动时运行(即当我们停止/启动或重新启动实例时)。有没有一种方法(或云配置中的部分)可以描述应该在每次启动时运行的命令,而不仅仅是在创建实例时?

0 投票
2 回答
6287 浏览

coreos - 如何在 cloud-init 中编写自己的 cloud-config?

cloud-init功能强大,可以将用户数据注入到 VM 实例中,其现有模块提供了很多可能性。

虽然为了让它更容易使用,我想定义我自己的标签,比如下面的 coreos,详见在openstack 中运行 coreos

所以我可以使用我自己定义的标签/配置有类似下面的东西myapp

我是 cloud-init 的新手,它叫做 module 吗?它在文档http://cloudinit.readthedocs.org/en/latest/topics/modules.html中为空

您能否提供一些信息来描述我如何编写自己的模块?

0 投票
1 回答
902 浏览

amazon-cloudformation - AWS 中的 cloudformation 最佳实践

我们正处于在 AWS 上运行我们的服务的早期阶段。我们的服务器托管在 AWS 中,在 VPC 中,具有私有和公共子网,并且在私有和公共子网中有多个实例,使用 ELB 和前端 Web 服务器的自动缩放设置(使用 AMI)。首先使用 AWS 控制台手动设置整个环境(VPC、安全组、EC2 实例、数据库实例、S3 存储桶、云端)。应用服务器托管 jboss,war 文件部署在服务器上。

根据 AWS 最佳实践,我们希望使用 cloudformation 创建整个基础设施并设置测试/阶段/产品环境。

- 使用一个 cloudformation 堆栈/模板拥有所有上述组件(VPC、安全组、EC2 实例、数据库实例、S3 存储桶、云端等)是否是个好主意?或者我们应该创建两个堆栈 1) 具有网络重装组件和 2) 具有 EC2 相关组件?

-一旦我们有一个使用 cloudformation stact 运行的 prod envoronemtn,如果我们将来想在 prod 上更新新的 AMI,我们如何使用 cloudformation 更新实时运行的 EC2 实例而不中断?

- 完成新版本后,将代码部署到多个 EC2 笔记的最佳实践/多种方法是什么?我们目前不使用 Contius 集成。

0 投票
0 回答
774 浏览

amazon-ec2 - 在 cloud-init 运行 userdata 脚本后,我如何让事情(例如 tomcat)运行?

精简版:

userdatacloud-init在 EC2 上运行脚本后,如何让 init.d 脚本运行?

长版:

我们的部署过程是构建 AMI,上面安装了所有东西(tomcat、nginx、应用程序等),但遗漏了某些配置值。在启动时,userdata 脚本添加缺少的配置值,然后应用程序堆栈可以启动

我们当前的 EC2 基于旧版本的官方 Debian AMI,它具有脚本ec2-run-user-data. 此脚本在启动时运行,并下载并运行 EC2 用户数据。在构建 AMI 时,我简单地编辑了 tomcat、nginx 等的 init.d 脚本,以在其“Required-Start:”行中包含 ec2-run-user-data,以便它们在运行 userdata 后启动。

不幸的是,这种方法不再可行,因为我们想开始使用安装了 cloud-init 而不是 ec2-run-user-data 的 hvm 基础 AMI。但是我无法弄清楚 cloud-init 是如何工作得足够好来弄清楚如何使这个过程工作的。

据我所知,userdata 脚本由 cloud-final 步骤运行,但 cloud-final 在它的“Required-Start:”行中有 $all。我可以删除它,但我不知道这可能会产生什么后果。

我试过让tomcat等在cloud-init或cloud-config之后运行,但是用户数据到那时还没有运行。此外,它看起来像 cloud-init 和 cloud-config 启动进程然后退出,这可能解释了为什么 cloud-final 需要在Required-Start 中有 $all

更多信息:

  1. 我们使用“烘焙 AMI”方法,在该方法中,我们创建一个安装了所有包/应用程序的 AMI,然后告诉现有的 Autoscaling 组用基于新 AMI 的新 EC2(通过 CloudFormation)替换他们的 EC2。有些配置信息在烘焙时是未知的,但必须通过 userdata 脚本插入。
  2. 当我们的 tomcat 应用程序启动时,它希望读取文件 /etc/appname/application.conf。该文件中包含文本<<REPLACE_THIS>><<REPLACE_TIME>>如果在更换之前尝试运行 Tomcat 将无法启动
  3. userdata 脚本类似于:
    #!/bin/bash sed -i 's!<<REPLACE_TIME>>!{New value to use, determined at deploy time}!' /etc/appname/application.conf
  4. tomcat 的默认Required-Start 是“$local_fs $remote_fs $network”。在烘焙时,我将其更改为“$local_fs $remote_fs $network ec2-run-user-data”

通过这样做,/etc/appname/application.conf 中的文本在 tomcat 运行之前被替换。但是就像我上面说的,我想改用cloud-init,我不知道在cloud-init运行了userdata之后我需要做什么才能让tomcat启动。我得到的印象是 cloud-init 直到过程的很晚才运行用户数据。我可以将userdata脚本更改为最后包含“/etc/init.d/tomcat restart”,但是让tomcat无法启动然后重新启动似乎有点愚蠢。

0 投票
0 回答
143 浏览

amazon-ec2 - EC2 通过自动缩放,标签传播多长时间?

我正在尝试使用userdata在自动缩放的 EC2 实例上运行一些代码。实例标签(“名称”等)已经设置,这一点很重要。我知道这不会在创建时立即发生。

首先,我添加sleep 20了我的 userdata 脚本。显然,这是一种代码味道。

那么,标签传播需要多长时间?如何检测它 - 我可以使用实例元数据 ( http://169.254.169.254/latest/) 来检测机器是否健康?

如果没有,我知道我可以确定我的实例 ID,然后查询 API(可能使用 boto)并等待标签。执行此操作需要几个 yaks - 例如,我必须确保安装了依赖项并且我拥有 IAM 角色权限。所以我宁愿不走那条路。

0 投票
1 回答
1019 浏览

amazon-ec2 - 将变量传递给云配置厨师?

我正在尝试使用厨师功能创建一个带有 cloud-init 的用户数据脚本。我遇到了限制,我想知道是否有解决方法。我需要我的节点名称是唯一的,因为厨师服务器将只接受具有唯一名称的客户端。我尝试了几种方法来传递日期时间变量或实例 ID,但我似乎无法将变量传递给 node_name 部分。

或者

有没有办法避免这种情况,使其不会被字面解释?

0 投票
1 回答
901 浏览

chef-infra - 如何在没有刀的情况下从客户端更改厨师中客户端的节点名称

我有一个“黄金映像”AMI,我想将它放在一个自动缩放组中,该组将获取映像、重命名并执行 run-llst。我刚刚花了大部分时间在 cloud-config 的 chef 功能上,但它不起作用,因为原始的 chef 环境与 cloud-config 使用的任何内容之间存在太多的不一致。从长远来看,它也将变得不那么可靠和缓慢,因为每次都必须从头开始做饭。我想举一个让 chef 运行它的实例并从那里开始。环顾四周,我看到的是手动和使用刀的方法。有没有办法重写一些文件并将图像注册到厨师服务器?

0 投票
2 回答
4099 浏览

cloud-init - cloudinit 如何在引导 vm 时安排定期任务

在使用 Nova boot 创建 vm 时,我为其提供了一个用户数据脚本(cloud-init 脚本)。

我想知道的是,我如何在该云初始化脚本中指定(或任何其他方式): - 安排一个 cron 作业每 2 小时运行一次

假设我想每 2 小时运行一次“du -s njain/”来查找我的目录的大小

我知道“runcmd”可以用来做一次......但我如何让它定期运行?杜 -s ../njain/

0 投票
1 回答
518 浏览

service - 从云初始化启动时如何在 vm 上运行服务

当我的虚拟机出现时,我正在尝试运行 zabbix 代理

我的 cloudinit.txt(其中一部分)看起来像这样:-

我明白了

大多数命令都有效(我能够列出目录),但服务没有启动,我在日志中得到了这个:-

如果我登录 ,y vm ..我可以使用相同的命令启动它

0 投票
2 回答
7601 浏览

amazon-web-services - 将什么烘焙到 AWS AMI 中以及使用 cloud-init 预置什么?

我正在使用 AWS Cloudformation 为我的 Web 应用程序设置大量网络基础设施元素(VPC、SecurityGroups、子网、自动缩放组等)。我希望整个过程自动化。我想单击一个按钮并能够启动整个过程。

我已经成功创建了一个 Cloudformation 模板来设置所有这些网络基础设施。然而,EC2 实例目前在没有任何需要的软件的情况下启动。现在我正试图弄清楚如何最好地在他们身上安装该软件。

为此,我正在使用Packer.io创建 AMI 。但有些人反而敦促我使用 Cloud-Init。我应该使用什么启发式方法来决定将什么烘焙到 AMI 和/或通过 Cloud-Init 配置什么?

例如,我想预配置一个 EC2 实例以允许我 ( saqib) 从我自己的笔记本电脑上无需密码即可登录。因此,EC2 必须有一个用户。该用户必须有一个主目录。在那个主目录中必须有一个.ssh/known_hosts包含加密代码的文件。我应该将这些目录烘焙到 AMI 中吗?还是我应该使用 cloud-init 来设置它们?在这种情况和其他类似情况下我应该如何决定?