标签: cloud-init

使用cloud-init用户数据

我有一个简单的cloud-init用户数据,我将其传递给ec2.我通过右键单击实例并在其中设置用户数据,在我的ec2实例上设置此数据.

以下是我的cloud-init用户数据

#cloud-config

runcmd:
 - [ ls, -l, / ]
 - [ sh, -xc, "echo $(date) ': hello world!'" ]
 - [ sh, -c, echo "=========hello world'=========" ]
 - [ touch, /home/ec2-user/hello.txt ]

final_message: "The system is finally up, after 10 seconds"
Run Code Online (Sandbox Code Playgroud)

我从这里得到了这个例子,我添加了touch命令

我的期望是看到/var/log/cloud-init.log上的数据.但我不认为那里.此外,我没有看到任何错误,也没有看到创建的hello.txt文件

有什么东西我错过了吗?

我正在运行亚马逊linux实例而不是ubuntu实例

linux amazon-ec2 cloud-init

5
推荐指数
1
解决办法
2551
查看次数

HOWTO在aws上部署docker容器而不使用弹性beanstalk或ec2容器服务

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

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

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

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

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

amazon-ec2 amazon-ecs cloud-init docker amazon-elastic-beanstalk

5
推荐指数
1
解决办法
1745
查看次数

如何在cloud-init中正确使用runcmd和scripts-user?

通过查看runcmd代码(/usr/lib/python2.6/site-packages/cloudinit/config/cc_runcmd.py),我注意到与其他代码相比没有指定"频率".除了脚本所做的唯一事情是保存在/ var/lib/cloud/instance/scripts/runcmd下作为shell脚本提供的脚本.

因此,如果我详细说明模块,我必须设置频率.

cloud_config_modules:
 - mounts
 - locale
 - set-passwords
 - timezone
 - [ runcmd, always ]

cloud_final_modules:
 - scripts-per-once
 - scripts-per-boot
 - scripts-per-instance
 - [ scripts-user, always ]
 - ssh-authkey-fingerprints
Run Code Online (Sandbox Code Playgroud)

并且由这个特定的脚本创建的脚本可以由'scripts-user'运行,所以我需要指定ie

- [ scripts-user, always ]
Run Code Online (Sandbox Code Playgroud)

使runcmd脚本工作

这样做是否正确?文档(至少是当前的0.7.7)缺乏对runcmd和用户脚本的正确解释以及如何使用它们

