ubuntu 설치 자동화(autoinstall)를 위한 user-data를 만들어 내려면 문법 하나만 잘못해서 오류가 많이 난다.
특히 스토리지 설정은 아주 까다로워서 단어 하나 숫자 계산하나만 틀려도 오류를 뿜어 내면서 재설치를 해야
하는 경우가 생긴다.
그런 이런 "user-data를 쉽게 뽑아낼 수 있는 방법은 없는 것인가?"에서 이것도 방법이 존재한다.
일단 ubuntu로 시스템에 OS를 설치한다.
그리고 "/var/log/installer/" 디렉토리가 생성되어 있는데 해당 디렉토리에는 설치 시, 사용한 설정 파일과
각종 로그가 저장되어 있다.
# cd /var/log/installer/
# ls
autoinstall-user-data curtin-install.log subiquity-client-debug.log.2360 subiquity-server-debug.log
block installer-journal.txt subiquity-client-info.log subiquity-server-debug.log.2358
casper-md5check.json media-info subiquity-client-info.log.2360 subiquity-server-info.log
curtin-install-cfg.yaml subiquity-client-debug.log subiquity-curtin-install.conf subiquity-server-info.log.2358
이중에 주목해야할 파일이 "curtin-install-cfg.yaml" 파일로 열어보면 어딘가 익숙한 설정 정보로 아주 좋은 정보가 포함되어
있다.
# cat curtin-install-cfg.yaml
..
sources:
ubuntu00: cp:///media/filesystem
stages:
- early
- partitioning
- extract
- curthooks
- hook
- late
storage:
config:
- grub_device: false
id: disk-nvme0n1
name: ''
path: /dev/nvme0n1
preserve: true
ptable: gpt
serial: PNY CS1030 256GB SSD_PNY2139211001010383A
type: disk
wwn: eui.6479a756b0d013de
- device: disk-nvme0n1
flag: boot
grub_device: true
id: partition-nvme0n1p1
number: 1
preserve: true
size: 536870912
type: partition
- device: disk-nvme0n1
flag: linux
grub_device: false
id: partition-nvme0n1p2
number: 2
preserve: true
size: 64424509440
type: partition
wipe: superblock
..
version: 1
verbosity: 3
write_files:
etc_default_keyboard:
..
'
path: etc/default/keyboard
permissions: 420
etc_machine_id:
content: '658db2dad6cd449a97214ce22c409166
'
..
그리고 "autoinstall-user-data" 파일도 중요하다.
# cat autoinstall-user-data
#cloud-config
autoinstall:
apt:
geoip: false
preserve_sources_list: false
primary:
- arches: [amd64, i386]
uri: http://mirror.kakao.com/ubuntu
- arches: [default]
uri: http://ports.ubuntu.com/ubuntu-ports
identity: {hostname: homne, password: $6$...BN.,
realname: root, username: root}
kernel:
kernel: {package: linux-generic}
keyboard: {layout: us, toggle: null, variant: ''}
locale: en_US.UTF-8
network:
ethernets:
eno1: {dhcp4: true, optional: true}
version: 2
ssh:
allow-pw: true
authorized-keys: [ssh-rsa AAAAB3NzaC1yc...ZQ4ELXO5cdj8cUSa4f
root@EnCicle]
install-server: true
storage:
config:
- {ptable: gpt, serial: PNY CS1030 256GB SSD_PNY2139211001010383A, wwn: eui.6479a756b0d013de,
path: /dev/nvme0n1, preserve: true, name: '', grub_device: false, type: disk,
id: disk-nvme0n1}
- {device: disk-nvme0n1, size: 536870912, flag: boot, number: 1, preserve: true,
grub_device: true, type: partition, id: partition-nvme0n1p1}
- {device: disk-nvme0n1, size: 64424509440, wipe: superblock, flag: linux, number: 2,
preserve: true, grub_device: false, type: partition, id: partition-nvme0n1p2}
updates: security
user-data: {disable_root: false}
version: 1
일단 삭제 가능한 부분은 최대한 삭제하고 샘플로 넣은 데이터이다.
해당 데이터를 사용해서 user-data를 만들어서 테스트해본다.
이건 그냥 만들고 테스트해보고를 여러번 반복해서 자신의 것으로 만드는 것이 가장 빠른 길이다.