标签: cloud-init

什么时候运行cloud-init以及它如何找到它的数据?

我目前正在处理CoreOS,到目前为止,我认为我有了整体的想法和概念.我还没有得到的一件事就是执行cloud-init.

我知道这cloud-init是一个为CoreOS做一些配置的过程.我还不明白的是......

  • CoreOS何时运行cloud-init?在第一次启动?每次开机?...?
  • 怎么cloud-init知道在哪里找到它的配置数据?我已经看到有config-drive,这完全有道理,但这是唯一的方法吗?user-data文件的作用究竟是什么?...?

cloud-init coreos

11
推荐指数
1
解决办法
6341
查看次数

什么要加入AWS AMI以及使用cloud-init进行配置?

我正在使用AWS Cloudformation为我的Web应用程序设置网络基础结构的许多元素(VPC,安全组,子网,自动调节组等).我希望整个过程自动化.我想点击一个按钮,然后能够启动整个事情.

我已经成功创建了一个Cloudformation模板,用于设置所有这些网络基础架构.但是,EC2实例目前在没有任何所需软件的情况下启动.现在我想弄清楚如何最好地在他们身上获得该软件.

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

例如,我想预先配置EC2实例以允许me(saqib)在没有自己笔记本电脑密码的情况下登录.因此EC2必须有用户.该用户必须具有主目录.并且在该主目录中必须存在.ssh/known_hosts包含加密代码的文件.我应该将这些目录烘焙到AMI吗?或者我应该使用cloud-init来设置它们?我该如何决定这个和其他类似的案例呢?

packer amazon-web-services cloud-init aws-cloudformation amazon-ami

11
推荐指数
2
解决办法
6293
查看次数

用户数据(cloud-init)脚本未在EC2上执行

我的用户数据脚本

#!
set -e -x
echo `whoami`
su root
yum update -y
touch ~/PLEASE_WORK.txt
Run Code Online (Sandbox Code Playgroud)

从命令输入:

ec2-run-instances ami-05355a6c -n 1 -g mongo-group -k mykey -f myscript.sh -t t1.micro -z us-east-1a
Run Code Online (Sandbox Code Playgroud)

但是当我检查文件时/var/log/cloud-init.log,它tail -n 5是:

[CLOUDINIT] 2013-07-22 16:02:29,566 - cloud-init-cfg[INFO]: cloud-init-cfg ['runcmd']
[CLOUDINIT] 2013-07-22 16:02:29,583 - __init__.py[DEBUG]: restored from cache type DataSourceEc2
[CLOUDINIT] 2013-07-22 16:02:29,686 - cloud-init-cfg[DEBUG]: handling runcmd with freq=None and args=[]
[CLOUDINIT] 2013-07-22 16:02:33,691 - cloud-init-run-module[INFO]: cloud-init-run-module ['once-per-instance', 'user-scripts', 'execute', 'run-parts', '/var/lib/cloud/data/scripts']
[CLOUDINIT] 2013-07-22 16:02:33,699 - __init__.py[DEBUG]: …
Run Code Online (Sandbox Code Playgroud)

linux amazon-ec2 cloud-init

10
推荐指数
2
解决办法
2万
查看次数

AWS-Ubuntu-Git 设置错误致命:未设置 $HOME

当我的AWS EC2 Ubuntu实例启动时,我有一些cloudinit脚本要执行。

我想使用下面的代码设置GIT配置变量。

#cloud-config
runcmd:
- [ sh, -c, "git config --global user.name 'myname'"]
Run Code Online (Sandbox Code Playgroud)

登录终端时。我可以毫无问题地执行git config --global user.name 'myname'

但是,当我尝试使用cloudinit代码启动我的实例时。我收到一条错误消息

致命:$HOME 未设置

我的理解是,这是因为实例启动时未设置HOME

寻找解决方案,以在启动时设置 git 变量或替代解决方案。

git ubuntu amazon-ec2 amazon-web-services cloud-init

10
推荐指数
1
解决办法
4860
查看次数

什么是Windows的Cloud-Init等价物?

似乎Windows上的库存引导过程有点缺乏.

Linux有cloud-init,它将安装包,存储文件,并从用户数据运行bash脚本.

Windows具有ec2config,但是当系统处于"就绪"状态时,目前不支持运行cmd或powershell脚本 - 这意味着所有初始重新启动都已完成.

似乎有第三方选择.例如,RightScale具有执行此功能的RightLink代理.

有开源选项吗?有没有计划将此功能添加到Ec2Config?我必须自己建立这个吗?

我错过了什么吗?

windows bootstrapping amazon-ec2 cloud-init

9
推荐指数
1
解决办法
9130
查看次数

在cloud init runcmd中使用管道失败

如何在我runcmd的cloud init脚本部分中使用管道重定向命令的输出?以下失败:

