问题标签 [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 回答
1671 浏览

python - 执行 ansible playbook AttributeError: 'str' object has no attribute 'set_playbook_basedir'

你好,

我有一个两部分的问题。

第一部分: 我正在尝试从下载剧本并执行它的 python 脚本中执行剧本。我知道该剧本有效,因为我已经对其进行了测试。但是,当我尝试使用 python 代码执行剧本时,我得到一个无属性错误'set_playbook_basedir',不太确定这是从哪里来的。这是完整的错误输出。

第二个问题是:

该脚本实际上是作为 base64 编码的 aws 用户数据及其执行传递的,但它似乎没有识别出它是 python。这是 cloud-init-output.log

0 投票
0 回答
293 浏览

linux - 在 Linux 中使用 shebang 运行远程脚本

我知道要运行远程脚本,我们可以使用

curl -s <remote-script-url> | python或者wget -O - <remote-script-url> | bash

但是,我们可以使用 shebang 运行脚本,而不是显式指定解释器。

我的用例是,脚本将来自受信任的来源——可能是 python 或 bash,我从 EC2 用户数据运行它。如果上述不可行,是否可以使用 cloud-config 实现相同的方法(脚本将在 s3 中)

提前致谢

0 投票
1 回答
1323 浏览

amazon-web-services - 如何在 EC2 上的 CoreOS 上的 cloud-config.yml 中使用“实例 ID”?

我在 Amazon EC2 上有 CoreOS 实例。

可以从 cloud-config.yml 访问一些预定义的变量,例如“$private_ipv4”或“$public_ipv4”。

有没有办法访问 EC2 实例的“实例 ID”,如“$instance_id”?(我试过 "$instance_id" 和 "$INSTANCE_ID" 但都没有生效)

0 投票
1 回答
747 浏览

security - 在服务器/Digital Ocean Droplet 上手动设置 ssh 主机密钥

我想做以下事情:

  1. 从我的开发机器创建 Digital Ocean 液滴(分发我的测试,这需要很长时间)。
  2. 安全地向液滴发出命令。
  3. 破坏液滴。

我被困在#2上。我可以通过 Digital Ocean API 成功创建 Droplet,并且可以在该区域设置我的 SSH 密钥authorized_keys,但是如果我允许 Digital Ocean 创建密钥,那么我无法验证服务器的公钥。

现在通常如果这是在同一个数据中心内,那就不用担心了,因为我可以依靠 Digital Ocean 不实施 MITM 攻击,因为它们无论如何都有根,但是由于我是从我的开发机器连接的,所以我需要一个信任公钥的方式。

我尝试了各种 cloud-init 指南,但总是收到错误消息:

我试图消除任何出错的可能性,我什至使用 base64 编码私钥,认为可能存在一些转义问题。

这是我用来创建密钥的命令:

扩展为:

然后我对它进行base64编码,

并将其放入 cloud-init yaml 文件中(不想使用|,因为它是 Yaml 中的特殊字符,我想尽可能避免使用它):

(别担心,那个 ssh key/droplet 已经被破坏了,这是为了演示)

我可以验证,当我省略了成功运行的其余命令时echo test > /root/test。我也在我的本地机器上测试了这个并且 md5sums 匹配:

所以我知道我正在正确解码它们。

我尝试过其他密钥类型,但如果可能的话,我想使用 ecdsa 密钥,因为它是我其他盒子的默认设置。我在这里做错了什么?另外,我是唯一一个这样做的人吗?我有谷歌,看起来常见的答案是人们只是自动信任生成的公钥,如果你在做这个跨数据中心,我认为这很疯狂,因为任何随机的 ISP(或者,在我的情况下,咖啡馆)都可以被动地MITM你。

0 投票
1 回答
286 浏览

python - 升级 urllib3 导致 cloud-init 失败,显然 urllib3 和 python 请求有版本兼容性问题?

我们将 python-urllib3 从 1.5-7 升级到 10.10.4-1,并在 Cloud-init 尝试获取 AWS 元数据时开始出现错误:

"unexpected error [cannot concatenate 'str' and 'tuple' objects]".

我已经看到其他几个 StackOverFlow 问题指向 urllib3 和请求之间的不兼容问题(Python Requests Timeout Value error),(Algolia reindex 命令失败,urllib3 中出现异常)。

我找不到任何可以协同工作的版本矩阵。我们无法获得其他问题中的解决方案,因为调用代码隐藏在 CloudInit 中。

我们真的没有选择回到我们以前版本的 urllib3 的选项,因为其他包(ElasticSearch Curator)显然需要更新的版本。

0 投票
0 回答
1332 浏览

openstack - cloud-init:无法将主机名 XXXX 写入 /var/lib/cloud/data/previous-hostname

我正在尝试使用 cloud-init 脚本设置我的 Bluemix VM 的主机名,但它抛出了一个错误:

登录到服务器,我可以看到它/var/lib/cloud/data/previous-hostname不存在:

中的代码/usr/lib/python2.7/site-packages/cloudinit/config/cc_set_hostname.py看起来很简单:

什么可能导致此错误?是否可以提供我自己的 cc_set_hostname.py 脚本版本,我可以添加额外的调试来转储Exception

0 投票
1 回答
3003 浏览

powershell - Bash script passed to AWS EC2 Instance as User Data file fails to load on initial boot

I have a simple bash script I'm trying to pass to an AWS EC2 ubuntu instance via a Powershell script using the AWS Library.

Heres the powershell script that encodes the file contents in base64 and calls the cmdlet that starts the EC2 instance:

This is a snippet from the cloud init log:

Here's a snippet of the loaded user data script on the ubuntu instance at /var/lib/cloud/instance/scripts/part-001:

I have tried converting the windows file to linux using 010 Editor and Cygwin. I've tried replacing the CRLF bytes with LF bytes. The result is the same: the entire bash script is condensed to 1 line, all line breaks are removed, and user data script fails to load on initial boot.

UPDATE: I've included both code snippets I've used to do the line break conversion. Both were vetted from peer sources (SO). For some reason, the script still shows up in the linux instance without the line break characters.

Snippet 1

Snippet 2

0 投票
2 回答
2037 浏览

amazon-ec2 - 如何在 aws 上部署 docker 容器而不使用弹性 beanstalk 或 ec2 容器服务

我想使用 docker 容器,而不必使用弹性 beanstalk 或 ec2 容器服务。我想上传一个.zip描述容器的文件(就像你使用弹性 beanstalk 一样)并让一个通用的 ec2 实例使用 docker 运行它。

在查看user databeanstalk 创建的运行 docker 容器的 ec2 实例的部分时,我看到一个 cloud-init 脚本,它下载了一个执行所有设置的大 shell 脚本(示例)。我假设弹性 beanstalk 所做的一切也可以通过使用 ec2 实例和user data脚本手动实现。

我的问题是:有人可以提供一个脚本的最小示例user data

  1. 安装/配置 docker
  2. 下载 .zip 文件
  3. 运行我的 docker 镜像

我熟悉自动缩放组等,我希望在不使用 beanstalk 或 ec2 容器服务魔法的情况下运行此设置。

0 投票
5 回答
4839 浏览

provisioning - 如何检测 cloud-init 完成初始化

我正在使用 cloud-init/cloud-config 配置一个 OpenStack 机器。我打算等到它完全配置好后再开始使用它。

使用一些标记文件或检测 cloud-init 进程是否仍在运行并不难,尽管在每个 cloud-init 脚本中这样做似乎很麻烦。有什么推荐的方法吗?理想情况下,由 cloud-init 原生支持?

0 投票
1 回答
5546 浏览

ubuntu - 在 cloud init runcmd 中使用管道失败

如何使用管道重定向runcmd我的云初始化脚本部分中的命令输出?以下失败:

它最终创建了一个如下所示的脚本:

因为管道被引用,所以脚本失败。我怎样才能解决这个问题?