alv.pub环境介绍¶
自动化配置系统信息¶
每台服务器创建完成之后执行一下下面这个脚本,并可根据网卡mac地址来设置网络信息和主机名。
脚本网络地址: https://raw.githubusercontent.com/AlvinWanCN/poppy/master/code/alv.pub/set_hostinfo_by_nic.py
执行方式:
curl -s https://raw.githubusercontent.com/AlvinWanCN/poppy/master/code/alv.pub/set_hostinfo_by_nic.py|python
脚本内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 | #coding:utf-8
#本脚本用于通过mac地址来设置ip地址
import subprocess
import re
hostname_domain='.alv.pub'
hostname={}
hostname['2']='ipa' #ipa 服务。包括ldap,dns服务。
hostname['3']='internal' #物理机 所有虚拟机都是安装在这里
hostname['4']='zabbix' #zabbix监控
hostname['5']='jenkins' #自动化流程
hostname['6']='git' #代码服务器
hostname['9']='meta' #其他虚拟机要创建的得时候,拷贝meta的盘。然后修改系统配置导入为新的虚拟机
hostname['10']='mysql_' #mysql前端
hostname['11']='mysql1'
hostname['12']='mysql2'
hostname['13']='mysql3'
hostname['20']='redis' #redis前端
hostname['21']='redis1'
hostname['22']='redis2'
hostname['23']='redis3'
hostname['30']='mongodb' #mongodb 前端
hostname['31']='mongodb1'
hostname['32']='mongodb2'
hostname['33']='mongodb3'
hostname['41']='test1'
hostname['42']='test2'
hostname['43']='test3'
hostname['44']='test4'
hostname['45']='test5'
hostname['46']='test6'
hostname['47']='test7'
hostname['48']='test8'
hostname['49']='test9'
hostname['50']='w7'
hostname['51']='w10'
hostname['52']='kali'
hostname['60']='mysql'
hostname['61']='redis'
hostname['68']='centos6u8'
hostname['74']='centos7u4'
hostname['73']='centos7u3'
hostname['81']='k8s1'
hostname['82']='k8s2'
hostname['83']='k8s3'
hostname['84']='k8s4'
hostname['90']='vpnserver'
hostname['91']='ubuntu14u4'
hostname['92']='ubuntu16u4'
hostname['93']='ubuntu18u4'
#获取mac地址
get_nic=subprocess.check_output("ip a s|grep ether|awk '{print $2}'",shell=True).split('\n')[0]
#获取mac地址最后一位
tail_1=get_nic.split(':')[-1]
#如果最后一段数的开头是0,去掉0
if tail_1[0] == '0':tail_1=tail_1[1]
#获取mac地址倒数第二位
tail_2=get_nic.split(':')[-2]
#Get mac tail 3 number
tail_3=get_nic.split(':')[-2]
if tail_2 == '01':tail_1='1'+tail_1
#设置ip等网络信息
sysinfo={}
sysinfo['ip']='192.168.3.%s'%tail_1
sysinfo['gw']='192.168.3.3'
sysinfo['dns']='192.168.3.2'
sysinfo['dns_search']='alv.pub'
#sysinfo['nic']=subprocess.check_output("ip a s|grep state|grep -v lo|awk -F: '{print $2}'|sed 's/ //'",shell=True).split('\n')[0]
sysinfo['nic']=re.sub(r'(GENERAL.CONNECTION:\s+)','',subprocess.check_output("nmcli device show |grep -i CONNECTION|head -1",shell=True).split('\n')[0])
sysinfo['hostname']=hostname[tail_1]+hostname_domain
#设置ip地址
def set_ip_info():
if subprocess.call('nmcli connection modify "{nic}" ipv4.method manual ipv4.addresses {ip}/24 ipv4.gateway {gw} ipv4.dns {dns} ipv4.dns-search {dns_search} autoconnect yes && nmcli con up "{nic}"'.format(**sysinfo),shell=True) == 0:
print('IP address has heen setup ok')
else:
print('IP address setup failed.')
def set_hostnaem():
if subprocess.call('hostnamectl set-hostname %s'%sysinfo['hostname'],shell=True) == 0:
print('Hostname setup ok')
else:
print('Hostname setup failed.')
def main():
set_ip_info()
set_hostnaem()
if __name__ == '__main__':
main()
|