Ansible

Ansible 사용하여 vSphere 환경에서 가상머신 생성

황동리 2024. 3. 27. 16:52
반응형

Ansible을 사용해서 vSphere 환경에서 가상머신 생성해보겠습니다.

1. Ansible 설치

먼저 ansible을 설치해보겠습니다. (OS는 ubuntu 20.04를 사용했습니다.)

  1. 패키지 업데이트
# apt update

 

  1. PPA 저장소를 관리할 수 있는 소프트웨어 공통 패키지 설치
# apt install software-properties-common

 

  1. Ansible PPA(Personal Package Archive)를 apt-repository에 추가
# apt-add-repository ppa:ansible/ansible

 

  1. ansible 설치
# apt install -y ansible

 

  1. ansible 버전 확인
# ansible --version

 

  1. ansible-playbook 사용하기 위해 VMware vSphere와 상호 작용 하기 위한 pyvmomi python 라이브러리 설치
# apt install -y python3-pyvmomi

2. playbook 작성

playbook 사용하기 위한 사전작업을 모두 완료했으면, 이제 yaml 파일을 작성해보겠습니다.

ansible doc를 참조해서 만들었습니다.
https://docs.ansible.com/ansible/latest/collections/community/vmware/vmware_guest_module.html#ansible-collections-community-vmware-vmware-guest-module

먼저, esxi_hostname, vcenter_hostname, vcenter_username, vcenter_password들과 같은 자주 사용되는 변수를 미리 정의 해줍니다.

그리고 필요한 모듈을 사용해서 가상머신의 이름, 스펙, OS, 생성 폴더 등을 정의해주면 생성이 됩니다.

---
- hosts: localhost
  gather_facts: no
  vars:	 # 변수 처리
    ansible_python_interperter: /usr/bin/python3
    esxi_hostname: "<ESXi 호스트명 or IP>"
    vcenter_hostname: "<vCenter 호스트명 or IP>"
    vcenter_username: "<vCenter 로그인 IP>"
    vcenter_password: "<vCenter 로그인 PW>"
    datacenter_name: "<vCenter에서 생성한 datacenter 이름>"

  tasks:
    - name: Create Virtual Machine
      community.vmware.vmware_guest:
        hostname: "{{ vcenter_hostname }}" # 위에서 변수 처리한 내용을 사용
        username: "{{ vcenter_username }}" # 위에서 변수 처리한 내용을 사용
        password: "{{ vcenter_password }}" # 위에서 변수 처리한 내용을 사용
        esxi_hostname: "{{ esxi_hostname }}" # 위에서 변수 처리한 내용을 사용
        datacenter: "{{ datacenter_name }}" # 위에서 변수 처리한 내용을 사용
        name: "KSH-Slave-2"	# 가상머신의 이름 정의
        validate_certs: no	# vcenter의 SSL 인증 끄기
        folder: "/KSH"	# 가상머신 생성할 폴더 정의
        state: poweredon	# 가상머신 생성 후 전원 켜기
        guest_id: ubuntu64Guest	# 생성할 가상머신의 OS 정의
        disk:
          - size_gb: 500	# 디스크 용량 설정
            datastore: "COMM_vsanDatastore"	# 데이터스토어 이름 정의
        hardware:
          memory_mb: 16000 # 메모리 용량 설정
          num_cpus: 8	# CPU 설정
          hotadd_cpu: "true"	# 가상머신이 동작하는 도중에 CPU 코어 갯수 변경 가능하도록함
          hotadd_memory: "true"	# 가상머신이 동작하는 도중에 Memory 용량 변경 가능하도록함
          nested_virt: "true" # 중첩 가상화 할 때 사용
        networks:
          - name: "LS-OV-10.10.91.x-DMZ"	# network 어댑터 정의
        cdrom:
          - controller_number: 0
            unit_number: 0
            state: present
            type: iso
            iso_path: "[COMM_vsanDatastore] e07b0164-c8ce-7434-efa0-5c6f69eafda0/ubuntu-20.04.6-desktop-amd64.iso"
      delegate_to: localhost

3. playbook 실행

yaml 파일까지 다 만들었으면 ansible-playbook 명령어를 통해 실행시키면 됩니다.

# ansible-playbook <위에서 생성한 yaml 파일>

이상입니다.

반응형