puppet安装于配置与编写简单模块

1、安装Puppet-server、puppet和facter


1

[[email protected] ~]# yum install puppet puppet-server facter -y #系统会自己安装一些ruby依赖包环境

2、配置puppet.conf
注意:这个里面配置了两个certname名称,其中[master]中配置的certname是为所有节点认证用的master名称,[agent]中配置的certname是他本身agent的名称,当然不配置默认是和master的名称是一样的。


1

2

3

4

5

6

7

8

9

10

11

12

13

[[email protected] ~]# cp /etc/puppet/puppet.conf{,.bak} #备份

[[email protected] ~]# vim /etc/puppet/puppet.conf #注释已经删除

[main]

logdir = /var/log/puppet #默认日志存放路径

rundir = /var/run/puppet #pid存放路径

ssldir = $vardir/ssl #证书存放目录,默认$vardir为/var/lib/puppet

[agent]

classfile = $vardir/classes.txt

localconfig = $vardir/localconfig

server = puppetmaster.kisspuppet.com #设置agent认证连接master端的服务器名称,注意这个名字必须能够被节点解析

certname = puppetmaster_cert.kisspuppet.com #设置agent端certname名称

[master]

certname = puppetmaster.kisspuppet.com puppetmaster.kisspuppet.com #设置puppetmaster认证服务器名

3、创建site.pp文件
site.pp文件是puppet读取所有模块pp文件的开始,在3.0版本以前必须设置,否则服务无法启动。


1

[[email protected] ~]# touch /etc/puppet/manifests/site.pp

4、启动puppetmaster服务


1

2

3

4

[[email protected] ~]# /etc/init.d/puppetmaster start

Starting puppetmaster:   

                          [  OK  ]

[[email protected] ~]# chkconfig puppetmaster on #设置开机启动

5、查看本地证书情况
puppetmaster第一次启动会自动生成证书自动注册自己


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

[[email protected] ~]# tree /var/lib/puppet/ssl/

/var/lib/puppet/ssl/

├── ca

│   ├── ca_crl.pem

│   ├── ca_crt.pem

│   ├── ca_key.pem

│   ├── ca_pub.pem

│   ├── inventory.txt

│   ├── private

│   │   └── ca.pass

│   ├── requests

│   ├── serial

│   └── signed

│       └── puppetmaster.kisspuppet.com.pem  #已注册

├── certificate_requests

├── certs

│   ├── ca.pem

│   └── puppetmaster.kisspuppet.com.pem

├── crl.pem

├── private

├── private_keys

│   └── puppetmaster.kisspuppet.com.pem

└── public_keys

    └── puppetmaster.kisspuppet.com.pem

9 directories, 13 files

[[email protected] ~]# puppet cert --list --all  #带+标示已经注册成功

"puppetmaster.kisspuppet.com" (C0:E3:6B:76:36:EC:92:93:4D:BF:F0:8F:77:00:91:C8) (alt names: "DNS:puppet""DNS:puppet.kisspuppet.com""DNS:puppetmaster.kisspuppet.com")

6、查看监听状态
puppetmaster服务开启后,默认监听TCP 8140端口


1

2

3

4

5

[[email protected] ~]# netstat -nlatp | grep 8140

tcp        0      0 0.0.0.0:8140                0.0.0.0:*                   LISTEN      1976/ruby       

[[email protected] ~]# lsof -i:8140

COMMAND    PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

puppetmas 1976 puppet    5u  IPv4  14331      0t0  TCP *:8140 (LISTEN)

二、安装Agent

以agent1为例

1、安装puppet和facter


1

[[email protected] ~]# yum install puppet facter #系统会自己安装一些ruby依赖包环境

2、配置puppet.conf


1

2

3

4

5

6

7

8

9

10

11

[[email protected] ~]# cp /etc/puppet/puppet.conf{,.bak}

[[email protected] ~]# vim /etc/puppet/puppet.conf

