이 글은 Rocky Linux와 같은 Red Hat 계열 운영 체제에서 Kickstart를 사용해 자동화된 무인 설치 환경을 구성하는 방법입니다. 최종목표는 Kickstart 템플릿을 작성 & Ansible에 결합하여 효율적인 환경을 구성하는 데 목적을 두고 있습니다.
다음 단계에서는 Kickstart 템플릿을 Ansible과 통합하여 동적인 값 설정과 대규모 배포 환경에 적용 방안을 다룰 예정입니다.
Kickstart
Kickstart는 Red Hat 계열의 Linux 배포판에서 무인 설치를 자동화 하는데 사용되는 파일 기반의 설치 방식입니다. Kickstart를 정의하여 일관성 있는 시스템 설치가 가능합니다.
특히 Kickstart는 Infrastructure as Code (IaC) 환경을 구성할 때 유용한 기초 기술로, Ansible과 같은 도구와 결합하여 동적이고 유연한 자동화 환경을 구축할 수 있습니다.
이 글에서는 위에서 설명한 Kickstart의 주요 구성을 살펴보고 실무에서 적용 할 수 있는 템플릿을 작성하는 예시를 소개하겠습니다.
Kickstart 작성의 주요 구성요소
- 기본 시스템 설정
- 설치 소스
- 디스크 파티션
- 패키지 설치
- 설치 후 작업
Kickstart 파일 구성하기 앞서 알아두어야 할점
kickstart 파일은 일반적으로 .cfg 확장자를 사용하지만, 이 예제에서는 kickstart.cfg.j2 파일을 예시로 작성하였습니다. 이는 Jinja2 템플릿 문법을 적용하여 동적 변수를 사용하기 위함입니다.
Ansible과 최종 결합하면 이 템플릿을 통해 다양한 환경에서 값을 동적으로 설정하고 배포할 수 있는 IaC 환경 구성이 가능합니다.
Kickstart.cfg.j2 템플릿 구성 예시
아래는 Rocky Linux 설치를 자동화하기 위한 kickstart.cfg.j2 템플릿을 작성하는 예시입니다.
# 언어 및 키보드 설정
lang ko_KR.UTF-8
keyboard --vckeymap=kr --xlayouts='kr'
# 네트워크 설정 (DHCP)
network --bootproto=dhcp --device=ens3 --onboot=on
# 시간대 설정
timezone Asia/Seoul --utc
# 사용자 계정 설정
rootpw --plaintext {{ vm_user }}
user --name={{ vm_user }} --password={{ vm_password }} --plaintext --gecos="{{ vm_user }}" --groups=wheel
# 설치 원천 (로컬 미디어)
# cdrom
# 설치 원천 설정 (네트워크 URL 사용)
url --url={{ vm_inst_base_repo }}
# 저장소 설정
repo --name="AppStream" --baseurl={{ vm_inst_app_repo }}
repo --name="BaseOS" --baseurl={{ vm_inst_base_repo }}
# 부트로더 설정
bootloader --location=mbr --boot-drive=vda
# 디스크 파티션 설정 (자동 설정)
zerombr # 모든 디스크 초기화
clearpart --all --initlabel # 모든 기존 파티션 제거
autopart --type=lvm # LVM으로 자동 파티션 구성
# 패키지 설치
%packages
@^minimal-environment # 최소 설치 환경
chrony # 시간 동기화
vim # 텍스트 편집기
bash-completion # 명령어 자동 완성
%end
# 설치 후 스크립트
%post
# 설치 완료 로그 작성
echo "Installation complete on $(date)" > /root/install.log
# NTP 설정
systemctl enable chronyd
systemctl start chronyd
# SELinux 활성화
setenforce 1
# 방화벽 설정
firewall-cmd --permanent --add-service=ssh
firewall-cmd --reload
umount /mnt/source
echo "Post-install tasks completed" >> /root/install.log
%end
구성의 내용
- 언어 및 키보드 설정
- 네트워크 설정
- 시간대 설정
- 사용자 설정
- 설치 원천 설정 (로컬 미디어를 사용하지 않고, repo url 을 직접 구성하는 것이 더 편리하고 안정적입니다)
- 부트로더 설정
- 디스크 파티션 설정
- 패키지 설치
- 설치 후 스크립트
주의사항
- 변수 동적 처리 : 템플릿에서는 {{ }} 로 표시된 부분이 있는데 이는 Ansible과 같은 도구를 같이 활용하여 동적으로 처리됩니다.
( 실제 변수 값은 Ansible에서 플레이북 실행시 제공됩니다 )
위에 제시된 Kickstart 템플릿은 Rocky Linux와 같은 Red Hat 계열 운영 체제를 자동화하는 데 필요한 설정 내용으로 작성되었습니다. 다음 글에서는 이 템플릿을 가지고 Ansible과 결합하여 동적이고 효율적인 배포 구성에 대해 다를 예정입니다.
감사합니다.
'DevOps와 Infra > DevOps 일반' 카테고리의 다른 글
K8s에 Next.js CDN 구성과 무중단 배포 전략 (1) (0) | 2025.02.11 |
---|---|
K8s에 Next.js CDN 구성과 무중단 배포 전략 (2) (0) | 2025.02.04 |
SMTP 메일 전송 프로토콜 확인과정 (0) | 2025.01.16 |
gitlab-ce docker container 버전 업하기 (3) | 2024.10.24 |
gitlab 서로다른 레포지토리 병합 미러링 (1) | 2024.09.04 |