标签: cloud-init

云配置中 write_files 指令的正确语法?

我正在尝试让云配置脚本与我的 DigitalOcean Droplet 一起正常工作,但我在此期间正在本地 lxc 容器上进行测试。

我一直遇到的一个问题是,我永远无法让write_files指令对多个文件正常工作。它似乎以我无法理解的奇怪方式行事

比如这个配置不正确,只输出了一个文件(.tarsnaprc/tmp

#cloud-config
users:
  - name: julian
    shell: /bin/bash
    ssh_authorized_keys:
      - ssh-rsa myrsakeygoeshere julian@hostname
write_files:
  - path: /tmp/.tarsnaprc
    permissions: "0644"
    content: |
      cachedir /home/julian/tarsnap-cache
      keyfile /home/julian/tarsnap.key
      nodump
      print-stats
      checkpoint-bytes 1G
    owner: julian:julian
  - path: /tmp/lxc
    content: |
      lxc.id_map = u 0 100000 65536
      lxc.id_map = g 0 100000 65536
      lxc.network.type = veth
      lxc.network.link = lxcbr0
    permissions: "0644"
Run Code Online (Sandbox Code Playgroud)

但是,如果我交换write_files数组中的两个项目,它会神奇地工作,并创建两个文件.tarsnaprclxc. 我做错了什么,我有语法错误吗?

yaml lxc cloud-init ubuntu-cloud

4
推荐指数
2
解决办法
8062
查看次数

AWS EC2 RHEL 7.1 控制台输出不显示 cloud-init 的输出

从RHEL 7.1 AMI启动的实例似乎不会将 SSH 指纹写入系统日志(cloud-init 的输出中完全没有任何内容),因此我无法使用 AWS UI 或命令行上的“获取系统日志”菜单用于找出已启动服务器的 ssh 指纹的工具。在Centos 7上它默认工作。可能是 cloud-init 配置的问题还是其他原因?Cloud-init 成功运行,日志显示在/var/logSSH 后。

rhel amazon-ec2 amazon-web-services cloud-init rhel7

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

cloud-init 不执行用户数据

我试图在由 terraform 启动后获取 Ubuntu 云映像(特别是 ami-311a1a5b)来引导 docker。我有以下配置来执行此操作:

resource "aws_instance" "app" {
  count = 1
  ami = "${lookup(var.amis, var.region)}"
  instance_type = "t2.micro"
  subnet_id = "${aws_subnet.private.id}"
  vpc_security_group_ids = ["${aws_security_group.default.id}"]
  key_name = "${aws_key_pair.deployer.id}"
  source_dest_check = false
  # user_data = ${file("cloud-config/app.yml")}
  user_data = "${template_file.cloud_config.rendered}"


  depends_on = ["aws_instance.nat"]


  tags = {
    Name = "airpair-example-app-${count.index}"
  }


  root_block_device {
    volume_type = "standard"
    volume_size = 20
  }
}
Run Code Online (Sandbox Code Playgroud)

实例启动后,docker没有安装,看来云配置没有应用。云配置如下:

# Cloud config for app servers
runcmd:
  # Install docker
  - curl -sSL https://get.docker.com | sudo sh
  # Run …
Run Code Online (Sandbox Code Playgroud)

amazon-ec2 cloud-init terraform

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

升级到 Python 3.6 后无法在启动时启动 cloud-init

我在新的云服务器 (Ubuntu 16.04) 上安装了 Python 3.6 而不是默认的 3.5 版本。重启服务器后,发现cloud-init启动时执行失败,syslog.

Sep 20 16:16:14 cloud-init[1310]: Traceback (most recent call last):
Sep 20 16:16:14 cloud-init[1310]:   File "/usr/bin/cloud-init", line 9, in <module>
Sep 20 16:16:14 cloud-init[1310]:     load_entry_point('cloud-init==0.7.9', 'console_scripts', 'cloud-init')()
Sep 20 16:16:14 cloud-init[1310]:   File "/usr/local/lib/python3.6/dist-packages/pkg_resources/__init__.py", line 570, in load_entry_point
Sep 20 16:16:14 cloud-init[1310]:     return get_distribution(dist).load_entry_point(group, name)
Sep 20 16:16:14 cloud-init[1310]:   File "/usr/local/lib/python3.6/dist-packages/pkg_resources/__init__.py", line 2751, in load_entry_point
Sep 20 16:16:14 cloud-init[1310]:     return ep.load()
Sep 20 16:16:14 cloud-init[1310]:   File "/usr/local/lib/python3.6/dist-packages/pkg_resources/__init__.py", line 2405, …
Run Code Online (Sandbox Code Playgroud)

python ubuntu python-3.x cloud-init

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

如何让 Terraform 等待 cloudinit 完成?

在我的Terraform AWS Docker Swarm 模块中,我使用 cloud-init 来初始化 EC2 实例。但是,Terraform 表示在 cloud-init 完成之前资源已准备就绪。有没有办法让它等待 cloud-init理想地完成而无需 SSH 连接或使用null资源检查端口是否启动。

amazon-web-services cloud-init terraform

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

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

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

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

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

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

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

cloud-init

3
推荐指数
2
解决办法
2282
查看次数

cloud-init - 我试图通过云初始化将文件复制到 Windows EC2 实例,方法是将其传递给用户数据

我试图通过云初始化将文件复制到 Windows EC2 实例,方法是传递用户数据,云初始化模板运行,它创建一个文件夹但不复制文件,您能帮助我理解我在代码中做错了什么吗?

此代码通过自动缩放组的启动配置传递

data template_cloudinit_config ebs_snapshot_scripts {
  gzip          = false
  base64_encode = false

  part {
    content_type = "text/cloud-config"
    content      = <<EOF
<powershell>
$path = "C:\aws"
If(!(test-path $path))
{
      New-Item -ItemType Directory -Force -Path $path
}
</powershell>

write_files:
   -  content: |
     ${file("${path.module}/../../../../scripts/aws-ebs-snapshot-ps/1-start-ebs-snapshot.ps1")}
       path: C:\aws\1-start-ebs-snapshot.ps1
       permissions: '0744'
   -   content: |
     ${file("${path.module}/../../../../scripts/aws-ebs-snapshot-ps/2-run-backup.cmd")}
       path: C:\aws\2-run-backup.cmd
       permissions: '0744'
   -   content: |
     ${file("${path.module}/../../../../scripts/aws-ebs-snapshot-ps/3-ebs-snapshot.ps1")}
       path: C:\aws\3-ebs-snapshot.ps1
       permissions: '0744'
EOF
  }
}
Run Code Online (Sandbox Code Playgroud)

amazon-web-services cloud-init terraform terraform-provider-aws

3
推荐指数
1
解决办法
3775
查看次数

Terraform 仅运行多部分用户数据的第一部分

我正在考虑使用 Terraform 设置虚拟机基础设施,并使用 cloud-init 启动虚拟机。我正在尝试使用cloud-config内容类型作为第一部分和shellscript第二部分的多部分方法。

但是,在 上terraform apply,仅执行第一部分,而第二部分未运行(通过检查生成的 VM 是否已应用更改)。

相关配置部分如下。

data "template_cloudinit_config" "config" {
  gzip = true
  base64_encode = true
  part {
      filename = "init-cloud-config"
      content_type = "text/cloud-config"
      content = file("../modules/services/${var.service_name}/init.yaml")
  }
  part {
      filename = "init-shellscript"
      content_type = "text/x-shellscript"
      content = templatefile("../modules/services/${var.service_name}/init.sh",
        { hostname = "${var.prefix}-${var.service_name}" }
      )
  }
}
Run Code Online (Sandbox Code Playgroud)

cloud-init init.yaml 内容如下

groups:
  - dataops

users:
  - default
  - name: dataops
    gecos: Data Operations
    shell: /bin/bash
    primary_group: dataops
    sudo: ALL=(ALL) NOPASSWD:ALL …
Run Code Online (Sandbox Code Playgroud)

cloud-init terraform

3
推荐指数
1
解决办法
2124
查看次数

通过 cloud-init 运行命令时出现问题

我正在从事的一个开源项目包含需要 Linux 的组件,因此虚拟化通常是开发和测试新功能的最佳解决方案。我正在尝试为 Multipass 提供一个简单的 cloud-init 文件,该文件将通过从 Git 提取文件并自动在 VM 中设置它们来使用我们的代码配置 VM。然而,即使启动花费的额外时间似乎表明进程正在运行,但似乎没有文件实际保存到主目录中,即使对于更简单的情况也是如此,即

runcmd:
  - [ cd, ~ ]
  - [ touch test ]
  - [ echo 'test' > test ]
Run Code Online (Sandbox Code Playgroud)

我只是错误配置了 cloud-init 还是我错过了一些重要的东西?

cloud-init multipass

3
推荐指数
1
解决办法
5998
查看次数