[main]

    logdir = /var/log/puppet

    rundir = /var/run/puppet

    ssldir = $vardir/ssl

[agent]

    classfile = $vardir/classes.txt

    localconfig = $vardir/localconfig

    server = puppetmaster.kisspuppet.com  #指向puppetmaster端

    certname = agent1_cert.kisspuppet.com #设置自己的certname名

3、通过调试模式启动节点向Puppetmaster端发起认证


1

2

3

4

5

6

[[email protected] ~]# puppet agent --test

info: Creating a new SSL key for agent1_cert.kisspuppet.com

info: Caching certificate for ca

info: Creating a new SSL certificate request for agent1_cert.kisspuppet.com

info: Certificate Request fingerprint (md5): 69:D2:86:E4:7F:00:E0:55:61:19:02:34:9E:9B:AF:F9

Exiting; no certificate found and waitforcert is disabled

4、服务器端确定认证


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

[[email protected] ~]# puppet cert --list --all #查看认证情况

  "agent1_cert.kisspuppet.com"  (69:D2:86:E4:7F:00:E0:55:61:19:02:34:9E:9B:AF:F9) #未认证

"puppetmaster.kisspuppet.com" (C0:E3:6B:76:36:EC:92:93:4D:BF:F0:8F:77:00:91:C8) (alt names: "DNS:puppet""DNS:puppet.kisspuppet.com""DNS:puppetmaster.kisspuppet.com")

[[email protected] ~]# puppet cert --sign agent1_cert.kisspuppet.com #注册agent1

notice: Signed certificate request for agent1_cert.kisspuppet.com

notice: Removing file Puppet::SSL::CertificateRequest agent1_cert.kisspuppet.com at ‘/var/lib/puppet/ssl/ca/requests/agent1_cert.kisspuppet.com.pem‘

[[email protected] ~]# puppet cert --list --all #再次查看认证情况

"agent1_cert.kisspuppet.com"  (3E:46:4E:75:34:9A:5A:62:A6:3C:AE:BD:49:EE:C0:F5)

"puppetmaster.kisspuppet.com" (C0:E3:6B:76:36:EC:92:93:4D:BF:F0:8F:77:00:91:C8) (alt names: "DNS:puppet""DNS:puppet.kisspuppet.com""DNS:puppetmaster.kisspuppet.com")

[[email protected] ~]# tree /var/lib/puppet/ssl/ #另外一种查看认证的方式

/var/lib/puppet/ssl/

├── ca

│   ├── ca_crl.pem

│   ├── ca_crt.pem

│   ├── ca_key.pem

│   ├── ca_pub.pem

│   ├── inventory.txt

│   ├── private

│   │   └── ca.pass

│   ├── requests

│   ├── serial

│   └── signed

│       ├── agent1_cert.kisspuppet.com.pem  #已经注册成功

│       └── puppetmaster.kisspuppet.com.pem

├── certificate_requests

├── certs

│   ├── ca.pem

│   └── puppetmaster.kisspuppet.com.pem

├── crl.pem

├── private

├── private_keys

│   └── puppetmaster.kisspuppet.com.pem

└── public_keys

    └── puppetmaster.kisspuppet.com.pem

9 directories, 14 files

5、其它节点一起认证


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

[[email protected] ~]# puppet agent --test #puppetmaster自己申请agent认证

info: Creating a new SSL key for puppetmaster_cert.kisspuppet.com

info: Creating a new SSL certificate request for puppetmaster_cert.kisspuppet.com

info: Certificate Request fingerprint (md5): 7D:AC:F7:97:04:2B:E4:C5:74:4A:16:05:DB:F6:6A:98

Exiting; no certificate found and waitforcert is disabled

[[email protected] ~]# puppet cert --sign --all #注册所有请求的节点

notice: Signed certificate request for puppetmaster_cert.kisspuppet.com