runcmd:
    - [curl, -sk, https://example.com/packages/current/install.bash, '|', /bin/bash, -s,  agent:certname=XYZ.com] 
Run Code Online (Sandbox Code Playgroud)

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

'curl' '-sk' 'https://example.com/packages/current/install.bash' '|' '/bin/bash' '-s' 'agent:certname=XYZ.com'
Run Code Online (Sandbox Code Playgroud)

由于管道被引用,脚本失败.我怎样才能解决这个问题?

cloud ubuntu amazon-web-services cloud-init digital-ocean

9
推荐指数
1
解决办法
3488
查看次数

在AWS中,user_data是在cloud-init之前执行的吗?

我使用 terraform 创建 EC2 实例,并user_data使用/var/lib/cloud/scripts/per-once. 这没有执行 - 我现在的问题是:cloud-init 之前运行过吗user_data

===编辑===

对 Dude0001 非常有帮助的答案的更长回复:

我现在尝试了以下方法 - 这是我的user_data

#!/bin/bash
cat >/var/lib/cloud/scripts/per-once/install_mysql <<!
#cloud-config

package_update: true

packages:
  - mysql-server

!

cat >>/root/.bashrc <<!
set -o vi
unalias -a
alias ll='ls -lp'
!

cat >>/home/admin/.bashrc <<!
set -o vi
unalias -a
alias ll='ls -lp'
!

cat /root/.vimrc <<!
set t_ti= t_te=
set compatible
set expandtab ts=2 sw=2 ai
!

cat >/home/admin/.vimrc <<!
set t_ti= t_te=
set …
Run Code Online (Sandbox Code Playgroud)

cloud-init

8
推荐指数
1
解决办法
6982
查看次数

如何在 Google Cloud 上将 cloud-init 与基于 debian 的映像一起使用?

遵循用于引导实例的terraform最佳实践,我正在处理cloud-init配置以引导我的实例。我唯一的需要是安装一个特定的包。

我的 terraform 配置如下所示:

resource "google_compute_instance" "bastion" {
  name         = "my-first-instance"
  machine_type = "n1-standard-1"
  zone         = "europe-west1-b"

  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-9"
    }
  }

  network_interface {
    network = "default"

    access_config {
      // Ephemeral IP
    }
  }

  metadata = {
    ssh-keys = "eugene:${file("/Users/eugene/.ssh/id_rsa.pub")}"
    user-data = file("my_cloud_init.conf")
  }
}
Run Code Online (Sandbox Code Playgroud)

以下是从docs安装软件包的示例cloud-init,这是以下内容my_cloud_init.conf

#cloud-config

packages:
 - kubectl
Run Code Online (Sandbox Code Playgroud)

运行terraform plan -out myplanand 后terraform apply myplan,我 ssh 到节点上却发现kubectl不可用。此外,没有证据表明它cloud-init已运行或存在于节点上: …

cloud-init google-compute-engine google-cloud-platform terraform

8
推荐指数
2
解决办法
3550
查看次数

Raspberry pi 4 上的 Ubuntu Focal 无头设置 - 首次重启前的 cloud init wifi 初始化

我在使用云初始化配置为 Raspberry pi 4 上的 Ubuntu Server Focal (ARM) 设置完整的无头安装时遇到了麻烦。这样做的全部目的是在出现故障时简化 SD 卡交换。我正在尝试使用 cloud-init 配置文件为 lan/wlan 应用静态配置,创建新用户,为新用户添加 ssh 授权密钥,安装 docker 等。但是,无论我做什么,似乎都没有应用 Wifi 设置在第一次重启之前。

步骤 1:将映像刻录到 SD 卡上。第二步:用配置文件重写 SD 卡 system-boot/network_config 和 system-boot/user-data

网络配置

version: 2
renderer: networkd
ethernets:
  eth0:
    dhcp4: false
    optional: true
    addresses: [192.168.100.8/24]
    gateway4: 192.168.100.2
    nameservers:
      addresses: [192.168.100.2, 8.8.8.8]
wifis:
  wlan0:
    optional: true
    access-points:
      "AP-NAME":
        password: "AP-Password"
    dhcp4: false
    addresses: [192.168.100.13/24]
    gateway4: 192.168.100.2
    nameservers:
      #search: [mydomain, otherdomain]
      addresses: [192.168.100.2, 8.8.8.8]
Run Code Online (Sandbox Code Playgroud)

用户数据

chpasswd:
  expire: true
  list:
    - ubuntu:ubuntu

# Enable …
Run Code Online (Sandbox Code Playgroud)

ubuntu-server cloud-init raspberry-pi4

8
推荐指数
1
解决办法
2117
查看次数

使用 cloud-Init 在 Azure 上安装 docker 和 docker-compose

我想通过 Docker 引导我的 Azure VM,并使用 cloud-init 进行 Docker-compose。到目前为止,我尝试了如下所示的方法。

#cloud-config

package_update: true
package_upgrade: true

groups:
  - docker: [default]

runcmd:
  - [ sh, -c, "curl -sSL https://get.docker.com/ | sh" ]
  - [ sh, -c, "sudo curl -L "https://github.com/docker/compose/releases/download/$(git ls-remote https://github.com/docker/compose | grep refs/tags | grep -oP "[0-9]+\.[0-9][0-9]+\.[0-9]+$" | tail -n 1)/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose" ]
  - [ sh, -c, "sudo chmod +x /usr/local/bin/docker-compose" ]
Run Code Online (Sandbox Code Playgroud)

但它没有安装 docker/ docker-compose 并出现以下错误

cloud-init[958]: 2019-02-28 00:51:02,447 - util.py[WARNING]: Failed loading yaml blob. Invalid format at line …
Run Code Online (Sandbox Code Playgroud)

azure cloud-init

7
推荐指数
1
解决办法
3944
查看次数