Cases:
Import Getpass
Import OS
From collections Import Ordereddict
From FABRIC.API Import *
def HelloWorld ():
Print "helloworld!"
def hello (name, age):
print "Hello!" I am%s, my age=%s "% (name, age)
def ls ():
Local ("Ls/usr/local")
Output = local (' Echo hello ', capture=true)
Print output
Def setroles ():
Env.roledefs = {
' Hadoop1 ': [' [email protected] ',
' Hadoop2 ': [' [email protected] ',
' HADOOP3 ': [' [email protected] ',
' HADOOP4 ': [' [email protected] ']
}
Env.passwords = {
' [Email protected]:22 ': ' A8285310 ',
' [Email protected]:22 ': ' A8285310 ',
' [Email protected]:22 ': ' A2885310 ',
' [Email protected]:22 ': ' A8285310 '
}
@roles (' Hadoop2 ')
Def setbaseenv ():
HADOOP1 = str (env.roledefs["HADOOP1"]). Split (' @ ', 1) [1]
HADOOP2 = str (env.roledefs["HADOOP2"]). Split (' @ ', 1) [1]
HADOOP3 = str (env.roledefs["HADOOP3"]). Split (' @ ', 1) [1]
HADOOP4 = str (env.roledefs["HADOOP4"]). Split (' @ ', 1) [1]
#set etc hosts
With CD (' etc '):
Run (' echo-e ' {0} hadoop1.cbas\n{1} hadoop2.cbas\n{2} hadoop3.cbas\n{3} Hadoop4.cbas ">> hosts". Format ( Hadoop1.split ("'", 1) [0], Hadoop2.split ("'", 1) [0], Hadoop3.split ("'", 1) [0], Hadoop4.split ("'", 1) [0]))
Run ("Cat hosts")
Run ("Echo----------------------------------------------------------------------------------------------------- ------")
#set language
Run ("Echo Lang=en_us. UTF-8 >/etc/sysconfig/i18n ")
Run ("source/etc/sysconfig/i18n")
Run ("Echo $LANG")
Run ("Echo----------------------------------------------------------------------------------------------------- ------")
#close the iptables and SELinux forever
Run ("Chkconfig iptables off")
Run ("Chkconfig--list iptables")
Run ("Sed-i ' s/enforcing/disabled/g '/etc/selinux/config")
Run ("Cat/etc/selinux/config")
Run ("Echo----------------------------------------------------------------------------------------------------- ------")
#set localtime
Run ("\cp/usr/share/zoneinfo/asia/shanghai/etc/localtime")
Run ("Cat/etc/localtime")
Run ("Echo----------------------------------------------------------------------------------------------------- ------")
#set file Limit
Run (' echo-e ' * soft nofile 65536\n* hard nofile 65536 ">>/etc/security/limits.conf ')
Run ("cat/etc/security/limits.conf")
Run ("Sed-i '/1024/s/^/#/'/etc/security/limits.d/90-nproc.conf")
Run ("Echo----------------------------------------------------------------------------------------------------- ------")
#set ntpd and httpd start with the system
Run ("Chkconfig ntpd on")
Run ("Chkconfig httpd on")
Run ("Chkconfig--list ntpd")
Run ("Chkconfig--list httpd")
Run ("Echo----------------------------------------------------------------------------------------------------- ------")
#mkdir
Run ("Mkdir-p/data/apps")
Run (' Mkdir-p/software ')
Run ("Echo----------------------------------------------------------------------------------------------------- ------")
#move CentOS Repo
Run ("Mv/etc/yum.repos.d/*.repo/etc")
Run ("Echo----------------------------------------------------------------------------------------------------- ------")
#reboot
Run ("reboot")
@roles (' Hadoop1 ')
Def Installbasepak ():
#check SELinux
Run ("/usr/sbin/sestatus-v")
#close THP
Run ("Echo Never >/sys/kernel/mm/redhat_transparent_hugepage/defrag")
Run ("Echo Never >/sys/kernel/mm/redhat_transparent_hugepage/enabled")
Run ("Echo Never >/sys/kernel/mm/transparent_hugepage/defrag")
Run ("Echo Never >/sys/kernel/mm/transparent_hugepage/enabled")
Run ("Echo----------------------------------------------------------------------------------------------------- ------")
With CD ('/software '):
Run (' Unzip Basepackage.zip ')
#install Base Package
Run ("Rpm-uvh nc-1.84-24.el6.x86_64.rpm")
Run ("Rpm-uvh snappy-1.1.0-1.el6.x86_64.rpm")
Run ("Rpm-uvh snappy-devel-1.1.0-1.el6.x86_64.rpm")
Run ("Rpm-uvh mpfr-2.4.1-6.el6.x86_64.rpm")
Run ("Rpm-uvh ppl-0.10.2-11.el6.x86_64.rpm")
Run ("Rpm-uvh cloog-ppl-0.15.7-1.2.el6.x86_64.rpm")
Run ("Rpm-uvh cpp-4.4.7-18.el6.x86_64.rpm")
Run ("Rpm-uvh gcc-4.4.7-18.el6.x86_64.rpm")
Run ("Rpm-uvh libstdc++-devel-4.4.7-18.el6.x86_64.rpm")
Run ("Rpm-uvh gcc-c++-4.4.7-18.el6.x86_64.rpm")
Run ("Rpm-uvh zlib-devel-1.2.3-29.el6.x86_64.rpm")
Run ("Rpm-uvh python-devel-2.6.6-66.el6_8.x86_64.rpm")
Run ("Rpm-uvh perl-5.10.1-144.el6.x86_64.rpm")
Run ("Rpm-uvh perl-dbi-1.609-4.el6.x86_64.rpm")
Run ("Rpm-uvh perl-dbd-mysql-4.013-3.el6.x86_64.rpm")
Run ("Rpm-uvh mysql-5.1.73-8.el6_8.x86_64.rpm")
Run ("Rpm-uvh mysql-server-5.1.73-8.el6_8.x86_64.rpm")
Run ("Echo----------------------------------------------------------------------------------------------------- ------")
@roles (' Hadoop1 ')
Def Sendpak ():
With CD ('/software '):
Run (' SCP basepackage.zip mysql.zip redis.zip [email protected]:/software ')
Run (' SCP basepackage.zip redis.zip nginx.zip [email protected]:/software ')
Run (' SCP basepackage.zip redis.zip nginx.zip ruby.zip ftp.zip hue.tar [email protected]:/software ')
@roles (' Hadoop2 ')
def test ():
With CD ('/software/ruby-2.4.1/ext/openssl '):
Run (' Ruby extconf.rb--with-openssl-include=/software/openssl1f/include--with-openssl-lib=/software/openssl1f/ Lib ')
Run (' Rm-rf Makefile ')
Run (' Cp/software/makefile_openssl/software/ruby-2.4.1/ext/openssl/makefile ')
Run (' Make ')
Run (' Make install ')
With CD ('/software '):
Run (' Gem install Redis-4.0.1.gem ')
Run (' Gem list ')
@roles (' Hadoop1 ')
Def buildhdpmirrorcenter ():
With CD ('/software '):
Run (' tar-xf Ambari-2.4.1.0.tar ')
Run (' tar-xf Hdp-2.5.0.0.tar ')
Run (' tar-xf Hdp-utils-1.1.0.21.tar ')
Run (' \CP ambari-2.4.1.0/centos6/2.4.1.0-22/ambari.repo/etc/yum.repos.d ')
Run (' \CP hdp/centos6/hdp.repo/etc/yum.repos.d ')
Run (' Ln-s/software/ambari-2.4.1.0/var/www/html/ambari-2.4.1.0 ')
Run (' Ln-s/SOFTWARE/HDP/VAR/WWW/HTML/HDP ')
Run (' Ln-s/software/hdp-utils-1.1.0.21/var/www/html/hdp-utils-1.1.0.21 ')
Run (' Service httpd restart ')
Run (' Yum clean All ')
Run (' Yum Makecache ')
Run (' Yum repolist ')
Run (' Curl Http://hadoop1.cbas/HDP ')
Run (' Curl http://hadoop1.cbas/HDP-UTILS-1.1.0.21 ')
Run (' Curl http://hadoop1.cbas/AMBARI-2.4.1.0 ')
@roles (' Hadoop1 ')
Def deployambariserver ():
Run (' Yum install-y ambari-server ')
@roles (' HADOOP4 ')
Def Deployhue ():
With CD ('/software '):
Run (' Mkdir/hue ')
Run (' MV Hue.tar/hue ')
Run (' Groupadd hue ')
Run (' useradd-g hue Hue ')
With CD ('/hue '):
Run (' tar-xf Hue.tar ')
Run (' Chown hue:hue/hue-r ')
@roles (' Hadoop1 ', ' hadoop2 ')
Def deployjdk ():
With CD ('/software '):
Run (' tar-xf jdk-8u144-linux-x64.tar.gz ')
Run (' MV jdk1.8.0_144 jdk1.8 ')
With CD (' etc '):
Run (' Echo-e ' java_home=/software/jdk1.8\nclasspath=.:/ Software/jdk1.8/lib:/software/jdk1.8/jre/lib\npath=/software/jdk1.8/bin: $PATH:/software/jdk1.8/jre/bin\nexport Java_home CLASSPATH PATH ">> profile")
Run (' Source profile ')
Run (' java-version ')
@roles (' Hadoop1 ', ' hadoop2 ')
Def Deploynginx ():
With CD ('/software '):
Run (' Service httpd stop ')
Run (' Chkconfig httpd off ')
Run (' Unzip Nginx.zip ')
Run (' tar-xf nginx-1.8.1.tar.gz ')
Run (' tar-xf openssl-1.0.2j.tar.gz ')
Run (' tar-xf pcre-8.21.tar.gz ')
Run (' tar-xf zlib-1.2.7.tar.gz ')
Run (' Unzip Nginx-http-concat-master.zip ')
Run (' Unzip Nginx_upstream_check_module-master.zip ')
With CD ('/software/nginx-1.8.1 '):
Run ('./configure--prefix=/software/nginx--with-pcre=/software/pcre-8.21--with-zlib=/software/zlib-1.2.7-- Add-module=/software/nginx-http-concat-master--add-module=/software/nginx_upstream_check_module-master-- With-http_ssl_module--with-openssl=/software/openssl-1.0.2j--with-http_realip_module ')
Run (' Make ')
Run (' Make install ')
Run ('/software/nginx/sbin/nginx-t ')
Run ('/software/nginx/sbin/nginx ')
@roles (' Hadoop1 ', ' hadoop2 ')
Def Deployredis ():
With CD ('/software '):
Run (' Unzip Redis.zip ')
Run (' tar-xf redis-3.2.8.tar.gz ')
With CD ('/software/redis-3.2.8 '):
Run (' Make ')
Run (' Make install Prefix=/software/redis ')
Run (' Mkdir/software/redis-cluster ')
Run (' mkdir/software/redis-cluster/redis6371 ')
Run (' mkdir/software/redis-cluster/redis6372 ')
Run (' cp/software/redis/bin/*/software/redis-cluster/redis6371 ')
Run (' cp/software/redis/bin/*/software/redis-cluster/redis6372 ')
Run (' cp/software/redis6371.conf/software/redis-cluster/redis6371 ')
Run (' cp/software/redis6372.conf/software/redis-cluster/redis6372 ')
Run (' Cp/software/redis-3.2.8/src/redis-trib.rb/software/redis-cluster ')
Run ('/software/redis-cluster/redis6371/redis-server/software/redis-cluster/redis6371/redis6371.conf ')
Run ('/software/redis-cluster/redis6372/redis-server/software/redis-cluster/redis6372/redis6372.conf ')
Run (' NETSTAT-NTLP | grep redis ')
@roles (' Hadoop2 ')
Def Deployruby ():
With CD ('/software '):
Run (' mkdir Ruby ')
Run (' Unzip Ruby.zip ')
Run (' tar-xf ruby-2.4.1.tar.gz ')
Run (' tar-xf openssl-1.0.1f.tar.gz ')
With CD ('/software/ruby-2.4.1 '):
Run ('./configure--prefix=/software/ruby ')
Run (' Make ')
Run (' Make install ')
Run (' Ln-s/software/ruby/bin/ruby/usr/bin/ruby ')
Run (' Ln-s/software/ruby/bin/gem/usr/bin/gem ')
With CD ('/software/openssl-1.0.1f '):
Run ('./config-fpic--prefix=/software/openssl1f enable-shared ')
Run ('./config-t ')
Run (' Make depend ')
Run (' Make install ')
With CD ('/software/ruby-2.4.1/ext/zlib '):
Run (' Ruby Extconf.rb ')
Run ("Sed-i ' 16a Top_srcdir =/software/ruby-2.4.1 ' Makefile")
Run (' Make ')
Run (' Make install ')
With CD ('/software/ruby-2.4.1/ext/openssl '):
Run (' Ruby extconf.rb--with-openssl-include=/software/openssl1f/include--with-openssl-lib=/software/openssl1f/ Lib ')
Run ("Sed-i ' 16a Top_srcdir =/software/ruby-2.4.1 ' Makefile")
Run (' Make ')
Run (' Make install ')
With CD ('/software '):
Run (' Gem install Redis-4.0.1.gem ')
Run (' Gem list ')
With CD ('/software/redis-cluster '):
Run ('./REDIS-TRIB.RB Create--replicas 1 hadoop2.cbas:6371 hadoop2.cbas:6372 hadoop3.cbas:6371 hadoop3.cbas:6372 hadoop4.cbas:6371 hadoop4.cbas:6372 ')
@roles (' HADOOP4 ')
Def deployftp ():
With CD ('/software '):
Run (' Unzip Ftp.zip ')
Run (' Rpm-ivh vsftpd-2.2.2-24.el6.x86_64.rpm ')
Run (' Rpm-ivh easy-rsa-3.0.3-1.el6.noarch.rpm ')
Run (' Mkdir-p/ftp ')
Run (' useradd-m-d/ftp-s/sbin/nologin ftptest ')
With CD ('/ETC/VSFTPD '):
Run (' Rm-rf vsftpd.conf ')
Run (' cp/software/vsftpd.conf./')
@roles (' Hadoop1 ')
Def deploypgsql ():
With CD ('/software '):
Run (' Unzip Pgsql.zip ')
Run (' Rpm-ivh postgresql-libs-8.4.20-7.el6.x86_64.rpm ')
Run (' Rpm-ivh postgresql-8.4.20-7.el6.x86_64.rpm ')
Run (' Rpm-ivh postgresql-server-8.4.20-7.el6.x86_64.rpm ')
def deploymysql (masterorslave, password):
Global Mysqlcmd
Mysqlcmd = "Grant replication slave on * * to ' root ' @ ' Hadoop2.cbas ' identified by '%s '"% (password)
if (Masterorslave = = ' Master ' or masterorslave = = ' slave ') and not password is None:
With CD ('/software '):
Run (' Rpm-ivh mysql-connector-java-5.1.37-1.noarch.rpm ')
Run (' Unzip Mysql.zip ')
Run (' tar-xf Mysql56.tar ')
Run (' Useradd MySQL ')
Run (' Mkdir-p/data/mysql ')
Run (' rm-rf/etc/my.cnf ')
Run (' Rm-rf/etc/init.d/mysqld ')
Run (' Rm-rf/usr/bin/mysql ')
Run ('/software/mysql/scripts/mysql_install_db--basedir=/software/mysql--datadir=/data/mysql ')
Run (' Cp/software/mysql/support-files/mysql.server/etc/rc.d/init.d/mysqld ')
Run (' Chkconfig--add mysqld ')
Run (' Chkconfig mysqld on ')
With CD ('/data '):
Run (' Touch Mysqld.log ')
Run (' Chown mysql:mysql/data-r ')
if Masterorslave = = ' Master ':
With CD ('/software/mysql '):
Run (' echo-e ' basedir =/software/mysql\ndatadir =/data/mysql\nport = 3306\nsocket =/tmp/mysql.sock\npid-file=/data/ mysql.pid\nbind-address=0.0.0.0\nmax_connections=3000\ndefault-storage-engine=innodb\nbinlog_format=mixed\ Nserver-id=1\nlog-bin=master-bin\nlog-bin-index=master-bin.index\n[mysqld_safe]\nlog-error =/data/mysqld.log " >> my.cnf ')
With CD ('/software/mysql/bin '):
Run (' Ln-s/software/mysql/bin/mysql/usr/bin/mysql ')
Run (' Service mysqld start ')
Run ("./mysqladmin-u root password '%s '"% (password))
Run ("./mysql-uroot-p{0}-e {1}{2};{ 3} ". Format (password, '" ', Mysqlcmd, ' "))
Run (' Service mysqld restart ')
elif Masterorslave = = ' slave ':
With CD ('/software/mysql '):
Run (' echo-e ' basedir =/software/mysql\ndatadir =/data/mysql\nport = 3306\nsocket =/tmp/mysql.sock\npid-file=/data/ mysql.pid\nbind-address=0.0.0.0\nmax_connections=3000\ndefault-storage-engine=innodb\nbinlog_format=mixed\ Nserver-id=2\nrelay-log=slave-relay-bin\nrelay-log-index=slave-relay-bin.index\n[mysqld_safe]\nlog-error =/data /mysqld.log ">> my.cnf")
With CD ('/software/mysql/bin '):
Run (' Ln-s/software/mysql/bin/mysql/usr/bin/mysql ')
Run (' Service mysqld start ')
Run ("./mysqladmin-u root password '%s '"% (password))
Else
Run (' echo usage:fab-h [email protected] (the host which you want to deploy MySQL master or slave) Setroles Deploymysql:mas Terorslave=master|slave, Password=mysqlpassword
Application of fab modules in Python