cloud-init 是一个系统配置工具,当系统起来时,cloud-init会从固定分区或者url读取数据,然后执行定制化操作。
cloud-init 有四个执行阶段:
- local: cloud-init-local.service
- init: cloud-init.service
- config: cloud-config.service
- final: cloud-final.service
配置
cloud-init 各阶段完成哪些工作可以在 /etc/cloud/cloud.cfg 中查看
- local 阶段: 作为 cloud-init 的初始阶段,此时主要完成网口的配置
/usr/bin/cloud-init init –local - init 阶段
- config 阶段
- final 阶段
cloud-init 脚本生成
社区提供了write-mime-multipart
工具来生成cloud-init脚本。使用方法如下:
1 | $ cat my-boothook.txt |
User Data 输入格式
- Gzip Compressed Content
- Mime Multi Part archive
- User-Data Script
以#!
或Content-Type: text/x-shellscript
开头。
存放用户脚本,可以是 python, shell, perl 等。user data 里的脚本执行比较晚,类似 rc.local, 而且只在第一次启动时 执行。 - Include File
以#include
或Content-Type: text/x-include-url
开头。
includ file 的内容是一串 url, 每行一个,cloud-init 启动时会 读取 url 链接的内容。 - Cloud Config Data
以#cloud-config
或Content-Type: text/cloud-config
开头,内容按规定格式编写。 - Upstart Job
以#upstart-job
或Content-Type: text/upstart-job
开头,
文件内容会存放在/etc/init ,以供其它 job 使用。 - Cloud Boothook
以#cloud-boothook 或 Content-Type: text/cloud-boothook 开头。
boothook 数据会保存到 /var/lib/cloud ,然后立刻执行。boothook 每次上电都会执行,没有机制指定只运行一次。 - Part Handler