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. 설치 과정
- Ubuntu Server ISO로 부팅
- autoinstall 옵션 적용
- seed ISO 또는 datasource에서 설정 읽기
- 자동 설치 진행
- 재부팅 후 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
'리눅스' 카테고리의 다른 글
| [WIP] MySQL 서버에 MySQL by Zabbix 에이전트 템플릿을 구성하는 방법 (0) | 2026.05.03 |
|---|---|
| [WIP] Python 언어를 사용하여 간단한 Base64 인코딩 및 디코딩 예시 (0) | 2026.05.02 |
| [WIP] 우분투 18.04 LTS에서 Python 3.9 설치 및 기본 설정 방법 (0) | 2026.04.30 |
| [WIP] GitLab Runner를 실행하고 등록하는 방법 (0) | 2026.04.30 |
| [WIP] GitLab Runner 설치 및 등록하기 (0) | 2026.04.30 |