Ansible Playbook 실습 - 시스템 및 서버 관리 - 서버 프로비저닝 자동화 VM - 설계 1 > Ansible 자료실

본문 바로가기

사이트 내 전체검색

뒤로가기 Ansible 자료실

실습 Ansible Playbook 실습 - 시스템 및 서버 관리 - 서버 프로비저닝 자동화 VM - 설계 1

페이지 정보

작성자 꿈꾸는여행자 작성일 25-02-10 09:56 조회 2,660 댓글 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 환경의 설치 및 상태 점검을 자동화할 수 있습니다.  

 

 

댓글목록 0

등록된 댓글이 없습니다.

Copyright © 소유하신 도메인. All rights reserved.

사이트 정보

회사명 : (주)리눅스데이타시스템 / 대표 : 정정모
서울본사 : 서울특별시 강남구 봉은사로 114길 40 홍선빌딩 2층 / tel : 02-6207-1160
대전지사 : 대전광역시 유성구 노은로174 도원프라자 5층 / tel : 042-331-1161

PC 버전으로 보기