notice: Removing file Puppet::SSL::CertificateRequest puppetmaster_cert.kisspuppet.com at ‘/var/lib/puppet/ssl/ca/requests/puppetmaster_cert.kisspuppet.com.pem‘

notice: Signed certificate request for agent2_cert.kisspuppet.com

notice: Removing file Puppet::SSL::CertificateRequest agent2_cert.kisspuppet.com at ‘/var/lib/puppet/ssl/ca/requests/agent2_cert.kisspuppet.com.pem‘

notice: Signed certificate request for agent3_cert.kisspuppet.com

notice: Removing file Puppet::SSL::CertificateRequest agent3_cert.kisspuppet.com at ‘/var/lib/puppet/ssl/ca/requests/agent3_cert.kisspuppet.com.pem‘

[[email protected] ~]# puppet cert --list --all #查看所有节点认证

"agent1_cert.kisspuppet.com"       (3E:46:4E:75:34:9A:5A:62:A6:3C:AE:BD:49:EE:C0:F5)

"agent2_cert.kisspuppet.com"       (A0:CE:70:BE:A9:11:BF:F4:C8:EF:25:8E:C2:2C:3B:B7)

"agent3_cert.kisspuppet.com"       (98:93:F7:0C:ED:94:81:3D:51:14:86:68:2B:F3:F1:A0)

"puppetmaster.kisspuppet.com"      (C0:E3:6B:76:36:EC:92:93:4D:BF:F0:8F:77:00:91:C8) (alt names: "DNS:puppet""DNS:puppet.kisspuppet.com""DNS:puppetmaster.kisspuppet.com")

"puppetmaster_cert.kisspuppet.com" (57:A3:D7:3D:64:2F:D6:FD:BC:2A:6C:79:68:73:EA:AB)

三、编写简单的motd模块

1、创建模块目录结构
注意:再未指定modulepath搜索路径的情况下,会有默认搜索路径的,可通过以下方式查看到


1

2

3

4

5

6

7

8

9

10

11

12

13

[[email protected] ~]# puppet master --genconfig >/etc/puppet/puppet.conf.out

[[email protected] ~]# cat /etc/puppet/puppet.conf.out | grep modulepath

    modulepath = /etc/puppet/modules:/usr/share/puppet/modules

[[email protected] modules]# tree /etc/puppet/modules/

/etc/puppet/modules/

└── motd

    ├── files  #存放文件目录

    │   └── etc

    │       └── motd

    ├── manifests  #存放模块pp配置文件目录

    │   └── init.pp

    └── templates #存放模板目录

5 directories, 2 files

2、编写pp文件


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

[[email protected] modules]# vim motd/manifests/init.pp

class motd{                 #定义一个类叫motd

  package‘setup‘:    #定义package资源

    ensure => present,  #要求setup这个包处于被安装状态

  }

  file{ ‘/etc/motd‘:  #定义file资源

    ensure  => present,  #要求file文件处于存在状态

    owner   => ‘root‘, #要求file文件属主为root

    group   => ‘root‘, #要求file文件属组为root

    mode    => ‘0644‘, #要求file文件权限为644

    source  => "puppet://$puppetserver/modules/motd/etc/motd", #要求file文件从puppetmaster端服务器下载

    require => Package[‘setup‘], #要求文件被配置之前先执行package资源

  }

}

[[email protected] modules]# cat motd/files/etc/motd

--                       --

--------puppet test---------

--                       --

3、编写site.pp文件


1

2

3

4

5

6

7

8

9

10

11

12

13

14

[[email protected] ~]# vim /etc/puppet/manifests/site.pp

$puppetserver = ‘puppetmaster.kisspuppet.com‘ #设置全局变量

node ‘puppetmaster_cert.kisspuppet.com‘{

  include  motd

}

node ‘agent1_cert.kisspuppet.com‘{

  include  motd

}

