HAOS 에서 proxmox 켜고 끄기

 

image.png

proxmox 의 vm이 아닌 pve를 켜고 끄는 방법은 여러가지가 있습니다

 

우선 켜는 방법은 WOL이 가장 편하겠죠

주기적으로 특정 시간에만 켜는 방법은 BIOS의 RTC를 이용해서 켜고 끌 수 있겠습니다만

RTC는 대부분 요일 지정은 안되고 날짜 지정만 되더라고요

 

그렇기 때문에 스케쥴 관리를 위해서는 HAOS 같이 독립적인 OS를 사용하는 게 좋습니다

당연히 proxmox에 설치 한 HAOS로는 사용이 힘들겠죠

 

만약 proxmox와 별도의 기기에 설치 한 HAOS가 없다면 다른 시스템을 이용하셔도 됩니다

윈도우 맥 같은 데스크탑이나 아이폰 안드로이드폰 같은 스마트폰

스마트싱스 같은 IoT 플랫폼에서도 가능하고요

 

저 같은 경우는 네이티브 헤놀을 proxmox의 헤놀vm에 백업하기 위해서

네이티브 헤놀에 설치 된 HAOS로 진행 했습니다

 

사실 굳이 HAOS 안 쓰고 스마트싱스나 스마트폰에서 켜기 하고

proxmox에 코드 몇 줄로 끄기 설정하고 이렇게 사용하는게 편하긴 합니다만

관리가 불편하다보니 HAOS에서 통합 관리하는 방식으로 구성했습니다

 

우선 HAOS에서 WOL을 통해 proxmox를 켜는 자동화를 설정 합니다

 

image.png

설정 – 자동화 및 장면 선택

 

image.png

우측 하단의 자동화 추가하기 선택 – 새로운 자동화 생성 선택

 

 

image.png

트리거 추가하기 선택 후 시간 및 위치를 선택 해줍니다

 

 

image.png

저 같은 경우는 매주 금용일 새벽에 켜져야 하기 때문에 시간을 선택 했습니다

일정한 패턴이나 특정 이벤트를 캘린더에 등록 했다면 다른 메뉴를 선택 할 수 있습니다

image.png

image.png

그럼 이런 창이 생기는데 간단하죠

새벽 3시에 켜지게 설정을 하려면 03:00:00 AM 을 입력 하시면 됩니다

 

그런데 요일 지정하는 부분이 없죠

 

 

image.png

아래에 있는 그리고 만약에 부분의 조건 추가하기를 선택 후 시간 및 위치를 선택 해줍니다

 

image.png

지금은 요일이 필요하니 시간 선택

 

이런 조건은 태양 위치나 위치 정보를 이용해서도 설정 가능 합니다

커튼이나 조명 같은 건 태양 위치를

보일러나 에어컨 같은 건 누군가의 위치를 조건으로 사용할 수도 있겠죠

 

image.png

image.png

위의 시간 설정과 내용이 다르죠

다른 부분은 건드릴 필요 없이 요일만 선택 해줍니다

여러 요일을 선택하는 것도 가능 합니다

 

 

image.png

이제 맨 아래에 있는 동작 추가하기를 선택 후 wake on lan을 검색 해줍니다

 

만약 검색이 안된다면 따로 추가 해주셔야 할 겁니다 

Wake on LAN – Home Assistant 링크를 통해 진행 해주세요

UI를 통해 추가하는 방식도 있고

configuration.yaml file에 아래 내용을 추가 하는 방법도 있습니다

# Example configuration.yaml entry
wake_on_lan:
 추가 하시고 HAOS를 재시작 하면 됩니다

image.png

WOL 매지패킷 보내기를 선택하시면 이런 화면이 보입니다

 

위에 proxmox가 설치 된 기기의 MAC 주소를 입력 해주시면 됩니다

xx:xx:xx:xx:xx:xx 의 형식으로 넣어 주세요

 

image.png

그 후 저장 하기를 선택하시고 이름을 정해 줍니다

 

image.png

proxmox 기기를 꺼주시고 동작을 실행해서 정상 적으로 켜지는지 확인 해주세요

 

