간단한 방법으로 cloud-init(autoinstall)에 사용할 user-data 정보 구하기

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를 만들어서 테스트해본다.

이건 그냥 만들고 테스트해보고를 여러번 반복해서 자신의 것으로 만드는 것이 가장 빠른 길이다.