node ‘agent2_cert.kisspuppet.com‘{

  include  motd

}

node ‘agent3_cert.kisspuppet.com‘{

  include  motd

}

四、测试motd模块


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

[[email protected] ~]# puppet agent --test  #测试节点agent1

info: Caching catalog for agent1_cert.kisspuppet.com

info: Applying configuration version ‘1394304542‘

notice: /Stage[main]/Motd/File[/etc/motd]/content:

--- /etc/motd    2000-01-13 07:18:52.000000000 +0800

+++ /tmp/puppet-file20140309-4571-1vqc18j-0    2014-03-09 02:51:47.000000000 +0800

@@ -0,0 +1,3 @@

+--                       --

+--------puppet test---------

+--                       --

info: FileBucket adding {md5}d41d8cd98f00b204e9800998ecf8427e

info: /Stage[main]/Motd/File[/etc/motd]: Filebucketed /etc/motd to puppet with sum d41d8cd98f00b204e9800998ecf8427e

notice: /Stage[main]/Motd/File[/etc/motd]/content: content changed ‘{md5}d41d8cd98f00b204e9800998ecf8427e‘ to ‘{md5}87ea3a1af8650395038472457cc7f2b1‘

notice: Finished catalog run in 0.40 seconds

[[email protected] ~]# cat /etc/motd

--                       --

--------puppet test---------

--                       --

[[email protected] ~]#

[[email protected] ~]# puppet agent -t  #测试节点puppetmaster

info: Caching catalog for puppetmaster_cert.kisspuppet.com

info: Applying configuration version ‘1394305371‘

notice: /Stage[main]/Motd/File[/etc/motd]/content:

--- /etc/motd    2010-01-12 21:28:22.000000000 +0800

+++ /tmp/puppet-file20140309-3102-1gadon0-0    2014-03-09 03:02:51.966998294 +0800

@@ -0,0 +1,3 @@

+--                       --

+--------puppet test---------

+--                       --

info: FileBucket adding {md5}d41d8cd98f00b204e9800998ecf8427e

info: /Stage[main]/Motd/File[/etc/motd]: Filebucketed /etc/motd to puppet with sum d41d8cd98f00b204e9800998ecf8427e

notice: /Stage[main]/Motd/File[/etc/motd]/content: content changed ‘{md5}d41d8cd98f00b204e9800998ecf8427e‘ to ‘{md5}87ea3a1af8650395038472457cc7f2b1‘

info: Creating state file /var/lib/puppet/state/state.yaml

notice: Finished catalog run in 0.52 seconds

[[email protected] ~]# cat /etc/motd

--                       --

--------puppet test---------

--                       --

时间: 2024-10-10 10:57:25

puppet安装于配置与编写简单模块的相关文章

puppet安装和配置

Puuppet是一个开源的新一代的集中化配置管理工具,它由自己所声明的语言表达系统配置,通过客户端与服务端直接的连接,维护着关系库. Puppet是一个跨平台的集中化配置管理系统,它使用自由的描述语言,可管理配置文件.用户.Cron.软件包,系统服务等,Puppet把这些统称为"资源". Puppet是基于Ruby语言并使用Apache协议授权的开源软件,它既能以客户端-服务端(C/S)的方式运行,也能独立运行.客户端默认每30分钟会与服务端确认一次更新,以确保配置的一致性. Pupp

puppet安装与配置

puppet是一个为实现数据库中心自动化管理而设计的配置管理软件.基于c/s架构.puppet的服务器端保存着所有的对客户端服务器的配置代码,在puppet里面叫做manifest. 客户端下载manifest之后,可以根据manifest对服务器进行配置,例如软件包管理,用户管理和文件管理等等.这样就把日常的系统管理任务代码化了,代码化的好处是可以分享,保存,避免重复劳动,也可以快速恢复以及快速的大规模部署服务器.同时,manifest可以的根据客户端服务器的配置情况(硬件和软件)来动态生成.

