You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

是否存在离线(无需云主机)使用cloud-init的实践示例?

在本地单机(Raspbian)使用cloud-init的实操指南

嘿,我完全懂你的痛点——网上搜cloud-init全是绑定云平台的演示,谁能想到本地单机也能用上它?好在Raspbian软件源里已经预装了cloud-init,咱们直接一步步来搞定:

1. 确认cloud-init状态

先在终端里检查下系统里有没有装cloud-init,跑这条命令:

cloud-init --version

要是没装的话,用apt快速安装:

sudo apt update && sudo apt install cloud-init -y

2. 配置本地数据源(核心步骤!)

默认cloud-init会盯着云平台的数据源,咱们本地用得改成NoCloud数据源,这是专门给非云环境设计的。

方法一:本地文件数据源(适合已运行的系统)

  • 先创建cloud-init的配置目录:
sudo mkdir -p /var/lib/cloud/seed/nocloud-net
  • 新建用户配置文件user-data,这里可以写你想要的初始化操作,比如创建用户、装软件、启动服务:
sudo nano /var/lib/cloud/seed/nocloud-net/user-data

给你个示例配置(按需修改就行):

#cloud-config
users:
  - name: mylocaluser
    groups: sudo
    shell: /bin/bash
    sudo: ['ALL=(ALL) NOPASSWD:ALL']
    ssh_authorized_keys:
      - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ...  # 替换成你的SSH公钥
packages:
  - nginx
  - python3-pip
runcmd:
  - systemctl enable --now nginx
  - pip3 install flask
  • 必须创建一个空的meta-data文件(cloud-init要求的,不然会报错):
sudo touch /var/lib/cloud/seed/nocloud-net/meta-data

方法二:ISO镜像数据源(适合新系统安装)

如果是刚准备装Raspbian,可以把user-data和meta-data打包成ISO镜像,安装时挂载这个镜像,cloud-init会自动读取配置。打包命令:

genisoimage -output cloud-init.iso -volid cidata -joliet -rock user-data meta-data

之后把这个ISO和系统镜像一起写入SD卡,安装时系统会自动识别并执行配置。

3. 让cloud-init执行配置

如果是已经在运行的系统,改完配置后得重置cloud-init的状态,让它重新跑一遍:

sudo cloud-init clean --logs
sudo cloud-init init --local
sudo cloud-init modules --mode config
sudo cloud-init modules --mode final

嫌麻烦的话直接重启系统,cloud-init会在开机时自动触发:

sudo reboot

4. 验证配置是否生效

重启后可以查看cloud-init的日志,确认有没有报错:

cat /var/log/cloud-init.log

也可以直接验证效果,比如检查软件是否安装、用户是否创建:

systemctl status nginx
id mylocaluser

小提醒:cloud-init默认只会在第一次开机执行一次,要是想重复测试,必须先执行cloud-init clean清除之前的运行状态。

内容的提问来源于stack exchange,提问作者Bruno Bronosky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:41:48