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

본문 바로가기
사이트 내 전체검색

Ansible 자료실

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

페이지 정보

profile_image
작성자 꿈꾸는여행자
댓글 0건 조회 2,766회 작성일 25-02-07 13:54

본문

안녕하세요.

 

꿈꾸는여행자입니다.

 

 

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이 자동으로 생성**됩니다.  

 

 

댓글목록

등록된 댓글이 없습니다.

회원로그인

회원가입

사이트 정보

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

접속자집계

오늘
2,509
어제
2,585
최대
8,445
전체
2,034,719
Copyright © www.linuxdata.org All rights reserved.