반응형
Ansible을 사용해서 vSphere 환경에서 가상머신 생성해보겠습니다.
1. Ansible 설치
먼저 ansible을 설치해보겠습니다. (OS는 ubuntu 20.04를 사용했습니다.)
- 패키지 업데이트
# apt update
- PPA 저장소를 관리할 수 있는 소프트웨어 공통 패키지 설치
# apt install software-properties-common
- Ansible PPA(Personal Package Archive)를 apt-repository에 추가
# apt-add-repository ppa:ansible/ansible
- ansible 설치
# apt install -y ansible
- ansible 버전 확인
# ansible --version
- 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 파일>
이상입니다.
반응형
'Ansible' 카테고리의 다른 글
AWX 시작해보기 (Inventory, Credentials, Projects, Templates) (0) | 2024.05.14 |
---|---|
AWX 설치 (k8s 환경) (0) | 2024.05.13 |
Ansible 사용하여 nginx 설치 및 index 페이지 변경 (0) | 2024.02.14 |
Ansible 사용하여 WordPress, Haproxy 설정 해보기 (0) | 2024.02.11 |
Ansible 모듈 사용해보기 (shell, user, file, copy ...등) (0) | 2024.02.05 |