python 远程创建glusterfs存储卷node自动挂载,删除。

#!/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()

 

posted @ 2018-12-26 11:34  NeilyoX  阅读(613)  评论(0)    收藏  举报