fabfile.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. # @File : fabfile.py.py
  4. # @Author: becivells
  5. #@Contact : becivells@gmail.com
  6. # @Date : 2017/12/5
  7. #@Software : PyCharm
  8. # @Desc :
  9. import string
  10. from random import sample
  11. from fabric.api import settings
  12. from fabric.api import cd,run,env,put
  13. env.hosts = ['192.168.233.135']
  14. env.user='root'
  15. env.password = 'passwd'
  16. def get_passwd(n=18):
  17. abstr = string.digits + string.ascii_letters + '#@$%^&*+_-?<>'
  18. return ''.join(sample(abstr,n))
  19. def centos_gitolite_install(user='git',gitdir='/home/'):
  20. '''
  21. :param user: git user
  22. :param gitdir: gitdir
  23. :return:
  24. '''
  25. githome = '{gitdir}/{user}'.format(gitdir=gitdir, user=user)
  26. gitolitehome = '{githome}/gitolite'.format(githome=githome)
  27. run('mkdir -p {gitdir}'.format(gitdir=gitdir))
  28. password = get_passwd()
  29. #init
  30. run('yum update -y && yum install epel-release && yum update')
  31. run('yum install -y perl openssh git openssh-server')
  32. run("yum install 'perl(Data::Dumper)'")
  33. run("systemctl enable sshd")
  34. with settings(warn_only=True):
  35. run('adduser {user} -d {githome}'.format(user=user, githome=githome))
  36. run('echo "{user}:{password}" | chpasswd'.format(user=user, password=password))
  37. print('{user} passwrod: {passwd}'.format(user=user, passwd=password))
  38. with settings(warn_only=True):
  39. result = run('su - {user} -c "git clone git://github.com/sitaramc/gitolite '
  40. '{gitolitehome}"'.format(user=user,gitolitehome=gitolitehome))
  41. if result.failed:
  42. with cd(gitolitehome):
  43. run('su {user} -c "git pull"'.format(user=user))
  44. run('su - {user} -c "mkdir -p ~/bin"'.format(user=user))
  45. run('su - {user} -c "gitolite/install -to ~/bin"'.format(user=user))
  46. with cd('/tmp/'):
  47. upload = put('id_rsa.pub','admin.pub')
  48. run('su - {user} -c "~/bin/gitolite setup -pk /tmp/admin.pub"'.format(user=user))