Packer 安装
基本理解
Alpine Linux 安装程序只是一堆 shell 脚本,请参阅 setup-alpine.in 在 alpine-conf 仓库中。理解这一点是成功的关键。
packer 示例 boot_command
这是来自 QEMU 构建器的 'boot_command' 的一部分。
"boot_command": [ "root<enter><wait>", "ifconfig eth0 up && udhcpc -i eth0<enter><wait5>", "wget http://{{ .HTTPIP }}:{{ .HTTPPort }}/answers<enter><wait>", "setup-alpine -f answers<enter><wait5>", "{{user `ssh_password`}}<enter><wait>", "{{user `ssh_password`}}<enter><wait5>", "<wait>y<enter><wait10>", "rc-service sshd stop<enter>", "mount /dev/sda3 /mnt<enter>", "echo 'PermitRootLogin yes' >> /mnt/etc/ssh/sshd_config<enter>", "umount /mnt<enter>", "reboot<enter>" ],
它的作用是模拟人类在“控制台”(VNC)中输入。在运行 Alpine Linux 安装程序(即 'setup-alpine')之前,它会:
- 以 'root' 身份登录(安装介质不需要密码)
- 通过 DHCP 配置第一个网络接口
- 从 'packer' 内置 HTTP 服务器获取 'answers' 文件,以便能够开始自动化安装
- 运行带有 'answers' 文件的 Alpine Linux 'setup-alpine' 安装程序脚本
- 由于 'setup-alpine' 脚本要求配置 root 密码,它就执行此操作
- 之后,您可以运行任何您想要的命令,但请记住,它仍然是安装介质;您可以“重启”到已安装的系统并运行 'provisioners'。
'answer' 文件可能如下所示
KEYMAPOPTS="us us" HOSTNAMEOPTS="-n alpine" INTERFACESOPTS="auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp " DNSOPTS="-n 8.8.8.8" TIMEZONEOPTS="-z UTC" PROXYOPTS="none" APKREPOSOPTS="-1" SSHDOPTS="-c openssh" NTPOPTS="-c openntpd" DISKOPTS="-L -m sys /dev/vda"
packer 示例 provisioners
"provisioners": [ { "type": "shell", "scripts": [ "{{ template_dir }}/../scripts/00_alpinelinux_base.sh", "{{ template_dir }}/../scripts/99_alpinelinux_base.sh" ] } ],