标签: cloud-init

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

我想做以下事情:

  1. 从我的开发机器创建数字海洋飞沫(分发我的测试,这需要花费太长时间).
  2. 安全地向Droplet发出命令.
  3. 消灭液滴.

我坚持#2.我可以通过Digital Ocean API成功创建水滴,我可以在该authorized_keys区域设置SSH密钥,但如果我允许Digital Ocean创建密钥,那么我无法验证服务器的公钥.

现在通常情况下,如果这是在同一个数据中心内,它就不会引起关注,因为我可以依赖Digital Ocean而不是实施MITM攻击,因为他们无论如何都有root,但是因为我从我的开发机器连接,我需要一个信任公钥的方式.

我尝试过遵循各种cloud-init指南,但我总是得到错误:

ssh root@178.62.69.133
Connection closed by 178.62.69.133
Run Code Online (Sandbox Code Playgroud)

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

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

e = "ssh-keygen -t ecdsa-sha2-nistp256 -f #{loc} -q -N #{password} -C \"\""
system(e)
Run Code Online (Sandbox Code Playgroud)

其中扩展到:

ssh-keygen -t ecdsa-sha2-nistp256 -f /tmp/testing-60f42fcf -q -N 77924d8f4fa12a365c8c003ca091f5ad6a2c4c22 -C ""
Run Code Online (Sandbox Code Playgroud)

我然后base64编码,

private_key = `base64 --wrap=0 #{loc}`.chomp
public_key = `base64 --wrap=0 #{loc}.pub`.chomp
Run Code Online (Sandbox Code Playgroud)

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

#cloud-config
---
runcmd:
- echo test > /root/test
- rm /etc/ssh/ssh_host*
- echo LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tClByb2MtVHlwZTogNCxFTkNSWVBURUQKREVLLUluZm86IEFFUy0xMjgtQ0JDLEY3MDNDNzM1QTAxQzgyNEVBRjhCODA4NkVDREIyMjAwCgpiYlpCa3A2Ujcyd1RRNUsyL2w4QW9YU3FQNllRVjV0aVJETytmU1FqZTlEUjY4MG9wY3RCRGhKRWdPQ0prSkw1CmhOUGxydzUveHFwTHM5UXc3cWJaWlUvRHR0YnlxZTFWUDcyVHBRS1pFL2FDcTdGTWFpbFJrcUpFa3JobVdCcFEKbWtQTW15M3BwVFZZKzJvRDZTdmMzdzZyTW1JTlpKUkltRUxiUk81S2M4bz0KLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQo=
  > /tmp/base64_pri && base64 --decode /tmp/base64_pri …
Run Code Online (Sandbox Code Playgroud)

security ssh cloud-init digital-ocean

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

如何禁用云初始化网络?

我正在尝试禁用云初始化网络配置。从云初始化文档中,我必须network-config={config: disabled}在内核命令行条目中进行设置。

当我将其设置为/etc/default/grub

GRUB_CMDLINE_LINUX="network-config={config: disabled}"
Run Code Online (Sandbox Code Playgroud)

并运行update-grub,但它给了我以下错误:

generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.4.0-116-generic
Found initrd image: /boot/initrd.img-4.4.0-116-generic
Found linux image: /boot/vmlinuz-4.4.0-104-generic
Found initrd image: /boot/initrd.img-4.4.0-104-generic
Found linux image: /boot/vmlinuz-4.4.0-97-generic
Found initrd image: /boot/initrd.img-4.4.0-97-generic
error: syntax error.
error: Incorrect command.
error: syntax error.
error: Incorrect command.
error: syntax error.
Syntax error at line 128
Syntax errors are detected in generated GRUB config file.
Ensure that there are no errors in /etc/default/grub
and /etc/grub.d/* …
Run Code Online (Sandbox Code Playgroud)

cloud cloud-init

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

云初始化验证器

想知道是否有人知道可以验证与此类似的 cloud-init 配置的验证器。我们尝试过了,它提供了一堆不适用例如,它不承认错误,package_update这是可以找到一个标准的关键字在这里例如官方文档。所以我们正在寻找一个可以工作并识别官方文档中关键字的验证器。

在此处输入图片说明

cloud-init

7
推荐指数
2
解决办法
5171
查看次数

使用 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
查看次数

是否可以在 cloud-config 中使用变量

当使用cloud init 的#cloud-config 创建配置文件时,我将如何使用变量来填充值?

在我的特定情况下,我想自动启动 EC2 实例作为预配置的 salt minions。salt minion 云配置示例

假设我想获取特定的 EC2 实例 ID 并将其设置为 salt minion 的 ID。

我将如何为每个实例动态设置值?

amazon-ec2 boto cloud-init salt-stack

6
推荐指数
1
解决办法
7474
查看次数

使用cloud-init更改resolv.conf

我希望我的 openstack 设置能够正常工作,以便当我启动新实例时,8.8.8.8 应添加到 dns-nameservers 中。

这是我的旧 /etc/resolv.conf (在 openstack 中生成的新虚拟机中)-

nameserver 10.0.0.2
search openstacklocal
Run Code Online (Sandbox Code Playgroud)

这是我想要的新 resolv.conf -

nameserver 8.8.8.8
nameserver 10.0.0.2
search openstacklocal
Run Code Online (Sandbox Code Playgroud)

我遵循了教程,并添加了必要的信息。resolv conf 到我的 cloud-init 的配置文件(/etc/cloud/cloud.cfg) -

manage_resolv_conf: true

resolv_conf:
  nameservers: ['8.8.4.4', '8.8.8.8']
  searchdomains:
    - foo.example.com
    - bar.example.com
  domain: example.com
  options:
    rotate: true
    timeout: 1
Run Code Online (Sandbox Code Playgroud)

这些更改是在 openstack 主机的 /etc/cloud/cloud.cfg 文件中进行的。然而,这些变化似乎并没有得到体现。

有什么建议么?

nameservers openstack cloud-init

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

附加 cloud-init write_files

write_files与 cloud-init 一起使用时,是否可以附加内容?如果是这样,如何?

write_files: [
  {
    "path": "/home/user/some-file",
    "content": "\nLine to append!"
  }
]
Run Code Online (Sandbox Code Playgroud)

cloud-init

6
推荐指数
2
解决办法
3478
查看次数

AWS:简单的 cfn-init 在 Amazon Linux 2 上失败,原因不明

我正在配置一个云信息堆栈。我只是尝试cfn-init在使用基于 Amazon Linux 2 的自定义 ami 启动的实例上运行尽可能简单的实例:

 EC2ESMasterNode1:
    Type: AWS::EC2::Instance
    Metadata:
      Comment: ES Cluster Master 1 instance
      AWS::CloudFormation::Init:
        config:
          commands:
            01_template_elastic:
              command:
                !Sub |
                  echo "'Hello World'"
    Properties:
      ImageId: ami-09693313102a30b2c
      InstanceType: !Ref MasterInstanceType
      SubnetId: !Ref Subn1ID
      SecurityGroupIds: [!Ref SGES]
      KeyName: mykey
      UserData:
        "Fn::Base64":
          !Sub |
            #!/bin/bash -xe
            # Start cfn-init
            /opt/aws/bin/cfn-init -s ${AWS::StackName} --resource EC2ESMasterNode1 --region ${AWS::Region}
            # Send the respective signal to Cloudformation
            /opt/aws/bin/cfn-signal -e 0 --stack ${AWS::StackName} --resource EC2ESMasterNode1 --region ${AWS::Region}
      Tags:
        - Key: "Name"
          Value: …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services cloud-init aws-cloudformation

6
推荐指数
1
解决办法
5706
查看次数

cloud-init:延迟disk_setup和fs_setup

我有一个 cloud-init 文件,它设置了 AWS 实例的所有要求,其中一部分要求是格式化和挂载 EBS 卷。问题是,在某些实例上,卷附加是在实例启动后发生的,因此当 cloud-init 执行时,卷/dev/xvdf尚不存在并且会失败。

我有类似的东西:

#cloud-config

resize_rootfs: false
disk_setup:
    /dev/xvdf:
        table_type: 'gpt'
        layout: true
        overwrite: false

fs_setup:
    - label: DATA
      filesystem: 'ext4'
      device: '/dev/xvdf'
      partition: 'auto'

mounts:
    - [xvdf, /data, auto, "defaults,discard", "0", "0"]
Run Code Online (Sandbox Code Playgroud)

并且希望sleep 60在磁盘配置块之前有类似的东西。

如果整个 cloud-init 的执行可以被延迟,那对我也有用。

另外,我正在使用 terraform 来创建基础设施。

谢谢!

amazon-ec2 cloud-init terraform

6
推荐指数
1
解决办法
4669
查看次数

我可以以与 root 不同的用户身份运行 cloud init 吗?

由于使用 git 时的权限问题,我尝试以与 root 不同的用户身份运行 cloud init。有这样的办法吗?

linux cloud-init

6
推荐指数
1
解决办法
4242
查看次数