다 되셨으면 이제 끄는 기능을 추가 해줘야 합니다

 

이 부분이 조금 복잡합니다

편한 방법이 있으시면 그 방법을 사용해도 문제는 없습니다

 

저 같은 경우 HAOS에서 쉘 스크립트를 proxmox ssh를 통해 전송하는 방식으로 설정 했습니다 

 

image.png

우선 proxmox Shell을 통해 리눅스 전용 계정을 하나 만들어 줍니다

adduser haos

계정 이름은 편한 걸로 설정 해주세요

 

명령어를 실행하면 새 사용자의 비밀번호를 두 번 입력하라고 나옵니다. 

비밀번호를 입력 하시고 이후 이름, 전화번호 등을 묻는데, 모두 엔터(Enter) 키를 눌러 넘어가도 괜찮습니다.

 

 

image.png

이제 proxmox 에 사용자를 등록해야 합니다
proxmox 웹 UI의 데이터센터 > 권한 > 사용자 탭으로 이동합니다

추가 버튼을 누르고 아래와 같이 입력합니다

사용자 이름: 방금 만든 사용자 이름 (haos)

Realm: Linux PAM standard authentication

추가 버튼을 눌러 완료합니다

 

이제 haos 사용자가 비밀번호 없이 전원 끄기 명령을 실행할 수 있도록 sudo 권한을 설정해야 합니다

이부분이 가장 중요한 부분이죠

 

 

image.png

 

echo 'haos ALL=(ALL) NOPASSWD: /usr/bin/systemctl' > /etc/sudoers.d/ha-shutdown

다시 proxmox 쉘로 돌아와서 아래 명령어를 그대로 복사하여 실행합니다

이 명령어는 haos 사용자에게 오직 /usr/bin/systemctl 명령어만

비밀번호 없이(NOPASSWD) 실행할 수 있는 규칙을 담은 설정 파일을 생성 해주는 겁니다

haos 부분은 생성한 계정 이름으로 변경 해주세요

chmod 440 /etc/sudoers.d/ha-shutdown

sudo는 보안에 민감하여 설정 파일의 권한이 너무 개방적이면 해당 파일을 무시합니다 

위의 명령어로 파일 권한을 440으로 설정하여 소유자와 그룹만 읽을 수 있도록 제한합니다

 

이제 HAOS에서 SSH 키를 생성 해줘야 합니다

 

이제 Proxmox 서버에 접속할 열쇠(SSH 키)를 Home Assistant에서 만들 차례입니다

SSH 키는 공개 키(자물쇠)와 개인 키(열쇠) 한 쌍으로 이루어져, 비밀번호 없이도 안전한 통신을 가능하게 합니다

 

 

image.png

 

Home Assistant 웹 UI에서 **’설정’ > ‘애드온’ > ‘Terminal & SSH’**를 열어 터미널을 실행합니다.

터미널 창에 아래 명령어를 입력해 키 생성을 시작합니다.

ssh-keygen -t rsa -b 4096

키를 어디에 저장할지 묻습니다. /root/.ssh/id_rsa 와 같은 기본 경로가 표시되면 그냥 엔터를 누릅니다

암호를 입력하라고 나옵니다만 자동화를 위해서는 암호가 없어야 하므로, 아무것도 입력하지 말고 엔터를 누릅니다

확인을 위해 한 번 더 엔터를 누릅니다

 

이제 Home Assistant의 SSH 열쇠인 개인 키(id_rsa)와 Proxmox 서버에 설치할 자물쇠인 공개 키(id_rsa.pub)가 생성되었습니다

cat /root/.ssh/id_rsa.pub

위의 명령어로 공개 키의 내용을 확인하고

ssh-rsa로 시작하는 텍스트 전체를 복사합니다

 

이제 복사한 공개 키(자물쇠)를 proxmox의 haos 사용자에게 등록해서

HAOS의 개인 키(열쇠)로만 문을 열 수 있도록 설정해야 합니다

 

 

image.png

proxmox 쉘로 돌아갑니다.

su - haos

haos 사용자로 전환합니다.

 

mkdir ~/.ssh
chmod 700 ~/.ssh

