Puppet 2.7 学习-1

      Puppet 很早的时候看过一些,因为我们当时已经使用CFEngine很久了,看了puppet之后,感觉还不如CFEngine好用,所以就撂下一段时间没管了,最近因为需求驱动打算把puppet系统的学一遍。

     下面对puppet进行一个简单的了解,puppet通常使用CS服务模型,服务端称为master,客户端称为agent,maste在主机上以守护进程运行,它包含了环境所需的所有配置,agent通过SSL和master进行通讯,agent既可以以守护进程运行也可以手动运行,默认情况下,agent会每30分钟和master通讯一次,以检查配置有没有变化。

       puppet使用自己的语言来定义配置项,配置项在puppet中称为‘资源’。每个资源都有一个‘类型’,表明被管理的是什么样的资源,软件包?文件?等等。好包括一个‘标题’,它是资源的名称。还包括一系列‘属性‘,它用来说明资源的状态,每一个资源类型都有一系列可以配置的属性。资源类型和资源标题组合在一起构成对这个资源的引用。puppet知道不同平台、不同操作系统之间的差异,puppet会自己处理这些差异,当agent连接到master时,facter会返回agent的相关信息,master根据这些信息处理不同平台的差异。

        类型 { 标题:             package { ssh:             

              属性 => 值,            ensure => present,

                                     }

        puppet会分析你的配置,并计算如何在agent上运行它们,接着puppet会为每一个agent取得相应的资源,并将他们编译成目录,然后发送到各个主机,通过puppet agent来应用他们,最后将结果返回给master。


      实验环境:三台DELL服务器,一台做服务端,两台做客户端。

      系统用的ubuntu12.10  puppet版本是2.7

安装puppet

先在三台服务器上安装ruby环境

apt-get install ruby libshadow-ruby1.8
安装服务端
apt-get install puppet puppetmaster facter
安装客户端
apt-get install puppet facter

因为puppet在运行时要使用DNS域名解析,但是实验环境又没有,只能做hosts了,在三台测试机上做相同的hosts配置

10.1.6.228      Control
10.1.6.216      Compute-2
10.1.6.142      Compute-1

启动master

service puppetmaster start
启动agent之前先修改/etc/default/puppet文件
#START=no
START=yes
启动agent
service puppet start


由于刚装好的系统没有tree命令和sshpass软件,所以先拿这两个练练手,给Compute-1安装。

先让Compute-1通过请求验证

agent执行请求

puppet agent --server=Control --no-daemonize --verbose


master查看那些agent在请求认证

puppet cert --list
master上对agent进行签名

puppet cert --sign Compute-1
 

两分钟后,在agent会看到如下

这表示已经认证通过了,接下来开始在master上编写配置文件。

在/etc/puppet/manifests目录创建site.pp和nodes.pp文件

#site.pp
import 'nodes.pp'
$pupperserver = 'Control'


#nodes.pp
node 'Compute-1' {
      include ssh
      include tree
}

修改master的主配文件/etc/puppet/puppet.conf,在[main]中加入自动载入模块路径

modulepath=/etc/puppet/modules
每个模块都需要一个特定的目录结构和一个init.pp文件


1 创建tree模块目录结构

mkdir -p /etc/puppet/modules/tree/{files,manifests,templates}
touch /etc/puppet/modules/tree/manifests/init.pp
2 编写init.pp文件
class tree {
    package { tree:
        ensure => present,
      }
}
tree模块创建ok


创建ssh模块

1 创建ssh模块目录结构

mkdir -p /etc/puppet/modules/ssh/{files,manifests,templates}
touch /etc/puppet/modules/ssh/manifests/init.pp
2 编写init.pp文件
class ssh {
    package { ssh: 
        ensure => present,
    }

    if $operatingsystem == "Ubuntu" {
        package { sshpass: 
            ensure => present,
            require => Package["ssh"],
        }
    }

    file { "/tmp/test.py":
        owner => www-data,
        group => www-data,
        source => "puppet://Control/modules/ssh/tmp/test.py",
    }
}
3 创建file文件路径
mkdir -p /etc/puppet/modules/ssh/files/tmp
touch /etc/puppet/modules/ssh/files/tmp/test.py

ssh模块创建ok


开始在Compute-1执行puppet agent

puppet agent --server=Control --verbose --onetime --no-daemonize


      经检查后确认sshpass和tree软件包都已安装,/tmp/test.py文件也已存在,以上配置文件的参数在以后的学习中解释。


转载于:https://my.oschina.net/guol/blog/86973

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值