OrbStack Cloud-init 功能的整理,并附带一个完整的配置案例
› 社区话题 › Linux/macOS 与自动化运维 › OrbStack Cloud-init 功能的整理,并附带一个完整的配置案例
- 该话题为空。

- 作者帖子
- 2025年9月22日 - 下午3:24 #1157
追光管理员这是对 OrbStack Cloud-init 功能的整理,并附带一个完整的配置案例。OrbStack Cloud-init 配置指南与实战案例:
Cloud-init 是业界标准的 Linux 机器自动化配置工具,广泛用于 AWS EC2 等云平台。OrbStack 完美支持 Cloud-init,允许您使用相同的配置文件在本地快速创建和配置开发、测试环境,实现与生产环境的一致性。
核心功能
自动化配置:在机器创建时自动执行一系列设置,如创建用户、安装软件包、写入文件、运行脚本等。
环境一致性:使用与云端(如 AWS)相同的配置文件,确保本地开发环境与生产环境高度一致,便于调试和部署。
团队协作:通过共享配置文件,可以为团队快速、统一地部署标准化的开发环境。
灵活格式:支持标准的 cloud-config YAML 格式,也支持直接使用 Shell 脚本。使用方法
在创建 OrbStack 机器时,通过 -c 或 –user-data 参数指定 Cloud-init 配置文件。
bash
创建一个名为 \’my-dev-machine\’ 的 Ubuntu 机器,并应用 user-data.yml 配置orb create ubuntu my-dev-machine -c user-data.yml
配置文件格式
Cloud-init 配置文件通常以 cloud-config 开头,后面跟随 YAML 格式的指令。以下是一个详细的实战案例。
? 实战案例:创建一个预配置的 Python 开发环境
目标:创建一台 Ubuntu 机器,自动完成以下任务:
1. 创建一个名为 devuser 的新用户,并将其加入 sudo 组。
2. 设置 devuser 的默认 Shell 为 zsh。
3. 安装 git, python3, python3-pip, nginx 等必备软件包。
4. 为 devuser 用户安装 oh-my-zsh 并设置为默认主题。
5. 在用户主目录下克隆一个示例项目仓库。
6. 启动 nginx 服务。步骤 1: 创建配置文件
创建一个名为 python-dev-env.yml 的文件,内容如下:
#cloud-config # ============= # 1. 用户管理 # ============= users: - name: devuser # 设置用户的主组和附加组 groups: sudo # 设置用户的默认 shell shell: /usr/bin/zsh # 可选:设置用户的 SSH 公钥 (替换为你的公钥) # ssh-authorized-keys: # - ssh-rsa AAAAB3NzaC1yc2E... user@macbook # ================= # 2. 软件包安装 # ================= packages: - git - python3 - python3-pip - nginx - zsh # ================= # 3. 文件写入 # ================= write_files: # 为 devuser 用户创建一个 .zshrc 文件,用于自动安装 oh-my-zsh - path: /home/devuser/.zshrc owner: devuser:devuser permissions: '0644' content: | # 如果 oh-my-zsh 尚未安装,则自动安装 if [ ! -d "/home/devuser/.oh-my-zsh" ]; then sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended # 设置默认主题为 'robbyrussell' sed -i 's/ZSH_THEME=".*"/ZSH_THEME="robbyrussell"/' /home/devuser/.zshrc fi # 加载 oh-my-zsh export ZSH="$HOME/.oh-my-zsh" source $ZSH/oh-my-zsh.sh # ================= # 4. 启动脚本 (runcmd) # ================= # 'runcmd' 中的命令会以 root 权限在机器启动时按顺序执行 runcmd: # 修复新用户家目录的权限 (因为 write_files 是在用户创建前执行的) - chown -R devuser:devuser /home/devuser # 切换到 devuser 用户,执行其 shell 以触发 oh-my-zsh 安装 - sudo -u devuser -H sh -c "source /home/devuser/.zshrc" # 克隆一个示例 Python 项目到用户主目录 - sudo -u devuser -H git clone https://github.com/example/python-demo-app.git /home/devuser/python-demo-app # 启动 nginx 服务 - systemctl start nginx # 设置 nginx 开机自启 - systemctl enable nginx # ================= # 5. 最终消息 (可选) # ================= # 在控制台输出一条欢迎信息 final_message: "? Python 开发环境已准备就绪!请使用 'orb -u devuser -m my-python-dev' 登录。Nginx 服务已启动。" 步骤 2: 使用配置文件创建机器
在终端中执行以下命令:
bash
orb create ubuntu:jammy my-python-dev -c python-dev-env.yml
步骤 3: 验证与登录
创建过程可能需要几分钟,因为需要下载镜像并执行所有配置脚本。完成后,您会看到 finalmessage 中的欢迎信息。
现在,您可以直接以新创建的 devuser 身份登录:
bash
orb -u devuser -m my-python-dev
登录后,您会发现:
您正处于 zsh 环境中,并且 oh-my-zsh 已安装好。
python3 和 pip3 命令可用。
git 已配置好,示例项目 python-demo-app 已克隆到您的主目录。
nginx 服务正在后台运行,您可以在 macOS 浏览器中访问 http://localhost 来查看默认的 Nginx 欢迎页。通过这个案例,您可以体会到 Cloud-init 的强大之处。可以根据团队的具体需求,定制更复杂的配置文件,实现开发环境的“一键部署”。
- 作者帖子
- 在下方一键注册,登录后就可以回复啦。