Puppet 安装与配置

在RHEL6.5上安装puppet 10.1.1.33  puppet 服务端     主机名 10.1.1.33.domain.com 10.1.1.34  puppet 客户端     主机名 10.1.1.34.domain.com 本机/etc/hosts配置为: 10.1.1.33 10.1.1.33.domain.com 10.1.1.34 10.1.1.34.domain.com 确认安装ruby相关包 yum -y install ruby ruby-libs ruby-shad

Centos6.5安装与配置JDK-8(简单实用)

系统环境:centos-6.6/6.5 安装方式:rpm安装 软件:jdk-8u45-linux-x64.rpm 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html 检验系统原版本 java version "1.7.0_65" OpenJDK Runtime Environment (rhel-2.5.1.2.el6_5-x86_64 u65-b17) OpenJDK 64-Bit Serve

nodejs备忘总结(一) -- node和express安装与配置,新建简单项目(附安装配置过程中遇到问题的解决方法)

安装node 本文以安装node_v8.9.0为例(win10环境),下载node-v8.9.0-x64.msi插件 下载后,安装,安装目录默认为C:\Program Files\nodejs 配置环境变量,系统变量->path,添加“C:\Program Files\nodejs\” 运行cmd,输入node -v C:\Windows\system32>node -v v8.9.0 安装express 找到node安装目录C:\Program Files\nodejs,命令行运行 C:\P

Windows服务的安装及配合定时器编写简单的程序

最近要实时统计一些数据,所以就用到了Windows服务及定时任务,在这里记录下. Windows Service简介: 一个Windows服务程序是在Windows操作系统下能完成特定功能的可执行的应用程序.Windows服务程序虽然是可执行的,但是它不像一般的可执行文件通过双击就能开始运行了,它必须有特定的启动方式.这些启动方式包括了自动启动和手动启动两种.对于自动启动的Windows服务程序,它们在Windows启动或是重启之后用户登录之前就开始执行了.只要你将相应的Windows服务程序注

Puppet 安装配置

一.什么是puppet? 1.基于ruby语言开发的系统配置集中管理工具,跨平台 2.一个C/S架构,配置服务端和客户端 puppet依赖于ruby与facter,安装puppet3.x,需要ruby1.8.7版本及以上:facter是一个系统盘点工具,收集主机的一些资料,比如OS.IP.CPU等 3.puppet是一个C/S结构,开源软件,基于Ruby的系统配置管理工具,安装puppet3.x,需要ruby1.8.7版本及以上 4.默认情况下,客户端每隔30分钟连接一次puppet服务端 5.

《专业级Oracle Database 12c安装、配置与维护》之在SQL*Plus中编写PL/SQL

当编写PL/SQL程序时,可以用多种方式来运行.可以直接在SQL*Plus(或某些其他SQL环境,如SQL Developer)中运行,也可以将之存储在数据库中,然后从SQL环境或程序运行.当在数据库中存储程序时,该程序被称为存储程序(stored program)或存储对象(stored object).这在本章稍后讲解.现在,让我们来讨论如何使用SQL*Plus编写程序.虽然是从SQL*Plus的环境内部说明这个例子,但这些程序也可以使用其他的SQL接口,如SQLDeveloper.TOAD

运维利器rshell,功能强大似Ansible/Puppet/Chef,配置简单如Putty!

#运维利器rshell,功能强大似Ansible/Puppet/Chef,配置简单如Putty! rshell:多Linux主机远程批量执行Shell命令和上传下载文件(跨平台,无依赖,免安装) 源码获取,https://github.com/luckywinds/rshell,喜欢请加星,多谢. ##背景 在多主机运维场景下,最核心最常用的操作就是批量远程执行命令.上传和下载文件,通常大家会想到Ansible.Puppet.Chef等自动化工具,但是又都对工具自身的部署配置抓狂,又对Putty