CentOS7 Puppet安装脚本小结

来源:互联网 发布:抓取淘宝商品 编辑:程序博客网 时间:2024/06/05 04:30

前言:

该脚本安装对应的是puppet的server端以及client端;具体使用时参考脚本中的参数说明;

软件环境:

客户端系统:CentOS-7-x86_64
服务器端:CentOS-7-x86_64
Ruby版本:ruby-1.8.7.374-4.el6_6.x86_64.rpm
Puppet版本:3.8.4

安装脚本:

#!/bin/bash# Program:#   This script is to install puppet master or agent          # History:# 2016/01/20 yuu## 参数说明:                           #   传入的第一个参数:如果为master则表示puppet server的安装, #   不传或传其它的参数值则表示安装puppet client          master="master"if [ $# == 0 ]then    target="client"else    target=$1fifunction installPuppet(){    #if [ "`rpm -qa | grep -c ntp`" == 0 ],该句效果和下面两句一样    rpm -qa | grep ntp >> /dev/null     if [ $? != 0 ]     then        yum install -y ntp && echo "###installing ntp###"    fi    systemctl start ntpd.service && echo "### start ntpd.service ###"    systemctl enable ntpd.service && echo "### enable ntpd.service ###"    yum -y install ruby ruby-libs ruby-shadow && echo "### installing ruby ###"    rpm -Uvh http://yum.puppetlabs.com/el/7Server/products/x86_64/puppetlabs-release-7-11.noarch.rpm && echo "### 配置yum源 ###"    yum clean all    # 以下内容为server与client端的不同    if [ $target = $master ]    then        yum -y install puppet-server && echo "### installing puppet server ###"    else        yum -y install puppet && echo "### installing puppet client ###"    fi    if [ $? == 0 ]    then         echo "### install puppet succeeded ###"        if [ $target = $master ]        then            systemctl start puppetmaster.service && echo "### start puppetmaster.service ###"            systemctl enable puppetmaster.service && echo "### enable puppetmaster.service ###"            # 服务端监听8140端口,iptables -nv -L | grep -w 8140可查看开放监听的端口            /sbin/iptables -A INPUT -p tcp --dport 8140 -j ACCEPT && echo "### server listen 8140 ###"         else            systemctl start puppet.service && echo "### start puppet.service ###"            systemctl enable puppet.service && echo "### enable puppet.service ###"            # 客户端监听8139端口            /sbin/iptables -A INPUT -p tcp --dport 8139 -j ACCEPT && echo "### client listen 8139 ###"         fi    else        echo "### install puppet failed ###"    fi}installPuppet

小结与思考:

1: bash shell 的if语句会定义if行定义的那个命令,如果if后面命令的退出状态码是0(即该命令成功运行),位于then部分的命令就会被执行,如果返回状态码是其它值,则then部分的内容不会执行;如:

    if date    then        echo "success"    fi

2:注意$#,$1,$2...等参数在函数内与函数外之间的区别;
3:字符串比较注意 $str1 = $str2 比较;
4:学习上面关于命令的返回值做判断的两种方式;

参考资料:

《Puppet实战》 作者:刘宇 著 出版社: 机械工业出版社 出版时间:2014年1月

0 0