본문 바로가기

리눅스

[WIP] 우분투에서 cloud-init을 사용하여 운영체제 설치를 자동화하는 방법

728x90

우분투에서 cloud-init을 사용하여 운영체제 설치를 자동화하는 방법(Auto Install)

우분투 20.04 이상에서는 Autoinstall + cloud-init을 활용해 운영체제 설치부터 초기 설정까지 완전히 자동화할 수 있습니다.

1. 개념 이해

Autoinstall vs cloud-init

  • Autoinstall → OS 설치 과정 자동화 (디스크, 사용자, 네트워크 등)
  • cloud-init → 설치 이후 초기 설정 수행 (패키지, 스크립트 등)

실제 구조는 다음과 같습니다.

Autoinstall (설치 단계)
        ↓
cloud-init (초기 설정 단계)

2. NoCloud 데이터 구성

로컬 또는 ISO 기반 설치에서는 NoCloud datasource를 사용합니다.

 

필수 파일 3개

touch user-data meta-data vendor-data

3. user-data

sudo vim user-data
#cloud-config
autoinstall:
  version: 1

  identity:
    hostname: pxe-client
    username: ubuntu
    password: "$6$rounds=4096$examplehashedpassword"

  locale: en_US
  keyboard:
    layout: us

  ssh:
    install-server: true
    allow-pw: true

  apt:
    geoip: true

  storage:
    config:
      - type: disk
        id: disk-sda
        path: /dev/sda
        ptable: gpt
        wipe: superblock
        grub_device: true

      - type: partition
        device: disk-sda
        size: 1G
        number: 1

      - type: format
        fstype: xfs
        volume: partition-1

      - type: mount
        path: /boot
        device: format-1

      - type: partition
        device: disk-sda
        size: -1
        number: 2

      - type: lvm_volgroup
        name: ubuntu-vg
        devices: [partition-2]

      - type: lvm_partition
        name: ubuntu-lv
        volgroup: ubuntu-vg
        size: 100%

      - type: format
        fstype: xfs
        volume: ubuntu-lv

      - type: mount
        path: /
        device: format-2

  network:
    version: 2
    ethernets:
      ens3:
        dhcp4: true
728x90

중요: 비밀번호 설정

비밀번호는 평문이 아닌 암호화된 값을 사용해야 합니다.

openssl passwd -6

4. meta-data 파일

instance-id: ubuntu-autoinstall
local-hostname: ubuntu

5. ISO에 cloud-init 데이터 포함

방법 1: seed ISO 생성

genisoimage -output seed.iso \
  -volid cidata \
  -joliet -rock \
  user-data meta-data

방법 2: 부팅 파라미터로 지정

  • 부팅 시 다음 옵션 추가
autoinstall ds=nocloud;s=/cdrom/

6. 설치 과정

  1. Ubuntu Server ISO로 부팅
  2. autoinstall 옵션 적용
  3. seed ISO 또는 datasource에서 설정 읽기
  4. 자동 설치 진행
  5. 재부팅 후 cloud-init 실행

7. cloud-init 동작 확인

설치 후 상태 확인

cloud-init status

로그 확인

less /var/log/cloud-init.log

 

참고URL

Ubuntu installation documentation : Automated Server installation

Ubuntu installation documentation : Autoinstall schema

 

728x90