master
root 2 years ago
parent f07786ad24
commit fbc0bb81cf
  1. 1
      .gitignore
  2. 4
      control/VMHost.sh
  3. 62
      template/register_instance.py

1
.gitignore vendored

@ -0,0 +1 @@
*.qcow2

@ -14,6 +14,7 @@ VDISKS_PATH=$MAIN_PATH/vdisks
TEMPLATE_IMAGE_NAME="template.qcow2"
TEMPLATE_CONFIG_NAME="template.xml"
TEMPLATE_NETWORK_NAME="template.conf"
TEMPLATE_REGISTER_NAME="register_instance.py"
TEMPLATE_PATH=$MAIN_PATH/template
CONFIG_PATH=/etc/libvirt/qemu
KVM_CPUS=1
@ -115,6 +116,9 @@ guestmount -a ${VDISKS_PATH}/${VM_HOSTNAME}.qcow2 -m /dev/centos/root ${MOUNT_PA
sed -ri "s/^IPADDR.*/IPADDR=${KVM_ADDRESS}/" ${MOUNT_PATH}/etc/sysconfig/network-scripts/ifcfg-eth0
sed -ri "s/^GATEWAY.*/GATEWAY=${KVM_ADDRESS%.*}.2/" ${MOUNT_PATH}/etc/sysconfig/network-scripts/ifcfg-eth0
sed -ri "s/.*/${VM_HOSTNAME}/" ${MOUNT_PATH}/etc/hostname
cp ${TEMPLATE_PATH}/${TEMPLATE_REGISTER_NAME} ${MOUNT_PATH}/opt && \
echo "python3 /opt/${TEMPLATE_REGISTER_NAME}" >> ${MOUNT_PATH}/etc/rc.d/rc.local && \
chmod a+x ${MOUNT_PATH}/etc/rc.d/rc.local
guestunmount ${MOUNT_PATH}
cp ${TEMPLATE_PATH}/${TEMPLATE_CONFIG_NAME} ${CONFIG_PATH}/${VM_HOSTNAME}.xml

@ -0,0 +1,62 @@
import subprocess
import os
import json
import requests
import datetime
from httpsig.requests_auth import HTTPSignatureAuth
def get_auth(KeyID, SecretID):
signature_headers = ['(request-target)', 'accept', 'date']
auth = HTTPSignatureAuth(key_id=KeyID, secret=SecretID,
algorithm='hmac-sha256', headers=signature_headers)
return auth
def check_host(jms_url, auth, host_ip):
url = jms_url + "/api/v1/assets/assets/"
gmt_form = '%a, %d %b %Y %H:%M:%S GMT'
headers = {
'Accept': 'application/json',
'X-JMS-ORG': '00000000-0000-0000-0000-000000000002',
'Date': datetime.datetime.utcnow().strftime(gmt_form)
}
result = requests.get(
url, params={"ip": host_ip}, auth=auth, headers=headers)
return bool(result.json())
def register_host(jms_url, auth, host_name, host_ip):
if not check_host(jms_url, auth, host_ip):
url = jms_url + "/api/v1/assets/assets/"
gmt_form = '%a, %d %b %Y %H:%M:%S GMT'
headers = {
'Accept': 'application/json',
'X-JMS-ORG': '00000000-0000-0000-0000-000000000002',
'Date': datetime.datetime.utcnow().strftime(gmt_form)
}
data = {
"hostname": host_name,
"ip": host_ip,
"platform": "Linux",
"protocol": "ssh",
"port": 0,
"nodes": "870cd163-d6d6-4fa7-b69c-729ecf81df4c",
"admin_user": "650feac8-df82-41f3-b398-b106e12dad1b",
"is_active": True
}
result = requests.post(url, data=data, auth=auth, headers=headers)
with open("/tmp/.jms_host_registered.json", "w") as f:
json.dump(result.json(), f, indent=4, ensure_ascii=False)
if __name__ == '__main__':
if os.path.isfile('/tmp/.jms_host_registered.json'):
exit(0)
jms_url = 'http://192.168.96.253'
KeyID = 'e3a9f622-868f-4707-a3f6-a2e5cba500a4'
SecretID = '87485901-44ab-4359-a07e-2764f8556834'
auth = get_auth(KeyID, SecretID)
hostip = subprocess.getoutput('hostname -I')
hostname = os.environ.get('HOSTNAME', hostip)
register_host(jms_url, auth, hostname, hostip)
Loading…
Cancel
Save