puppet安装和配置

一、安装puppet准备

//安装准备 ,两台机器都要操作

1. 两台机器 
172.7.15.106 (server)

172.7.15.111 (client)

2. 关闭防火墙

setenforce 0 

iptables -F 

3. 设置hostname

server :  hostname(web9.lulu.com) --> vi /etc/sysconfig/network 将hostname定义进去

client : hostname (web10.lulu.com) --> vi /etc/sysconfig/network 将hostname定义进去

4. 编辑hosts文件
vi /etc/hosts
//ADD
172.7.15.106 web9.lulu.com
172.7.15.111 web10.lulu.com

5. 两台机器都安装ntpdate

yum install -y ntp

6. 建立自动同步时间的任务计划

crontab -e 
//ADD

*/10 * * * * ntpdate time.windows.com >/dev/null 2>&1

 

二 、安装puppet

//server (106) 操作
[root@web9 ~]# rpm -ivh http://yum.puppetlabs.com/el/6/products/x86_64/puppetlabs-release-6-7.noarch.rpm
[root@web9 ~]# ls /etc/yum.repos.d/           //查看上一步是否安装成功
puppetlabs.repo 
[root@web9 ~]# yum install -y puppet-server
[root@web9 ~]# service puppetmaster start
[root@web9 ~]# chkconfig puppetmaster on



//client (111)操作
[root@web10 ~]#  rpm -ivh http://yum.puppetlabs.com/el/6/products/x86_64/puppetlabs-release-6-7.noarch.rpm
[root@web10 ~]#  yum install -y puppet 
[root@web10 ~]#  vi /etc/puppet/puppet.conf
//末尾增加
listen = true 
server = web9.lulu.com
runinterval = 30  //主动更新,每隔30s

[root@web10 ~]#  service puppet start
[root@web10 ~]#  chkconfig puppet on

 

三、 配置认证

//server 端查看客户端证书列表
[root@web9 ~]# puppet cert list --all    //如果签发的证书,会在行首代一个+

//client 端生成ssl证书
[root@web10 ~]# puppet agent --test --server web9.lulu.com

//server 端签发指定客户端证书
[root@web9 ~]# puppet cert --sign web10.lulu.com

//server 端可以删除指定客户端证书
[root@web9 ~]# puppet cert clean web10.lulu.com

//删除所有证书
[root@web9 ~]# puppet cert clean --all

 

此处遇到的错误:

Exiting; no certificate found and waitforcert is disabled

--> 
[root@web10 ~]# /etc/init.d/puppet stop
[root@web10 ~]# rm -rf /var/lib/puppet/ssl/*
[root@web10 ~]# /etc/init.d/puppet start

 

四、 配置自动签发证书

//server
[root@web9 ~]# puppet cert clean web10.lulu.com  //服务端删除客户端证书

//client 
[root@web10 ~]# rm -rf /var/lib/puppet/ssl/*    //删除客户端ssl相关文件 */

//server
[root@web9 ~]# vim /etc/puppet/autosign.conf     //创建自动签发的配置文件
//ADD
*.lulu.com
[root@web9 ~]# /etc/init.d/puppetmaster restart  

//client
[root@web10 ~]# /etc/init.d/puppet restart

//server
[root@web9 ~]# puppet cert list --all 

IF
客户端不重启puppet服务,也可以通过命令来自动签发
[root@web10 ~]# puppet agent --test --server web9.lulu.com        

 

五、测试证书

//server
[root@web9 ~]# vi /etc/puppet/manifests/site.pp      
/*配置了此文件,客户端才会同步数据*/
//ADD
node default {
            file { "/tmp/123.txt"
                content => "test,test";
            }}

//client  
1. 稍等一会儿 ---执行 {因为设置了每隔30s执行任务}


2. 
[root@web10 ~]# puppet agent --test --server web9.lulu.com
[root@web10 ~]# ls /tmp/
123.txt 
[root@web10 ~]# cat /tmp/123.txt
test,test

 

六、定义模块

//server

/*创建一个名为testm的模块*/
[root@web9 ~]# mkdir /etc/puppet/modules/testm

/*在模块下创建子目录*/
[root@web9 ~]# cd /etc/puppet/modules/testm
[root@web9 testm]# mkdir {files,mainfests,templates}
[root@web9 testm]# ls
files  mainfests  templates

/* files 存放目录

    maindests 存放主配置文件

    templates  存放模版文件 --> 模版文件会定义一些配置

*/

[root@web9 testm]# cd files/
[root@web9 files]# vim lulu.txt    //与下面的init.pp的source对应
//ADD
ksajdksdj
kjasdkjs
aksdjksd
[root@web9 files]# cd ..
[root@web9 testm]# cd mainfests
[root@web9 mainfests]# vim init.pp
//ADD
class testm{
        file { "/tmp/2.txt" :
                        owner => "root",
                        group => "root".
                        mode => 0400,
                        source => "puppet://$puppetserver/modules/testm/lulu.txt"
            }}
//server
[root@web9 ~]# vi /etc/puppet.manifests/site.pp
//ADD
$puppetserver='web9.lulu.com'
node 'web10.lulu.com'{
        incluede testm
}


//client 
[root@web10 ~]# puppet agent --test --server web9.lulu.com

 

 

七、文件或目录资源

//刚刚的模块只是同步了一个文件,现在需要同步一个目录

/*例如,现在一台机器已经编译安装好了Apache,

现在通过一个模块同步Apache目录到其他机器上*/

[root@web9 testm]# cd manifests/
[root@web9 manifests]# vi init.pp
//ADD ,此文件可定义多个file,多个class
class apache {
           file { "/usr/local/apache2":
                    owner => "root",
                    group => "root",
                    source => "puppet://$puppetserver/modules/apache/apache2",
                    recurse => true,
                    purge => true
                }}
/* recurse 递归 -- 没有这个不能同步目录

    purge 可保证当服务端删除某个文件,客户端跟着删除
*/

[root@web9 manifests]# vi /etc/puppet/manifests/site.pp
//ADD
...
...
include apache     //将刚刚添加的apache这个类添加进去
...

//client
[root@web10 ~]# ls /usr/local/apache2
/usr/local/apache2        //已存在,成功

 

八、远程执行命令

//server 
[root@web9 puppet]# vi modules/testm/manifests/init.pp
//ADD
...
...
exec { "123":
           unless => "test -f /tmp/linux.txt",
            path => ["/bin", "/sbin", "/usr/bin", "/usr/sbin"],
            command => "touch /tmp/linux.txt"
}

//client 
[root@web10 ~]# ls -lt /tmp/
-rw-r--r--. 1 root root 0 12月 20 16:03 linux.txt

 

九、配置任务计划cron

[root@web9 puppet]# vim modules/testm/manifests/init.pp
//ADD
...
...
cron {"lulu1":
        command => "/sbin/ntpdate time.windows.com",
        user => "root",
        minute => "*/10",
        #ensure => "absent"
        }
/* ensure 设置为 absent  -- 删除该任务

    不设置 改行则建立 
*/

/* 关于时间,不设置则保持默认。

    包括:
            minute , hour , monthday , month ,weekday
*/

 

posted @ 2016-05-02 21:08  Frankiee  阅读(449)  评论(0编辑  收藏  举报