#!/usr/bin/env python
# _*_ coding:utf-8 _*_
# Author:Mazhenkai
import paramiko
#需要更换名字
glusterfs01 = 'ip'
glusterfs02 = 'ip'
mkdir_path = '/data01'
view = ('''\033[32m
-------------------------------
1 View Glusterfs Server Gv List
2 Create Gv and Node Mount
3 Rm Gv and Node Umount \033[0m
-------------------------------
''')
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
class gluster_volume_create(object):
def __init__(self,hostname,password):
self.hostname = hostname
self.password = password
def view_volume(self):
ssh.connect(hostname=self.hostname,port=22,username='root',password=self.password)
stdin,stdout,stderr = ssh.exec_command("ls %s "%(mkdir_path),get_pty=True )
result = stdout.read()
print(result.decode().strip())
def create_volume(self):
ssh.connect(hostname=self.hostname,port=22,username='root',password=self.password)
stdin,stdout,stderr = ssh.exec_command("mkdir %s/%s"%(mkdir_path,volume_dir_name),get_pty=True)
result = stdout.read()
print(result.decode().strip())
def node_mount(self):
ssh.connect(hostname=self.hostname,port=22,username='root',password=self.password)
stdin,stdout,stderr = ssh.exec_command("mkdir %s/%s ;mount -t glusterfs %s:/%s /data01/%s"%(mkdir_path,volume_dir_name,glusterfs01,volume_dir_name,volume_dir_name),get_pty=True)
result = stdout.read()
print(result.decode().strip())
def start_volume(self):
ssh.connect(hostname=self.hostname,port=22,username='root',password=self.password)
stdin,stdout,stderr = ssh.exec_command("echo y | gluster volume create %s replica 2 %s:/data01/%s %s:/data01/%s force;gluster volume start %s ;gluster volume info | grep %s"%(volume_dir_name,glusterfs01,volume_dir_name,glusterfs02,volume_dir_name,volume_dir_name,volume_dir_name),get_pty=True)
res_start = stdout.read()
print(res_start.decode())
def node_umount(self):
while 1:
if umount_gv == '': break
else:
ssh.connect(hostname=self.hostname,port=22,username='root',password=self.password)
stdin,stdout,stderr = ssh.exec_command("umount -t glusterfs %s:%s %s/%s; rm -rf %s/%s "%(glusterfs01,umount_gv,mkdir_path,umount_gv,mkdir_path,umount_gv),get_pty=True)
res_start = stdout.read()
print(" umount node %s volume OK!! rm %s/%s"%(umount_gv,mkdir_path,umount_gv))
break
def gluster_volume_rm(self):
while 1:
if umount_gv == '': break
else:
ssh.connect(hostname=self.hostname,port=22,username='root',password=self.password)
stdin,stdout,stderr = ssh.exec_command("echo y | gluster volume stop %s;echo y | gluster volume delete %s ;rm -rf %s/%s"%(umount_gv,umount_gv,mkdir_path,umount_gv),get_pty=True)
res_start = stdout.read()
print("stop glusterfs volume %s ok!!! \n gluster volume delete %s \n rm -rf %s/%s "%(umount_gv,umount_gv,mkdir_path,umount_gv))
break
node243 = gluster_volume_create('ip','password')
node244 = gluster_volume_create('ip','password')
node245 = gluster_volume_create('ip','password')
gluster02 = gluster_volume_create('ip','password')
gluster01 = gluster_volume_create('ip','password')
while 1:
print(view)
user_input = input("Please input number(1,2,3),(q)quit->>").strip().replace(' ','')
if user_input =='q':
ssh.close()
break
elif user_input =='2':
volume_dir_name = input("Please input glusterfs gv name:").strip().replace(' ','')
gluster01.create_volume()
gluster02.create_volume()
gluster01.start_volume()
node243.node_mount()
node244.node_mount()
node245.node_mount()
ssh.close()
continue
elif user_input =='3':
umount_gv = input("Please input umount gv name:").strip().replace(' ','')
node243.node_umount()
node244.node_umount()
node245.node_umount()
gluster01.gluster_volume_rm()
gluster02.gluster_volume_rm()
ssh.close()
continue
elif user_input == '1':
gluster01.view_volume()
ssh.close()
continue
ssh.close()