master
Your Name 2 years ago
parent fbc0bb81cf
commit 283ba01689
  1. 44
      README.md
  2. 3
      control/VMHost.sh
  3. 16
      template/register_instance.py

@ -0,0 +1,44 @@
# kvm 教学练习
> 仅供学习测试使用
> 更新时间: 2022/9/4 22:21:00
> editor: newrain
### 目录结构介绍
```
[root@kvm-server kvm]# tree -L 2
.
├── control # 控制脚本目录
│ ├── KVMInstall.sh # kvm服务安装脚本
│ ├── VMHost.sh # kvm虚拟机克隆脚本
│ └── VMTemplate.sh # kvm模板机安装脚本
├── mount # 此目录保持为空,为克隆时临时挂载使用
├── README.md
├── template # 模板文件存放位置
│ ├── register_instance.py # jumpserver 注册资产脚本
│ ├── template.conf # 克隆机网卡配置文件脚本
│ ├── template.qcow2 # 模板机磁盘镜像
│ └── template.xml # 配置文件
└── vdisks
├── README.txt
├── vmtest1.qcow2 # 克隆机磁盘镜像
└── vmtest2.qcow2
```
### 使用脚本
```
宿主机: cd kvm
宿主机: sh KVMInstall.sh # 安装KVM服务
宿主机: sh VMTemplate.sh # 安装模板机
宿主机: virsh console template # 进入模板机,安装python3
template: yum install -y python3 python3-devel
template: pip3 install requests httpsig -i https://mirrors.aliyun.com/pypi/simple
宿主机: sh VMHost.sh -a 192.168.96.223 -p 6667 -n vmtest1 -c 2 -m 4096
[root@kvm-server control]# sh VMHost.sh
"Usage: $0 [OPTION]..."
-h, --help 查看帮助"
-a, --address 虚拟机的IP地址"
-p, --port 虚拟机的VNC端口"
-n, --name 虚拟机的名称"
-c, --cpus 选填,虚拟机的CPU数量,默认为1"
-m, --memory 选填,虚拟机的内存大小,单位M,默认为512M"
```

@ -117,8 +117,9 @@ sed -ri "s/^IPADDR.*/IPADDR=${KVM_ADDRESS}/" ${MOUNT_PATH}/etc/sysconfig/network
sed -ri "s/^GATEWAY.*/GATEWAY=${KVM_ADDRESS%.*}.2/" ${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 sed -ri "s/.*/${VM_HOSTNAME}/" ${MOUNT_PATH}/etc/hostname
cp ${TEMPLATE_PATH}/${TEMPLATE_REGISTER_NAME} ${MOUNT_PATH}/opt && \ cp ${TEMPLATE_PATH}/${TEMPLATE_REGISTER_NAME} ${MOUNT_PATH}/opt && \
echo "python3 /opt/${TEMPLATE_REGISTER_NAME}" >> ${MOUNT_PATH}/etc/rc.d/rc.local && \ echo "python3 /opt/${TEMPLATE_REGISTER_NAME}" ${VM_HOSTNAME} >> ${MOUNT_PATH}/etc/rc.d/rc.local && \
chmod a+x ${MOUNT_PATH}/etc/rc.d/rc.local chmod a+x ${MOUNT_PATH}/etc/rc.d/rc.local
rm -rf ${MOUNT_PATH}/*
guestunmount ${MOUNT_PATH} guestunmount ${MOUNT_PATH}
cp ${TEMPLATE_PATH}/${TEMPLATE_CONFIG_NAME} ${CONFIG_PATH}/${VM_HOSTNAME}.xml cp ${TEMPLATE_PATH}/${TEMPLATE_CONFIG_NAME} ${CONFIG_PATH}/${VM_HOSTNAME}.xml

@ -1,10 +1,15 @@
import subprocess import subprocess
import os import os,sys
import json import json
import requests import requests
import datetime import datetime
from httpsig.requests_auth import HTTPSignatureAuth from httpsig.requests_auth import HTTPSignatureAuth
jms_url = 'http://192.168.96.239'
nodes_id="ad851ca4-45cb-4d8a-9e0a-6e4e4fb6b6e1"
admin_user_id="739037a2-0850-4b95-845d-c2e023e47f33"
KeyID = '445b20ee-fcb5-4ad2-965e-3b6f2d6d658a'
SecretID = 'd303d92d-5691-49db-a7fc-67b24cf09770'
def get_auth(KeyID, SecretID): def get_auth(KeyID, SecretID):
signature_headers = ['(request-target)', 'accept', 'date'] signature_headers = ['(request-target)', 'accept', 'date']
@ -41,8 +46,8 @@ def register_host(jms_url, auth, host_name, host_ip):
"platform": "Linux", "platform": "Linux",
"protocol": "ssh", "protocol": "ssh",
"port": 0, "port": 0,
"nodes": "870cd163-d6d6-4fa7-b69c-729ecf81df4c", "nodes": nodes_id,
"admin_user": "650feac8-df82-41f3-b398-b106e12dad1b", "admin_user": admin_user_id,
"is_active": True "is_active": True
} }
result = requests.post(url, data=data, auth=auth, headers=headers) result = requests.post(url, data=data, auth=auth, headers=headers)
@ -53,10 +58,7 @@ def register_host(jms_url, auth, host_name, host_ip):
if __name__ == '__main__': if __name__ == '__main__':
if os.path.isfile('/tmp/.jms_host_registered.json'): if os.path.isfile('/tmp/.jms_host_registered.json'):
exit(0) 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) auth = get_auth(KeyID, SecretID)
hostip = subprocess.getoutput('hostname -I') hostip = subprocess.getoutput('hostname -I')
hostname = os.environ.get('HOSTNAME', hostip) hostname = sys.argv[1]
register_host(jms_url, auth, hostname, hostip) register_host(jms_url, auth, hostname, hostip)

Loading…
Cancel
Save