반응형
Proxmox 에 윈도우 VM 을 올려놓았는데
사용하지 않을때는 종료 시켜 놓는다.
그런데 짝꿍은 Proxmox 접근 권한이 없으니까...HA 에 전원 버튼을 만들어줬다.
참조 글은 아래 링크
https://www.jamescoyle.net/tag/api
대충 아래 내용들을 채워 넣어야 한다
- TICKET is the authentication ticket that was produced in the Parse Proxmox Web API authentication ticket and the CSRFPreventionToken in Bash post. Ideally you would programatically call the authentication routine and then pass the values straight into the below API calls.
- CSRF is produced in the same way as TICKET. It’s actually only required when writing data to the API but there is no harm in always including it.
- HOST is the host or IP address of the Proxmox server.
- NODE is the node name of the Proxmox server that the LXC Container resides on.
- TARGET_VM is the VMID of the LXC Container.
Proxmox 웹에 접속한 후에
Datacenter 선택 후
Permission -> User -> add 로 사용자를 하나 추가하고 아이디/암호 기억하자
Permission -> Roles 에서 Create 로 API 용 role 을 하나 추가해주자
proxmox host shell 에 접속해서 아래와 같은 명령어로 role 을 부여해주자.
pveum acl modify / -user API@pve -role APIrole
이제 아래와 같은 스크립트를 만들면 된다. 중간 5줄만 잘 채우자.
VM 시작 스크립트
VMwin10Start.sh
#!/bin/bash
decodeDataFromJson(){
echo `echo $1 \
| sed 's/{\"data\"\:{//g' \
| sed 's/\\\\\//\//g' \
| sed 's/[{}]//g' \
| awk -v k="text" '{n=split($0,a,","); for (i=1; i<=n; i++) print a[i]}' \
| sed 's/\"\:\"/\|/g' \
| sed 's/[\,]/ /g' \
| sed 's/\"// g' \
| grep -w $2 \
| awk -F "|" '{print $2}'`
}
PROX_USERNAME=user@pve
PROX_PASSWORD=password
HOST=proxmox_host_ip
NODE=proxmox_node
TARGET_VMID=VM_number
DATA=`curl -s -k -d "username=$PROX_USERNAME&password=$PROX_PASSWORD" $HOST/api2/json/access/ticket`
TICKET=$(decodeDataFromJson $DATA 'ticket')
CSRF=$(decodeDataFromJson $DATA 'CSRFPreventionToken')
START_TASK_DATA=`curl -s -k -b "PVEAuthCookie=$TICKET" -H "CSRFPreventionToken: $CSRF" -X POST $HOST/api2/json/nodes/$NODE/qemu/$TARGET_VMID/status/start`
VM 종료 스크립트
VMwin10Shutdown.sh
#!/bin/bash
decodeDataFromJson(){
echo `echo $1 \
| sed 's/{\"data\"\:{//g' \
| sed 's/\\\\\//\//g' \
| sed 's/[{}]//g' \
| awk -v k="text" '{n=split($0,a,","); for (i=1; i<=n; i++) print a[i]}' \
| sed 's/\"\:\"/\|/g' \
| sed 's/[\,]/ /g' \
| sed 's/\"// g' \
| grep -w $2 \
| awk -F "|" '{print $2}'`
}
PROX_USERNAME=user@pve
PROX_PASSWORD=password
HOST=proxmox_host_ip
NODE=proxmox_node
TARGET_VMID=VM_number
DATA=`curl -s -k -d "username=$PROX_USERNAME&password=$PROX_PASSWORD" $HOST/api2/json/access/ticket`
TICKET=$(decodeDataFromJson $DATA 'ticket')
CSRF=$(decodeDataFromJson $DATA 'CSRFPreventionToken')
START_TASK_DATA=`curl -s -k -b "PVEAuthCookie=$TICKET" -H "CSRFPreventionToken: $CSRF" -X POST $HOST/api2/json/nodes/$NODE/qemu/$TARGET_VMID/status/shutdown`
해당 스크립트를 HA config 폴더에 넣고
configuration.yaml 파일에 아래와 같은 shell 커맨드를 넣어준다.
shell_command:
win10start: sh VMwin10Start.sh
win10stop: sh VMwin10Shutdown.sh
이제 요렇게 추가 완료
전원 켜짐은 device_tracker 로 알아서 만들기
반응형
'서버와 홈디바이스 > NAS, VPN, 클라우드' 카테고리의 다른 글
Proxmox UPS 설정 가이드 (1) | 2023.03.22 |
---|---|
시놀로지 duckdns dns 인증서 설정 - acme (0) | 2023.03.22 |
Proxmox 7.0 컨테이너에서 plex hw 트랜스코딩 사용 (0) | 2021.08.16 |
Android ADB 연결 후 vi / nano 에디터 사용 (0) | 2020.08.13 |
WireGurad 설치 - RT2600ac 시놀로지 라우터 (0) | 2020.07.23 |