실습 Ansible Playbook 실습 - 시스템 및 서버 관리 - 서버 프로비저닝 자동화 VM - 설계 2
페이지 정보
작성자 꿈꾸는여행자 작성일 25-02-07 13:54 조회 2,763 댓글 0본문
안녕하세요.
꿈꾸는여행자입니다.
Ansible을 통한 Infra의 다양한 자동화 측면이 있습니다.
여러 가지 항목들을 기준으로 설계 및 구현 해보는 과정을 진행하고자 합니다.
이번 항목에서는 다음 내용을 기준으로
설계해 보겠습니다.
1. 시스템 및 서버 관리
1.1. 서버 프로비저닝 자동화 (Bare Metal, Cloud, VM)
- KVM 배포
감사합니다.
> 아래
아래는 **Ansible Playbook**을 사용하여 **KVM을 활용한 Rocky Linux 8.10 가상 머신(VM) 배포**를 자동화하는 코드입니다.
이 Playbook은 `virt-install` 및 `virsh`을 활용하여 VM을 생성하고, 기본 네트워크 및 스토리지 설정을 자동화합니다.
---
### ** 전제 조건**
1. KVM(QEMU), `libvirt`, `virt-manager`, `virt-install`, `virsh`가 설치된 환경
2. Ansible이 설치된 컨트롤 노드에서 KVM 호스트에 SSH 접속 가능 (`ansible_user`는 `sudo` 권한 필요)
3. Rocky Linux 8.10 ISO 파일이 `/var/lib/libvirt/images/rocky-8.10.iso`에 위치
4. VM 디스크는 `/var/lib/libvirt/images/rocky-vm.qcow2`로 생성
---
### ** Ansible Playbook: Rocky Linux 8.10 KVM 배포**
```yaml
---
- name: Deploy Rocky Linux 8.10 on KVM
hosts: kvm_host
become: true
vars:
vm_name: "rocky-vm"
vm_ram: 4096 # 4GB RAM
vm_vcpus: 2 # 2 CPU
vm_disk_size: 20G # 20GB Disk
vm_disk_path: "/var/lib/libvirt/images/{{ vm_name }}.qcow2"
vm_iso_path: "/var/lib/libvirt/images/rocky-8.10.iso"
vm_network: "default"
vm_os_variant: "rocky8.10"
tasks:
- name: Ensure required packages are installed
ansible.builtin.package:
name:
- qemu-kvm
- libvirt-daemon
- libvirt-clients
- virt-install
- virt-manager
- bridge-utils
state: present
- name: Start and enable libvirtd service
ansible.builtin.systemd:
name: libvirtd
state: started
enabled: true
- name: Create a VM disk image
ansible.builtin.command:
cmd: qemu-img create -f qcow2 {{ vm_disk_path }} {{ vm_disk_size }}
creates: "{{ vm_disk_path }}"
- name: Deploy Rocky Linux 8.10 VM using virt-install
ansible.builtin.command:
cmd: >
virt-install --name {{ vm_name }}
--ram {{ vm_ram }} --vcpus {{ vm_vcpus }}
--disk path={{ vm_disk_path }},format=qcow2
--cdrom {{ vm_iso_path }}
--os-variant {{ vm_os_variant }}
--network network={{ vm_network }}
--graphics vnc,listen=0.0.0.0
--noautoconsole
async: 300
poll: 0
- name: Wait for VM to be running
ansible.builtin.wait_for:
timeout: 60
- name: Ensure VM is running
ansible.builtin.command:
cmd: virsh list --all
register: vm_status
changed_when: false
- name: Print VM status
ansible.builtin.debug:
msg: "{{ vm_status.stdout_lines }}"
```
---
### ** 설명**
1. **필수 패키지 설치**: `qemu-kvm`, `libvirt`, `virt-install` 등을 설치합니다.
2. **libvirtd 서비스 시작 및 활성화**: VM을 관리하는 `libvirtd`를 실행합니다.
3. **QCOW2 디스크 생성**: `qemu-img` 명령어로 가상 머신용 QCOW2 이미지를 생성합니다.
4. **virt-install을 사용하여 VM 생성**:
- CPU: 2 vCPUs
- RAM: 4GB
- Disk: 20GB QCOW2
- ISO 부팅을 사용하여 Rocky Linux 8.10을 설치합니다.
- 기본 KVM 네트워크(`default`)를 사용합니다.
- VNC를 활성화하여 원격 설치 가능
5. **VM 실행 확인**: `virsh list --all` 명령어로 VM이 정상 실행되는지 확인합니다.
---
### ** 실행 방법**
1. **인벤토리 파일(`inventory.ini`) 생성**
```ini
[kvm_host]
192.168.1.100 ansible_user=root ansible_ssh_private_key_file=~/.ssh/id_rsa
```
2. **Playbook 실행**
```sh
ansible-playbook -i inventory.ini deploy-rocky.yml
```
---
이 Playbook을 실행하면 **KVM 기반 Rocky Linux 8.10 VM이 자동으로 생성**됩니다.
댓글목록 0
등록된 댓글이 없습니다.
