실습 Ansible Playbook 실습 - 시스템 및 서버 관리 - 서버 프로비저닝 자동화 VM - 설계 1
페이지 정보
작성자 꿈꾸는여행자 작성일 25-02-10 09:56 조회 2,656 댓글 0본문
안녕하세요.
꿈꾸는여행자입니다.
Ansible을 통한 Infra의 다양한 자동화 측면이 있습니다.
여러 가지 항목들을 기준으로 설계 및 구현 해보는 과정을 진행하고자 합니다.
이번 항목에서는 다음 내용을 기준으로
설계해 보겠습니다.
1. 시스템 및 서버 관리
1.1. 서버 프로비저닝 자동화 (Bare Metal, Cloud, VM)
- Host의 KVM 상태 확인
기존 설계 내용에 선행되어야 하는 항목으로 보여 추가해 보았습니다.
감사합니다.
> 아래
아래는 **KVM 설치 상태 및 구성 정보를 확인하는 Ansible Playbook**입니다.
이 Playbook은 대상 호스트(KVM 서버)의 **KVM 설치 여부, 필수 패키지 존재 여부, libvirt 서비스 상태, 가상 머신 리스트, 네트워크 및 스토리지 상태** 등을 점검합니다.
---
### ** Ansible Playbook: KVM 설치 및 상태 점검**
```yaml
---
- name: Check KVM Installation and Status
hosts: kvm_host
become: true
gather_facts: true
tasks:
- name: Check if KVM is supported on this system
ansible.builtin.command: egrep -c '(vmx|svm)' /proc/cpuinfo
register: kvm_support
changed_when: false
- name: Print KVM support information
ansible.builtin.debug:
msg: "KVM Support: {{ 'Yes' if kvm_support.stdout | int > 0 else 'No' }}"
- name: Check installed KVM-related packages
ansible.builtin.command: rpm -q qemu-kvm libvirt virt-install virt-manager bridge-utils
register: kvm_packages
changed_when: false
ignore_errors: true
- name: Print installed KVM packages
ansible.builtin.debug:
msg: "{{ kvm_packages.stdout_lines }}"
- name: Check libvirt service status
ansible.builtin.systemd:
name: libvirtd
register: libvirtd_status
changed_when: false
- name: Print libvirt service status
ansible.builtin.debug:
msg: "Libvirt Service: {{ 'Running' if libvirtd_status.status.ActiveState == 'active' else 'Stopped' }}"
- name: List running virtual machines
ansible.builtin.command: virsh list --all
register: virsh_list
changed_when: false
ignore_errors: true
- name: Print running virtual machines
ansible.builtin.debug:
msg: "{{ virsh_list.stdout_lines }}"
- name: Check available libvirt networks
ansible.builtin.command: virsh net-list --all
register: virsh_net_list
changed_when: false
ignore_errors: true
- name: Print libvirt network status
ansible.builtin.debug:
msg: "{{ virsh_net_list.stdout_lines }}"
- name: Check available libvirt storage pools
ansible.builtin.command: virsh pool-list --all
register: virsh_pool_list
changed_when: false
ignore_errors: true
- name: Print libvirt storage pools
ansible.builtin.debug:
msg: "{{ virsh_pool_list.stdout_lines }}"
```
---
### ** 설명**
1. **KVM 지원 여부 확인** (`egrep -c '(vmx|svm)' /proc/cpuinfo`)
- CPU가 하드웨어 가상화(KVM)를 지원하는지 확인합니다.
2. **필수 패키지 설치 여부 확인**
- `rpm -q` 명령어를 사용하여 `qemu-kvm`, `libvirt`, `virt-install`, `virt-manager`, `bridge-utils` 패키지의 설치 상태를 출력합니다.
3. **libvirt 서비스 상태 확인**
- `systemd` 모듈을 사용하여 `libvirtd` 서비스가 실행 중인지 확인합니다.
4. **실행 중인 가상 머신 목록 확인**
- `virsh list --all` 명령어를 실행하여 현재 KVM에서 실행 중이거나 정지된 VM을 출력합니다.
5. **네트워크 설정 확인**
- `virsh net-list --all`을 실행하여 libvirt에서 설정된 네트워크 목록을 확인합니다.
6. **스토리지 풀 확인**
- `virsh pool-list --all`을 실행하여 KVM에서 관리하는 스토리지 풀 상태를 확인합니다.
---
### ** 실행 방법**
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 check-kvm-status.yml
```
---
### ** 추가 개선 가능 항목**
- **KVM 패키지 미설치 시 경고 출력**
- **libvirt 서비스 비활성화 시 자동 재시작**
- **VM 상태 확인 후 이상 감지 시 관리자 알림 (Slack, Email)**
- **스토리지 및 네트워크 문제 감지 및 자동 복구**
이 Playbook을 활용하면 KVM 환경의 설치 및 상태 점검을 자동화할 수 있습니다.
- 이전글 Ansible Playbook 실습 - 시스템 및 서버 관리 - 서버 프로비저닝 자동화 VM - 구현 1
- 다음글 Ansible Playbook 실습 - 시스템 및 서버 관리 - 서버 프로비저닝 자동화 VM - 설계 2
댓글목록 0
등록된 댓글이 없습니다.
