AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题

问题[cloud-init](server)

Martin Hope
exore
Asked: 2025-02-25 17:47:17 +0800 CST

根据 cloud-init 日志,用户定义错误,但用户还是被创建了。用户定义有什么错误?

  • 8

lui因此,我使用 cloud-init 启动 debian 12 bookworm,并创建如下所示的用户。

users:
  - name: lui
    ssh_authorized_keys:
      - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIH7tTbt9XLZ0bGRcD+btgRh5qcuM7/TphfnCPl4fw8q3 la mienne
    sudo: ["ALL=(ALL) ALL"]
    shell: /bin/bash
    gecos: C'est pas moi !,,,
    lock_passwd: false
    plain_text_passwd: elle

但是,在 cloud-init 日志中我可以看到这个

Cloud config schema errors: users.0: {'gecos': "C'est pas moi !,,,",
'lock_passwd': False, 'name': 'lui', 'plain_text_passwd': 'elle',
'shell': '/bin/bash', 'ssh_authorized_keys': ['ssh-ed25519
AAAAC3NzaC1lZDI1NTE5AAAAIH7tTbt9XLZ0bGRcD+byrFUv8cuM7/TphfnCJ6WXwkIq
la mienne'], 'sudo': ['ALL=(ALL) ALL']} is not valid under
any of the given schemas

与用户一起连接到机器后lui,我运行sudo cloud-init schema --system并有效得到相同的错误,但没有解释什么是错误或缺失的......

所以我想我很幸运,因为 cloud-init 无论如何都不会放弃并创建用户。总有一天,我的运气会耗尽。所以我宁愿现在就解决这个问题。

我检查了cloud-init 参考但未能发现我的错误。

这个 cloud-init 用户定义有什么问题?

cloud-init
  • 1 个回答
  • 129 Views
Martin Hope
Brad
Asked: 2024-03-11 11:24:44 +0800 CST

设置runcmd的环境变量

  • 5

使用 cloud-init,我可以指定一个runcmd部分并执行如下操作:

runcmd: [
  'MYVAR=VALUE some-command --a A --b B'
]

这有效,并且在环境中设置为some-command运行。它在外壳下运行。MYVARVALUE

但是,我实际上想使用参数化形式,如下所示:

runcmd: [
  [
    'some-command',
    '--a', 'A',
    '--b', 'B'
  ]
]

原因是其中一些参数值将被动态替换,并且我不希望 shell 尝试解释它们。

因此,我可以使用这个字符串数组运行命令,但是如何为它们指定环境呢?

cloud-init
  • 1 个回答
  • 30 Views
Martin Hope
Fang
Asked: 2023-11-28 18:13:03 +0800 CST

cloud-init 查询 DHCP

  • 5

我们正在使用 ubuntu 自动安装 ( https://ubuntu.com/server/docs/install/autoinstall )从磁盘运行预置的 Ubuntu 安装

自从升级到 20.04.6 以来,当 cloud-init 机制检测到网络上有 DHCP 服务器时,我们会遇到问题,这会导致安装崩溃。

是否可以在 cloud-init 期间禁用任何网络?

我们的 grub.cfg 看起来像这样:

menuentry "custom install " {
    set gfxpayload=keep
    linux   /casper/vmlinuz quiet autoinstall ds=nocloud\;s=/cdrom/nocloud/ ---
    initrd  /casper/initrd
}
cloud-init
  • 1 个回答
  • 26 Views
Martin Hope
Sudheer Satyanarayana
Asked: 2023-05-01 15:40:27 +0800 CST

cloud-init 忽略 staitc 网络配置

  • 5

我正在 Ubuntu 22.04 主机上执行这些步骤:

下载云镜像

qemu-img create -b ../jammy-server-cloudimg-amd64.img -f qcow2 -F qcow2 myubuntu2204test01-base.img 10G

在目录 myubuntu2204test01 中创建文件元数据:

instance-id: myubuntu2204test01
local-hostname: myubuntu2204test01.example.com
network:
  version: 2
  ethernets:
    enp1s0: 
    dhcp4: no
    addresses: [192.168.122.146/24]
    nameservers:
         addresses: [192.168.122.1]
    routes:
    - to: 0.0.0.0/0
      via: 192.168.122.1

在目录 myubuntu2204test01 中创建文件用户数据:

#cloud-config
users:
  - name: someuser
    ssh_authorized_keys:
      - ssh-ed25519 somekey comment
    sudo: ["ALL=(ALL) NOPASSWD:ALL"]
    groups: sudo
    shell: /bin/bash

ci为数据生成 ISO 映像

genisoimage -output cidata.iso -V cidata -r -J user-data meta-data

创建虚拟机 myubuntu2204test01

virt-install \
--name=testvmubuntu2204 \
--ram=512 --vcpus=1 \
--import \
--disk path=myubuntu2204test01-base.img,format=qcow2 \
--disk path=cidata.iso,device=cdrom \
--os-variant=ubuntu22.04 \
--network bridge=virbr0,model=virtio \
--graphics vnc,listen=0.0.0.0 --noautoconsole

虚拟机已创建。但是 VM 没有元数据中定义的静态 IP 网络。VM 具有默认的 DHCP 网络配置。

在此为来宾 VM 创建静态 IP 的过程中缺少或不正确的是什么?

我已经尝试在用户数据和元数据文件中定义网络,它们都无法为来宾虚拟机创建静态网络。

cloud-init
  • 1 个回答
  • 26 Views
Martin Hope
Rodrigo
Asked: 2022-10-11 08:20:57 +0800 CST

Cloud Init 无法在 Vultr 上运行

  • 1

我是 Cloud-Init 的新手,我正在尝试使用它安装 tailscale 和 Docker,以及其他一些软件包

我试了几次,没有运气,也没有错误日志。

我做错了什么?

这是我的脚本:

#cloud-config

users:
    - name: ubuntu
        shell: /usr/bin/bash
        ssh_import_id: gh:skhaz
        sudo: ALL=(ALL:ALL) NOPASSWD:ALL

chpasswd:
    expire: false

apt_upgrade: true

apt:
    sources:
        docker
            source: deb [arch=amd64 trusted=yes] https://download.docker.com/linux/ubuntu focal stable
        tailscale:
            source: deb [arch=amd64 trusted=yes] https://pkgs.tailscale.com/stable/ubuntu focal main

packages:
    - docker-ce
    - tailscale
    - aria2
    - build-essential
    - vim
    - tmux

runcmd:
    - tailscale up -authkey='REDACTED'

    - ufw --force reset
    - ufw allow in on tailscale0 to any
    - ufw --force
cloud-init
  • 1 个回答
  • 24 Views
Martin Hope
miho
Asked: 2022-01-16 04:03:24 +0800 CST

如何确保 Cloud-Init 只运行一次且只运行一次?

  • 1

据我所知,cloud-init每次配置更改时都会运行。不仅在系统第一次启动时,而且在每次提供的配置更改时。这有点道理,因为我想很难定义“第一次”(克隆的 VM 在被冻结并用作模板之前已经运行,所以它从来都不是第一次)。但是,我不时地——很少,但仍然——发现cloud-init它们在重新启动时在已配置的系统上重新运行。

cloud-init但是,当在完全配置的系统上运行时,某些步骤似乎会搞砸设置。例如,如果它在初始设置后再次运行一次cloud-init并将某些配置设置为 value X,但之后您手动将其覆盖为Y,现在cloud-init重新运行以将其设置回X. 或者,让系统重新创建您的 SSH 主机密钥。

因此,我发现手动运行非常有用:

sudo touch /etc/cloud/cloud-init.disabled

...在初始设置之后,以防止它cloud-init再次运行。(在某些情况下,cloud-init真的只用于初始的“克隆和设置 IP/主机名”类型的配置。)

但是有什么方法可以自动化吗?/etc/cloud/cloud.cfg就像在下次运行后向禁用自身添加一些参数一样?

cloud-init
  • 1 个回答
  • 1768 Views
Martin Hope
Maxim V. Pavlov
Asked: 2021-11-26 04:59:57 +0800 CST

Azure 上的所有 Linux VM 都无法启动,卡在 cloud-init(元数据服务爬虫)初始化

  • 0

我在 Azure 中有大约 5 个虚拟机,它们最初是作为 Ubuntu 18 配置的,从那时起我已经对它们进行了多次 dist 升级。几个月前,我注意到不同订阅上的类似虚拟机无法启动,卡在“cloud-init”步骤。在此处输入图像描述

其中一些虚拟机确实有“提升网络接口”故障,有些则没有。

到目前为止,解决方法是分离驱动器,在不同的 VM 中对其进行编辑,并从启动中删除“cloud-init”服务,从而允许 VM 启动。一旦它启动,网络结果就很好,尽管记录了错误。但是,apt-get upgrade在 cloud-init 将重新启用并再次停止 VM 的启动。

有没有更持久的解决方法?我相信这个问题应该是相当普遍的,因为我突然在 Azure 中的所有 Linux VM 上遇到了这个问题。

ubuntu azure cloud-init
  • 1 个回答
  • 199 Views
Martin Hope
shawty
Asked: 2021-10-30 01:44:46 +0800 CST

如何在 cloud-init 脚本中下载和安装常规 DPKG 包?

  • 1

我正在使用 LXD/LXC 在 Linux 主机上构建轻量级容器。

这些容器的唯一目的是托管“Dotnet 和 Dotnet 核心应用程序”

有一段时间我一直在使用 Ansible,但最近我发现我实际上可以将一个 init 脚本嵌入到容器配置的用户数据中,然后 cloud-init 会执行它。

这很棒,并且允许我设置一个给定的容器,其中包含它需要的包,除了一个问题。

微软

(我知道,我知道......保存笑话和诽谤:-D)

与大多数第 3 方软件包提供商不同,MS 将其全部添加的 deb 源和 GPG 密钥打包在一个独立的 dpkg 软件包文件中,该软件包文件未通过普通 repos 列出,因此基本上必须“wget”下载然后安装使用常规的 dpkg 命令。

现在,这就是我做事的方式:

#cloud-config

# apply updates using apt
package_update: true
package_upgrade: true

# set hostname
hostname: ****
fqdn: ****
manage_etc_hosts: true

# Install 3rd party software repos
# NOTE: This is done using run command due to the way microsoft distribute things using a raw dpkg
runcmd:
  - [wget, "https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb", -O, /root/packages-microsoft-prod.deb]
  - dpkg -i /root/packages-microsoft-prod.deb
  - rm /root/packages-microsoft-prod.deb
  - apt update
  - apt-get install dotnet-sdk-3.1 -y
  - apt-get install dotnet-sdk-5.0 -y

# Install standard packages
packages:
  - apt-transport-https
  - python3
  - python-is-python3
  - mc
  - gnupg
  - nginx
  - git

# Add users
users:
  - name: ****
    ssh-authorized-keys:
      - ssh-rsa **** rsa-key-BLAH
    sudo: ['****']
    groups: sudo
    shell: /bin/bash

final_message:
  - "Container initialisation complete."

关键部分是“runcmd”部分。

因为我使用的是“runcmd”,所以它在其他所有内容之后运行,包括我放入所有需要使用的标准包的正常包安装部分。

我最喜欢做的是安装 dpkg 文件,然后只需将要安装的包名称添加到普通包部分,例如

# Something here to download and install the dpkg

# Install standard packages
packages:
  - apt-transport-https
  - python3
  - python-is-python3
  - mc
  - gnupg
  - nginx
  - git
  - dotnet-sdk-3.1
  - dotnet-sdk-5.0

我确实尝试只将那个位放在 runcmd 中,但因为它作为最后一步运行,它会导致包部分失败,因为没有安装 dotnet 的 repo。

我还尝试使用“Apt”模块,将“microsoft-prod.list”安装到“/etc/apt/sources.list.d”中,但这也失败了,因为 MS 没有发布他们的 GPG 密钥,另外由于它是不受信任的源,因此在执行 apt 更新时,源会导致失败。

我已经搜索了 cloud-init 的模块文档,但我找不到任何似乎表明可以下载和添加常规 dpkg 文件的内容,因此我在这里问:-)

apt dpkg cloud-init lxd lxc
  • 2 个回答
  • 766 Views
Martin Hope
campos
Asked: 2021-03-04 12:35:17 +0800 CST

如何在 debian 实例中正确创建新用户?

  • 0

我正在使用 qcow2 格式的现成 debian 映像。默认用户是“debian”。我想通过 openstack-horizo​​n 创建另一个用户。所以我详细说明了以下脚本:

#cloud-config
users:
  - name: jumper
    ssh-authorized-keys:
      - ssh-rsa myKeyhere
    sudo: ["ALL=(ALL) NOPASSWD:ALL"]
    groups: sudo
    shell: /bin/bash

默认情况下,会执行 /etc/cloud/cloud.cfg 文件中的设置来创建实例。当我通过脚本创建新用户时,不会创建 debian 用户。这是正确的吗?当我创建一个新用户时,所有 cloud.cfg 设置都被忽略了吗?

openstack cloud-init openstack-horizon
  • 1 个回答
  • 200 Views
Martin Hope
danielleontiev
Asked: 2020-11-25 17:19:17 +0800 CST

`cloud-init` 不会阻止虚拟机配置

  • 0

我使用 Azure,我想cloud-init在创建 VM 时使用它来安装一些软件。

以下是 的内容cloud-init.yml:

#cloud-config

package_update: true
package_upgrade: true

runcmd:
  - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  - add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
  - apt update
  - apt install -y docker-ce docker-ce-cli containerd.io
  - usermod -aG docker azureuser
  - curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  - chmod +x /usr/local/bin/docker-compose

power_state:
  mode: reboot
  condition: True

这是az我用来创建 VM 的命令:

az vm create \
    --resource-group $GR_NAME \
    --name $VM_NAME \
    --image UbuntuLTS \
    --admin-username azureuser \
    --custom-data cloud-init.yml \
    --generate-ssh-keys

当上述命令返回时,我可以ssh进入机器,但我的安装过程仍在运行,cloud-init实际上仅在大约 3 分钟后完成并且机器重新启动。

我希望虚拟机配置应该被阻止,cloud-init但事实并非如此。是否可以强制“阻止”行为?

azure cloud-init
  • 1 个回答
  • 103 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve