puppet介绍、使用

     puppet主要使用于自动化运维方面,对于拥有众多服务器需要管理的管理员来说,puppet

是个不错的选择,使其管理更加轻松,容易。其设计的是c/s建构,可以一个master和多个client。

通过master可管理配置客户端的文件、用户、cron任务、软件包、系统服务等。客户端默认半

小时向master请求一次以使其与master配置同步,从而使管理员在master上设置配置就可以实

现对于众多客户端机器的管理。

安装:

由于此软件提供了包管理器的安装方式,所以通过apt-get或者yum安装既可以了,本人使

用的linux mint,所以使用的前者。当然源码包安装也行啦,puppet用ruby开发的。

master:

sudo apt-get install puppetmaster

客户端:

sudo apt-get install puppet

安装后master服务程序已经运行了。如果没运行也可以通过

sudo service puppetmaster start

开启,打开的是8140端口。

   下面针对一台电脑上来说,也就是即作为master也作为client。由于master已经启动,client端需要

通过认证才能与master通信。puppet程序的组织方式与git很类似——通过二级命令来使用的。

 puppet master表示master服务,puppet agent是客户端程序。

首先运行如下类似的命令:

puppet agent --test --verbose --server=chaofan.io

--server后面跟的是master的主机名。然后:

puppet cert list --all

会显示所有客户端认证的信息,只有每行前面有加号的主机才是通过签名也就是可以master通信。

如果master与客户端在同一台机器上,主机名前面应该已有了加号。如果没有可以如下:

puppet cert --sign chaofan.io

由于本人master与客户端在同一台机器上,所以主机名一样。--sign后跟客户端的主机名。

如果再puppet cert list --all 输出的信息如下:

+ "chaofan.io" (38:A5:ED:2F:A9:71:D6:7F:34:77:E1:D0:9C:C1:B0:FE)

OK,现在就可以运行客户端服务了。如下:

sudo puppet agent --no-daemonize --verbose --server=chaofan.io

开始运行上面的命令会立即向master请求,获得master上设置好的信息。输出信息如下:

1 notice: Starting Puppet client version 2.7.18
2 info: Caching catalog for chaofan.io
3 info: Applying configuration version '1389514190'
4 notice: /Stage[main]//Exec[/bin/ls > test.txt]/returns: executed successfully
5 notice: Finished catalog run in 0.10 seconds

第一行有版本信息,注意第四行,这就是master上设定的资源。以下介绍master配置,

这也是puppet复杂而又强大的部分,puppet提供了一套语法供用户使用。如file、exec、

user等等类型。file可以把master上的文件传送到客户端上,exec执行某个命令,user可以

在客户端创建用户。master配置路径在/etc/puppet下,

16:23+~$ ls /etc/puppet/
auth.conf              etckeeper-commit-pre  manifests  puppet.conf
etckeeper-commit-post  fileserver.conf       modules    templates

下面简单介绍一下配置,manifests目录下创建一个site.pp文件(必须创建)。在site.pp里

写入:

exec {
        "/bin/ls > test.txt":
                cwd=>"/tmp"
}

保存后,如果在客户端执行sudo puppet agent --no-daemonize --verbose --server=chaofan.io,

如果已经执行了那么半小时后就会有上文中说到的第四行信息。在客户端的/tmp路径下会看到test.txt

文件。

   我们可以注意到资源的设定基本格式exec是类型,"/bin/ls > test.txt"是title,然后下面是属性值的

设置,属性与值之间用"=>"间隔,这里只加了cwd。可以通过:

puppet describe exec

查看exec的详细属性介绍,通过puppet describe --list或者puppet resource --types,可以得到所有类型。

    上面在site.pp配置的仅仅是比较简单的,我们可以设置在客户端安装软件(puppet默认会使用系统的

包管理器,如ubuntu会使用apt-get)。我们也可以针对某个客户端做设置,这就要使用node类型。下面

给一个复杂的例子作为收尾吧。

   我们在manifests下创建test.pp。打开test.pp写入:

 1 class mysql::install {
 2         package { ["mysql-server-5.5"]:
 3                 ensure => present,
 4                 require => User["mysql"],
 5         }
 6         user { "mysql":
 7                 ensure=> present,
 8                 gid => "mysql",
 9                 shell => "/bin/false",
10                 require => Group["mysql"],
11         }
12         group { "mysql":
13                 ensure => present,
14         }
15 }
16 class mysql {
17         include mysql::install
18 }
19 node 'chaofan.io' {
20         include mysql
21 }

如上的设置并不是很复杂,主要目的就是向chaofan.io主机安装mysql并创建mysql用户和用户组。

class是puppet提供的一个类似c++类的功能,然后我们在site.pp中开头加入import "test.pp" 

       如果在客户端执行sudo puppet agent --no-daemonize --verbose --server=chaofan.io,

如果已经执行了那么半小时后就会输出如下:

1 notice: Starting Puppet client version 2.7.18
2 info: Caching catalog for chaofan.io
3 info: Applying configuration version '1389517596'
4 notice: /Stage[main]/Mysql::Install/Group[mysql]/ensure: created
5 notice: /Stage[main]//Exec[/bin/ls > test.txt]/returns: executed successfully
6 notice: /Stage[main]/Mysql::Install/User[mysql]/ensure: created
7 notice: /Stage[main]/Mysql::Install/Package[mysql-server-5.5]/ensure: created
8 notice: Finished catalog run in 29.72 seconds

注意第4、6、7行。mysql已经安装完成了。

    工作中有用到了puppet,在此也算记录一下。

posted @ 2014-01-12 17:17  除e尘  阅读(1555)  评论(5编辑  收藏  举报