2016-11-04 3 views
1

ESXi 호스트가 손상된 경우 특정 이벤트에 대해 vsphere를 통해 스크립트를 트리거해야합니다. pyvmomi를 사용하여 작업하고 싶었습니다. vcenter를 폴링하지 말고 경고 트리거를 사용하십시오. http://www.vcritical.com/2009/10/powershell-prevents-datastore-emergencies/VCSA에서 vSphere 알람을 기반으로 Pyvmomi 스크립트를 실행하는 방법

은 나뿐만 아니라 https://pubs.vmware.com/vsphere-4-esx-vcenter/index.jsp#com.vmware.vsphere.dcadmin.doc_41/vc_client_help/working_with_alarms/c_running_commands_as_alarm_actions.html

이 바라 보았다하지만 우리가 pyvmomi을 사용하여 달성 할 수 있는지 알고 싶어? 감사합니다

+0

내가 대답 할 수 있기 전에 몇 가지 질문이 있습니다. 1) 어떤 vSphere 버전을 사용하고 있습니까? 2) vCenter Server App 또는 Windows box vCenter를 사용할 것입니까? –

+0

감사합니다. 또한 VM웨어에 익숙하지 않고 여전히 배우고 있습니다. 1. 우리는 5.5와 6을 실행할 것입니다. 2. 가능한 경우 리눅스 머신에서 트리거를하십시오. :) – jramacha

답변

0

처음 면책 조항 : VCSA에 추가 소프트웨어를 추가하는 것은 바람직하지 않습니다. 특히 컴퓨터의 부하가 증가하는 소프트웨어는 바람직하지 않습니다. 그렇게하는 것은 내가 아는 한 VMWare에서 지원하지 않으며 VCSA에 안정성 문제를 초래할 수 있으므로 자신의 위험을 감수하고 걱정할 경우 변경하기 전에 VMWare 계정 팀에 확인하십시오.

그 말은 ... 가능합니다. SLES Linux 상자에서 실행되는 VCSA를 사용하여이 작업을 수행하기를 원할 것이므로 이미 파이썬과 pyVmomi를 모두 가지고 있기 때문에 매우 간단합니다. 또한 기반 OS가 SLES에서 Photon으로 변경 되더라도 6.5에서 작동합니다. 아래에서 설명하는 프로세스는 5.5, 6.0 및 6.5에서 동일한 방식으로 작동합니다.

  1. 당신이 알람 트리거를 생성 할 때 실행할 스크립트를 작성하고, chmod a+x script.py

  2. 만들기를 사용하여 스크립트의 실행 비트를 설정해야합니다 /root에 VCSA에 배치 모니터링하려는 조건과 일치하는 vCenter의 알람. 기존 알람 정의가있을 수 있지만 기본 알람을 수정할 수 없기 때문에 사용자가 직접 알람 정의를 만들어야합니다.

  3. 경보 정의에 대한 작업 창에서 "명령 실행"을 선택하십시오.

  4. 구성 상자에서 실행할 실행 파일의 전체 경로를 입력하십시오. /root/script.py을 입력하고 알람을 저장하십시오.

이제 알람이 트리거되면 스크립트가 실행됩니다. 문제가 있거나 작동하지 않는다고 생각하면 VCSA에서 일어날 수있는 일을 강조 할 수있는 로그 파일을 찾을 수 있습니다. /var/log/vmware/vpxd/vpxd.log

스크립트를 시작하는 방법을 보여주기 위해 매우 원시적인 예제를 만들었습니다.

#!/usr/bin/python 
# Copyright 2016 Michael Rice <[email protected]> 
# 
# Licensed under the Apache License, Version 2.0 (the "License"); 
# you may not use this file except in compliance with the License. 
# You may obtain a copy of the License at 
# 
#  http://www.apache.org/licenses/LICENSE-2.0 
# 
# Unless required by applicable law or agreed to in writing, software 
# distributed under the License is distributed on an "AS IS" BASIS, 
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
# See the License for the specific language governing permissions and 
# limitations under the License. 

from __future__ import print_function 
import os 
import ssl 
import sys 
import requests 

# This is where VMWare keeps the pyVmomi and other libraries 
sys.path.extend(os.environ['VMWARE_PYTHON_PATH'].split(';')) 

from pyVim import connect 
from pyVmomi import vim 
requests.packages.urllib3.disable_warnings() 
# this is to ignore SSL verification which is helpful for self signed certs 
try: 
    _create_unverified_https_context = ssl._create_unverified_context 
except AttributeError: 
    # Legacy Python that doesn't verify HTTPS certificates by default 
    pass 
else: 
    # Handle target environment that doesn't support HTTPS verification 
    ssl._create_default_https_context = _create_unverified_https_context 
USER_NAME = "YOUR USER" 
PASSWORD = "YOUR PASS" 
HOST = "YOUR HOST" 
PORT = "443" 
service_instance = connect.SmartConnect(host=HOST, 
             user=USER_NAME, 
             pwd=PASSWORD, 
             port=int(PORT)) 

root_folder = service_instance.content.rootFolder 
# again crude example here. use the logging module instead 
with open("/var/log/my_script_log_file.txt", 'a') as f: 
    print(root_folder.name, file=f) 
    for var, val in os.environ.items(): 
     # When an alarm is triggered and run a lot of environment variables are set. 
     # This will list them all with their values. 
     if var.startswith("VMWARE_ALARM"): 
      print("{} = {}".format(var, val), file=f) 
    print("##########", file=f) 
connect.Disconnect(service_instance) 
+0

나는 그것을 받아 들였습니다. 고마워. VCSA에 액세스 할 수 없으면 Vcenter (Windows 컴퓨터)에서 트리거해야합니다. – jramacha

+0

글쎄 그것은 당신이 질문을 upvoted하고 내 대답을 받아들이지 않는 것처럼 보입니다. 또한 Windows vcenter 또는 vcenter 서버 어플라이언스를 사용하는 경우 질문에 대답하기 전에 요청 했으므로 VCSA라고 대답 한 내용에 대한 답을 얻을 수 있습니다. Windows 전원 상자의 경우 프로세스가 동일하지 않습니다. –

+0

나는 내 질문에 투표하지 않았다 :) 나는 내 자신의 투표에 투표 할 수 없다. 나는 대답을 선택할 권한이 없다.그것은 당신이 15 점에 도달하면 대답이나 그와 비슷한 것을 upvote 할 수 있다고 말합니다. – jramacha