我也想不明白之间的所有差异的模式,一次(第一次实例启动),实例(???),总是(即我的理解),????启动(即一个存在吗?它似乎并不上班...

编辑:

好的,我在cloudinit/settings.py中找到了:

# Valid frequencies of handlers/modules
PER_INSTANCE = "once-per-instance"
PER_ALWAYS = "always"
PER_ONCE = "once"
Run Code Online (Sandbox Code Playgroud)

在我脚本旁边找到了一个解释:

[root@euca-10-254-97-216 ~]# cloud-init-per -h
Usage: cloud-init-per frequency name cmd [ arg1 [ arg2 [ ... ] ]
   run cmd with arguments …
Run Code Online (Sandbox Code Playgroud)

python cloud-init

5
推荐指数
1
解决办法
2233
查看次数

如何阻止 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 日志中,我仍然看到“运行模块更新主机名”和“迁移信号量 update_hostname.always 到 config-update-hostname 频率总是”,并且在启动后一两分钟主机名返回到 AWS 默认值。

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

centos hostname amazon-web-services cloud-init

5
推荐指数
2
解决办法
6076
查看次数

Cloud init 无法在 Ubuntu 16.04 中使用静态 IP 配置提升网络接口

我一直在试验 cloud-init 和 qemu。这是我启动虚拟机的方式:

qemu-system-x86_64 \
  --enable-kvm \
  -nographic \
  -m 2G -smp 4 \
   -drive file=/disks/mustafa.img,if=virtio \
   -cdrom /disks/my-seed.img \
   -device virtio-net,netdev=network0,mac=52:55:00:d1:55:01 \
   -netdev tap,id=network0,ifname=tap0,script=no,downscript=no
Run Code Online (Sandbox Code Playgroud)

相关的元数据和用户数据文件是:

instance-id: 49380625-37c5-48b0-8a2b-60bd1392519a
network:
  version: 2
  ethernets:
    interface0:
       match:
           macaddress: 52:55:00:D1:55:01
       set-name: eth0
       addresses:
       - 172.17.0.2/255.255.0.0
       gateway4: 172.17.0.1            
Run Code Online (Sandbox Code Playgroud)

这是用户数据,不是真正相关,但无论如何。

#cloud-config
password: passw0rd
chpasswd: { expire: False }
ssh_pwauth: True
Run Code Online (Sandbox Code Playgroud)

但它挂起以下输出:

[  OK  ] Started Network Time Synchronization.
[  OK  ] Reached target System Time Synchronized.
[    6.148261] blk_update_request: I/O error, dev fd0, sector 0 …
Run Code Online (Sandbox Code Playgroud)

linux qemu cloud-init

5
推荐指数
0
解决办法
1907
查看次数

cloud-init执行顺序不遵守/etc/cloud/cloud.cfg吗?

这是/etc/cloud/cloud.cfgUbuntu云16.04映像的内容:

# The top level settings are used as module
# and system configuration.

# A set of users which may be applied and/or used by various modules
# when a 'default' entry is found it will reference the 'default_user'
# from the distro configuration specified below
users:
   - default

# If this is set, 'root' will not be able to ssh in and they
# will get a message to login instead as the above $user (ubuntu) …
Run Code Online (Sandbox Code Playgroud)

user-data cloud-init

5
推荐指数
1
解决办法
1271
查看次数

RHEL 7.5上没有/var/log/cloud-init-output.log

我有一个定制的硬化RHEL 7.5自定义AMI.我想使用用户数据来完成一些部署时间配置.我已经确保/var/lib/cloud/*在创建AMI之前将其删除.

这些是我的用户数据的内容: echo "My script fired." >> /tmp/test.txt echo "This line should produce an output log."

该文件/tmp/test.txt存在,表明我的脚本确实运行.但是,第二个语句的预期结果是/var/log/cloud-init-output.log应该根据AWS文档生成文件.此文件不存在.

如何确保用户数据生成预期的输出日志文件?

amazon-ec2 ec2-ami cloud-init

5
推荐指数
1
解决办法
1382
查看次数

将IP地址传递给cloud-init元数据

我正在寻找一种将ip-address传递给cloud-init元数据的方法.因此,当我的qcow启动时,它不必等待120 - 180秒启动.

目前,我已经通过将IP地址信息添加到cloud-init的userdata部分来创建了一种解决方法.问题是,它确实需要一些时间,因为cloud-init userdata仅在引导VM后执行.

echo -e "
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
\taddress $address
\tnetmask $netmask
\tgateway $gateway
\tdns-nameservers $dnsnameservers
" > /etc/network/interfaces

ifdown eth0; ifup eth0
Run Code Online (Sandbox Code Playgroud)

目前要在cloud-init元数据中设置主机名,我已经获得了这个部分:

cat > $config_dir/meta-data <<-EOF
instance-id: $uuid
hostname: $hostname
local-hostname: $hostname …
Run Code Online (Sandbox Code Playgroud)

linux bash kvm openstack cloud-init

4
推荐指数
1
解决办法
8959
查看次数

将一行添加到文件的命令的 Cloud-init runcmd 语法

我正在尝试执行这个简单的命令,但它一直失败:

 echo "secret_backend_command: /home/ec2-user/dd-get-secrets.py" >> /etc/datadog-agent/datadog.yaml"
Run Code Online (Sandbox Code Playgroud)

我尝试了以下所有方法:

        - [ sh, -c, echo "secret_backend_command: /home/ec2-user/dd-get-secrets.py" >> /etc/datadog-agent/datadog.yaml ]

        - 'sh -c "echo \"secret_backend_command: /home/ec2-user/dd-get-secrets.py\" >> /etc/datadog-agent/datadog.yaml"'

        - sh -c "echo 'secret_backend_command: /home/ec2-user/dd-get-secrets.py' >> /etc/datadog-agent/datadog.yaml
Run Code Online (Sandbox Code Playgroud)

知道如何修复这个报价吗?

请注意,我使用另一个文件而不是 datadpg.yaml 进行了测试,因为我对此文件的权限被拒绝。

我在这里找到的例子不起作用

amazon-ec2 amazon-web-services user-data cloud-init

4
推荐指数
1
解决办法
5644
查看次数

cloud-init 上的 repo_upgrade 与 package_upgrade 和 apt_upgrade 有什么区别?

在AWS EC2 手册的一个示例中,我们可以通过输入以下内容来执行 apt 更新和升级:

repo_update: true
repo_upgrade: true
Run Code Online (Sandbox Code Playgroud)

但是我在cloud-init官方文档中找不到完全相同的命令,所以我一直在寻找类似的命令并发现了这个,他们给出了两个命令package_upgradeapt_upgrade但没有区分出区别。

repo_upgrade这让我很好奇 and和package_upgrade之间有什么区别apt_upgrade

cloud-init

4
推荐指数
1
解决办法
1621
查看次数