#!/usr/bin/env python # -*- coding: utf-8 -*- # @File : fabfile.py.py # @Author: becivells #@Contact : becivells@gmail.com # @Date : 2017/12/5 #@Software : PyCharm # @Desc : import string from random import sample from fabric.api import settings from fabric.api import cd,run,env,put env.hosts = ['192.168.233.135'] env.user='root' env.password = 'passwd' def get_passwd(n=18): abstr = string.digits + string.ascii_letters + '#@$%^&*+_-?<>' return ''.join(sample(abstr,n)) def centos_gitolite_install(user='git',gitdir='/home/'): ''' :param user: git user :param gitdir: gitdir :return: ''' githome = '{gitdir}/{user}'.format(gitdir=gitdir, user=user) gitolitehome = '{githome}/gitolite'.format(githome=githome) run('mkdir -p {gitdir}'.format(gitdir=gitdir)) password = get_passwd() #init run('yum update -y && yum install epel-release && yum update') run('yum install -y perl openssh git openssh-server') run("yum install 'perl(Data::Dumper)'") run("systemctl enable sshd") with settings(warn_only=True): run('adduser {user} -d {githome}'.format(user=user, githome=githome)) run('echo "{user}:{password}" | chpasswd'.format(user=user, password=password)) print('{user} passwrod: {passwd}'.format(user=user, passwd=password)) with settings(warn_only=True): result = run('su - {user} -c "git clone git://github.com/sitaramc/gitolite ' '{gitolitehome}"'.format(user=user,gitolitehome=gitolitehome)) if result.failed: with cd(gitolitehome): run('su {user} -c "git pull"'.format(user=user)) run('su - {user} -c "mkdir -p ~/bin"'.format(user=user)) run('su - {user} -c "gitolite/install -to ~/bin"'.format(user=user)) with cd('/tmp/'): upload = put('id_rsa.pub','admin.pub') run('su - {user} -c "~/bin/gitolite setup -pk /tmp/admin.pub"'.format(user=user))