SSH 키를 보관할 .ssh 폴더를 만들고, 소유자만 접근할 수 있도록 권한(700)을 설정합니다 

 

# 아래 "여기에-복사한-공개키-붙여넣기" 부분을 실제 키 내용으로 바꾸세요
echo "여기에-복사한-공개키-붙여넣기" >> ~/.ssh/authorized_keys

이제 공개 키를 저장할 authorized_keys 파일을 만들고 그 안에 복사한 공개 키 내용을 붙여넣습니다

 

chmod 600 ~/.ssh/authorized_keys

이 파일 역시 소유자만 읽고 쓸 수 있도록 권한(600)을 설정해야 합니다

 

exit을 입력하여 다시 root 사용자로 돌아옵니다 

 

이제 거의 다 끝났습니다

 

이제 HAOS에서 SSH 키를 인식 할 수 있게 파일을 옮겨 줘야 하는데요

 

HAOS의 터미널에서 작업을 진행 합니다

 

# /config 폴더 안에 ssh 폴더를 만듭니다
mkdir -p /config/ssh

# 생성된 키를 새 위치로 옮깁니다
mv /root/.ssh/id_rsa /config/ssh/id_rsa

shell_command가 키 파일을 안정적으로 찾을 수 있도록 Home Assistant의 /config 폴더로 키를 옮깁니다

 

 

# configuration.yaml

shell_command:
  shutdown_proxmox: 'ssh -i /config/ssh/id_rsa -o StrictHostKeyChecking=no haos@192.168.0.X "sudo /usr/bin/systemctl poweroff &"'

File Editor 애드온으로 configuration.yaml 파일을 열고 코드를 추가합니다

 

  • -i /config/ssh/id_rsa: 방금 옮긴 개인 키의 정확한 경로입니다

  • haos@192.168.0.X 는 생성한 계정과 proxmox 기기의 아이피로 수정 합니다

수정 후 파일을 저장하고, ‘설정’ > ‘시스템’에서 HAOS를 재시작합니다

 

 

image.png

 

image.png

 

이제 다시 HAOS의 자동화 생성에서 언제는 시간, 조건은 요일을 위에서 만들었던 켜기 자동화 처럼 만들어 줍니다

3시에 켜지 도록 설정 했으니 7시에 꺼지도록 설정을 했습니다

 

image.png

켜기 자동화와 다른 점은 동작 추가하기를 선택 후 proxmox로 검색하면 

쉘 커맨드가 검색 됩니다

 

image.png

쉘 커맨드를 선택 후 저장 하시면 됩니다

이름은 편하신대로 설정 합니다

 

이것도 테스트를 한 번 해보시면 됩니다

만약에 작동을 안한다면 HAOS 터미널에서 

ssh -i /config/ssh/id_rsa haos@192.168.0.X 'sudo /usr/bin/systemctl status'

 명령어를 통해 권한 설정이 잘 보이는지 확인을 해보시기 바랍니다

 

아무 문제 없다면 끝 입니다

 

이제 proxmox 기기는 매주 금요일 새벽 3시에 켜졌다가 오전 7시에 종료가 됩니다

proxmox가 켜지면 vm으로 설치 된 헤놀이 켜지고 정해진 시간에 백업이 진행 되겠죠

백업이 끝나고 넉넉히 잡은 종료 시간에 vm과 PVE가 순차적으로 종료 될겁니다 

 

 

만약 상시 켜둬야 하는 일이 생긴다면 HAOS에서 해당 자동화를 꺼주기만 하면 됩니다

 

생각보다 복잡한 과정을 거치기는 해야 하지만 만들어 두니까 편하네요

이 외에도 여러가지 자동화를 만들 수 있으니 HAOS 찍먹 해보세요

 

만약 헤놀 vm만 껐다 켰다 하려면 HAOS에 DSM 구성 요소를 추가하면

전원 버튼이나 리셋 버튼 실행 가능 합니다

자동화에서 시간 부분은 그대로 유지하고 동작 부분만 DSM의 전원 버튼이나 리셋 버튼으로 변경하면 됩니다

댓글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다