运维自动化之puppet(2)

1、puppet运维自动化之组管理
......
group { "ceshi":                              
            gid => 800,                         #该组的 gid,必须是数字,如果不指定,将自动分配 ,不同的系统自动分配的算法不一样,不推荐使用自动分配gid
            allowdupe => false,                 #是否允许两个相同的gid, 这个参数不能在freebsd上面使用, 可以设置的值是false , true
            ensure => present,                  #创建或者删除组,设置absent就删除该组,设置 present就创建该组
            members => [ ceshi1,ceshi2,ceshi3 ] #该组的成员
}
......
2、puppet运维自动化之文件分发
通过puppet服务器向客户端分发文件
[root@puppet-server ~]# vim /etc/puppet/manifests/site.pp
......
file
    {"/tmp/srv/darren":        #资源的标题
  name => "/tmp/srv/darren",#name等于标题,所以可以省略
     source => "puppet://puppet-server/files/darren",
     owner =>root,             #客户端下载后的文件属主
     group =>root,             #客户端下载后的文件属组
     mode =>777                #客户端下载后的文件权限
}

......
file
    {"/tmp/srv/darren":
     source => "puppet://puppet-server/files/darren",
}
......
file {
     "/tmp/srv/ceshi.txt":
     content => file("/tmp/srv/ceshi.txt");
}
......

3、puppet运维自动化之crontab文件管理
......
cron { "reboot":
    command => "/sbin/init 6",
    user =>root,
    minute =>35,
    hour =>13
}
#除了name和command这两个参数以外,其他都是可选项
#name该crontab的名字,用于区分不同的crontab
#command是crontab要执行的命令,环境变量按照系统本地规则进行管理,推荐使用绝对路径
#ensure指定该资源是否启用,可设置成true或false
#environment在crontab环境里指定环境变量,例如PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
#user把crontab任务加入到默认的crontab列表,默认是运行puppet的用户
#minute运行crontab的分钟,可设置0-59
#hour运行crontab的小时,可设置0-23
#monthday运行crontab的每月中的某一天,可设置1-31
#month运行crontab的月份,1-12
#weekday运行crontab的星期数,0-7
......
4、puppet运维自动化之分类管理客户端
......
node puppet-client-01 {
file {
     "/tmp/srv/192.168.72.0":
     source => "puppet://puppet-server/files/192.168.72.0",
     owner =>root,
     group =>root,
     mode =>777,
     ensure =>present
     }
}
......
#node,节点定义,当一个节点(puppet客户端)连接到puppet服务器端,puppet解析器会查找这个节点的node代码片断,然后利用这个代码片断来生成该客户端的配置代码。
5、puppet运维自动化之yum安装软件包,以httpd模拟测试
......
package { "httpd": ensure => "installed" }
#ensure设置软件包得状态:installd(present)表示要安装该软件,absent表示卸载该软件,latest表示安装软件包的最新版本。
......
6、puppet运维自动化之网络下载安装rpm包
......
     package { "epel":
                ensure => present,
                provider => rpm,
                source => "http://mirrors.sohu.com/Fedora-epel//6/x86_64/epel-release-6-5.noarch.rpm"
}
......
7、puppet运维自动化之安装多个软件包
......
Package { ensure => "installed" }  #注意:第一个P是大写,这就意味着对软件包管理设置了一个全局的的参数。
     package { "lrzsz": }
     package { "telnet": }
     package { "sudo": }
......
8、puppet运维自动化之服务管理
......
service {
            "nfs":
             ensure => running;
            "iptables":
             ensure => stopped;
            "puppet":
             enable => true;
            "httpd":
             enable => false;
}
......
参数
#binary :运行服务的命令的路径, 只用于不支持init的操作系统, 如果没有指定启动脚本,就用这个命令来启动服务。
#enable :服务是否随开机而启动,可设置的值为true,false,需要provider支持enableable。
#ensure: 服务是否运行,可设置的值为running,stopped,也可以用true,false。
#hasrestart:指出管理脚本是否支持restart参数,如果不支持,就用stop和start实现restart效果。可以设置的值是true 或 false。
#hasstatus :服务的init脚本是否支持status参数,可设置的值为ture,false。
#name: 该资源的namevar, 服务的名字,通常就是在/etc/init.d/目录下的名字。
#path: 指定查找init 脚本的路径。
#pattern :搜索进程表匹配字符串,用于不支持init的脚本,当要停止一个服务的时候,通过查看进程运行列表来判断。
#provider :The specific backend for provider to use,可设置的值有base, daemontools,init等。
#restart :重启服务
#start: 开启服务
#status :服务运行状态
#stop: 停止服务
9、puppet运维自动化之主机管理
......
#客户端192.168.72.128添加主机别名name01和name02
host { "name":           
           ip => '192.168.72.128',
           host_aliases => ["name01", "name02" ],
           ensure =>'present'
}
......
#host:安装和管理主机实体。对大部分系统来说,这些实体就在/etc/hosts文件中
#ip:主机的IP地址
#host_aliases:主机别名,可以有多个,多个值需要指定为一个数组。
#ensure:确定该主机是否启用,有效值present和absent
10、puppet运维自动化之执行外部命令
......
#客户端解压puppet软件包
exec { "tar xf /tmp/srv/puppet-2.6.14.tar.gz":
        cwd => "/tmp/srv/",
        creates => "/tmp/srv/puppet",
        path => ["/bin","/usr/bin","/usr/sbin"]
}
......
#cwd:指定命令执行的目录。如果目录不存在,则命令执行失败
#creates:指定命令所生成的文件。如果提供了这个参数,那么命令只会在所指定的文件不存在的情况的被执行
#path:命令执行的搜索路径。如果path没有被定义,命令需要使用绝对路径。路径可以以数组或以冒号分隔的形式来定义。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/a1682ba33f57e10640b6d1117acabf1a.html