반응형
모듈 설치
ansible을 이용하여 proxmox의 VM을 설정하기 위하여 proxmox host에 필요한 python 모듈이 있다.
proxmoxer
requests
모듈 설치를 위하여 아래 기본 패키지를 설치한다.
apt install python3-pip python3-dev build-essential
모듈을 설치한다.
pip3 install proxmoxer
pip3 install requests
모듈이 잘 설치 되었는지 확인한다.
$ pip3 list
Package Version
----------------- --------------
...
proxmoxer 2.0.1
...
requests 2.25.1
...
proxmox host api 테스트
ansible host에서 proxmox api 동작 확인을 위하여 아래와 같은 명령을 수행해 본다.
curl -k -d 'username=root@pam&password=<password>' https://<proxmox_host>:8006/api2/json/access/ticket
$ curl -k -d 'username=root@pam&password=ㅅtest' https://10.10.10.100:8006/api2/json/access/ticket | jq .
{
"data": {
"clustername": "TEST-CLUSTER",
"ticket": "PVE:root@pam:64F925D4::U7Og....1rtAU/GYI13W2aA==",
"username": "root@pam",
"cap": {
"nodes": {
"Sys.Syslog": 1,
"Sys.Console": 1,
"Permissions.Modify": 1,
"Sys.PowerMgmt": 1,
"Sys.Modify": 1,
"Sys.Audit": 1,
"Sys.Incoming": 1
},
"vms": {
"VM.Config.CPU": 1,
"VM.Allocate": 1,
"VM.Config.HWType": 1,
"VM.Config.Options": 1,
"VM.Config.Cloudinit": 1,
"VM.Audit": 1,
"VM.PowerMgmt": 1,
"VM.Monitor": 1,
"VM.Config.CDROM": 1,
"VM.Clone": 1,
"VM.Console": 1,
"VM.Snapshot": 1,
"VM.Config.Network": 1,
"Permissions.Modify": 1,
"VM.Backup": 1,
"VM.Migrate": 1,
"VM.Config.Disk": 1,
"VM.Config.Memory": 1,
"VM.Snapshot.Rollback": 1
},
"access": {
"Group.Allocate": 1,
"Permissions.Modify": 1,
"User.Modify": 1
},
"sdn": {
"SDN.Audit": 1,
"SDN.Allocate": 1,
"Permissions.Modify": 1
},
"dc": {
"SDN.Audit": 1,
"Sys.Audit": 1,
"SDN.Allocate": 1
},
"storage": {
"Datastore.Allocate": 1,
"Datastore.Audit": 1,
"Datastore.AllocateSpace": 1,
"Datastore.AllocateTemplate": 1,
"Permissions.Modify": 1
}
},
"CSRFPreventionToken": "64F925D4:cIsJ7X...D++TJYkk"
}
}
결과가 null로 나오는 경우 proxmox host의 계정 정보나 접속 포트 정보를 확인 한다.
{
"data": null
}
VM 생성하기
ansible proxmox_kvm 모듈을 사용할 예정이며 proxmox의 api token을 생성할수 있지만 여기서는 계정정보를 이용한다.
만들어져 있는 template을 full clone 하는 방식으로 수행한다.
inventory
pve ansible_host=10.10.10.100
playbook
vmid를 지정하지 않으면 자동으로 다음 id를 할당한다.
---
- hosts: all
gather_facts: no
ignore_unreachable: yes
tasks:
- name: Create New VM
proxmox:
api_user: root@pam
api_password: '<proxmox_password>'
api_host: 10.10.10.100
node: "pve_node01"
name: "<vm name>"
clone: "<template name>"
VM update 하기
core, memory, cpuunit 등을 수정한다.
---
- hosts: all
gather_facts: no
ignore_unreachable: yes
tasks:
- name: Update VM
proxmox_kvm:
api_user: root@pam
api_password: '<proxmox_password>'
api_host: 10.10.10.100
node: "pve_node01"
cores: "8"
memory: "16384"
cpuunits: 1000
vmid: <vmid>
update: yes
VM 삭제하기
---
- hosts: all
gather_facts: no
ignore_unreachable: yes
tasks:
- name: Update VM
proxmox_kvm:
api_user: root@pam
api_password: '<proxmox_password>'
api_host: 10.10.10.100
node: "pve_node01"
vmid: <vmid>
state: absent
반응형