Puppet基础篇3-安装Puppet前期的准备工作

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介:

在安装Puppet之前是需要做很多预备工作的,比如网络地址规范、主机名、certname名、时间等等,也只有这些准备好了,才不至于在安装好puppet之后发现问题而后悔莫及。
说明:接下来的整套文档体系都是以本篇文档规范方案进行设计和扩充的,同样也是也是按照准生产的标准进行编写。

一、网络地址规范

1
2
3
4
5
【HOSTNAME】                        【IP】                     【certname】        【operatingsystem】
puppetmaster.kisspuppet.com   192.168 . 100.110 / 24    puppetmaster_cert.kisspuppet.com     RHEL6. 4
agent1.kisspuppet.com         192.168 . 100.111 / 24    agent1_cert.kisspuppet.com         RHEL5. 7
agent2.kisspuppet.com         192.168 . 100.112 / 24    agent2_cert.kisspuppet.com         RHEL5. 8
agent3.kisspuppet.com         192.168 . 100.123 / 24    agent3_cert.kisspuppet.com         RHEL6. 4

注:192.168.100.*/24的网关为192.168.100.110 所有服务器的DNS1为192.168.100.110

1、设置主机名

1
2
3
4
5
6
7
[root@puppetmaster ~]# vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=puppetmaster.kisspuppet.com
[root@agent1 ~]# vim /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=agent1.kisspuppet.com

注:agent2~agent3同上

2、设置IP地址

可通过system-config-network命令进行配置好后在进入配置文件进行修改

1
2
3
4
5
6
7
8
9
10
11
12
[root@puppetmaster ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPADDR= 192.168 . 100.110
NETMASK= 255.255 . 255.0
GATEWAY= 192.168 . 100.110
DNS1= 192.168 . 100.110
IPV6INIT=no
USERCTL=no

注:node1~node3同上

3、关闭NetworkManager服务

NetworkManager服务是RHEL图形界面管理网卡的服务,由于其开启会对网络造成影响,RHEL6默认是开启的,建议关闭。

1
2
3
[root@puppetmaster ~]# /etc/init.d/NetworkManager stop
Stopping NetworkManager daemon:                            [  OK  ]
[root@puppetmaster ~]# chkconfig NetworkManager off

注:node1~node3同上

4、关闭防火墙

本实验主要是为了测试整个架构的功能,如果要测试防火墙,请另行解决。

1
2
3
4
5
[root@puppetmaster ~]# /etc/init.d/iptables stop
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
iptables: Unloading modules:                               [  OK  ]
[root@puppetmaster ~]# chkconfig iptables off

注:node1~node3同上

5、关闭selinux

1
[root@puppetmaster ~]# sed -i  's/SELINUX=.*/SELINUX=disabled/g'  /etc/selinux/config

注:node1~node3同上

6、设置key
为了操作方便,设置公钥私钥,可通过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
28
29
30
31
[root@puppetmaster ~]# ssh-keygen
Generating  public / private  rsa key pair.
Enter file  in  which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty  for  no passphrase):
Enter same passphrase again:
Your identification has been saved  in  /root/.ssh/id_rsa.
Your  public  key has been saved  in  /root/.ssh/id_rsa.pub.
The key fingerprint  is :
ff: 55 :8d: 31 : 34 :b4:b3:6a: 70 :3b:aa: 09 : 76 : 12 :5b:8d root@puppetmaster.kisspuppet.com
The key's randomart image  is :
+--[ RSA  2048 ]----+
|             .+  |
|             . o |
|              =  |
|         o     *.|
|      . E o . o o|
|       + . o o . |
|      = . . = .  |
|     . + . + o   |
|        o.. .    |
+-----------------+
[root@puppetmaster ~]#  for  in  { 1 .. 3 };  do  ssh-copy-id -i  192.168 . 100.11 $i; done
The authenticity of host  '192.168.100.111 (192.168.100.111)'  can't be established.
RSA key fingerprint  is  ae:db:c5:0c:0e:3f:8c: 62 :ea:a1: 26 :e2: 09 : 63 : 18 : 32 .
Are you sure you want to  continue  connecting (yes/no)? yes
Warning: Permanently added  '192.168.100.111'  (RSA) to the list of known hosts.
root@ 192.168 . 100.111 's password:
Now  try  logging into the machine,  with  "ssh '192.168.100.111'" , and check  in :
   .ssh/authorized_keys
to make sure we haven 't added extra keys that you weren' t expecting.
...

7、设置hosts文件

puppet通信的前提是agent和master必须能够互相解析主机名。
当然,也可以设置DNS,在第四部分搭建kermit架构的时候会搭建DNS服务,现在先暂时通过hosts文件进行解析,可先设置好puppetmaster后,统一copy到所有节点上

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[root@puppetmaster ~]# vim /etc/hosts
127.0 . 0.1    localhost localhost.localdomain localhost4 localhost4.localdomain4
:: 1          localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168 . 100.110  puppetmaster.kisspuppet.com  puppetmaster
192.168 . 100.111  agent1.kisspuppet.com  agent1
192.168 . 100.112  agent2.kisspuppet.com  agent2
192.168 . 100.113  agent3.kisspuppet.com  agent3
[root@puppetmaster ~]#  for  in  { 1 .. 3 };  do  scp /etc/hosts  192.168 . 100.11 $i:/etc/; done
hosts                                                                                   100 %   354      0 .4KB/s    00 : 00 
hosts                                                                                   100 %   354      0 .4KB/s    00 : 00 
hosts                                                                                   100 %   354      0 .4KB/s    00 : 00
[root@agent1 ~]# ping puppetmaster.kisspuppet.com #设置完成之后记得测试下
PING puppetmaster.kisspuppet.com ( 192.168 . 100.110 56 ( 84 ) bytes of data.
64  bytes from puppetmaster.kisspuppet.com ( 192.168 . 100.110 ): icmp_seq= 1  ttl= 64  time= 0.327  ms
64  bytes from puppetmaster.kisspuppet.com ( 192.168 . 100.110 ): icmp_seq= 2  ttl= 64  time= 0.996  ms
64  bytes from puppetmaster.kisspuppet.com ( 192.168 . 100.110 ): icmp_seq= 3  ttl= 64  time= 1.00  ms
--- puppetmaster.kisspuppet.com ping statistics ---
3  packets transmitted,  3  received,  0 % packet loss, time 1999ms
rtt min/avg/max/mdev =  0.327 / 0.774 / 1.000 / 0.317  ms

注意:设置完网络后,可以通过类似Xshell这样的工具进行登录,方便操作

二、配置本地光盘yum源

由于我这边是vmware虚拟机操作,所以光盘是可以直接挂载到某一个目录里面,如果是物理机,建议将光盘里的文件全部copy到指定的一个目录里面,然后beaeurl指向它既可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[root@puppetmaster ~]# mkdir /media/cdrom
[root@puppetmaster ~]# mount /dev/cdrom  /media/cdrom/
mount: block device /dev/sr0  is  write- protected , mounting read-only
[root@puppetmaster ~]# cp /etc/yum.repos.d/rhel-source.repo /etc/yum.repos.d/rhel-base.repo
[root@puppetmaster ~]# vim /etc/yum.repos.d/rhel-base.repo
[rhel-base]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=file: ///media/cdrom
enabled= 1
gpgcheck= 0
gpgkey=file: ///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[root@puppetmaster ~]# yum clean all
Loaded plugins: product-id, refresh-packagekit, security, subscription-manager
This system  is  not registered to Red Hat Subscription Management. You can  use  subscription-manager to register.
Cleaning repos: rhel-base
Cleaning up Everything
[root@puppetmaster ~]# yum install tree lrzsz   #测试
Loaded plugins: product-id, refresh-packagekit, security, subscription-manager
This system  is  not registered to Red Hat Subscription Management. You can  use  subscription-manager to register.
rhel-base                                                                                         |  3.9  kB      00 : 00  ...
rhel-base/primary_db                                                                              |  3.1  MB      00 : 01  ...
Setting up Install Process
Resolving Dependencies
...

注:node1~node3同上

说明:RHEL5的report在Server目录,所以在配置repo文件的时候参数 baseurl=file:///media/cdrom/Server

三、设置NTP服务器

1、配置NTP服务器
设置ntp服务器和本地进行同步,当然如果联网也可以和外部服务器同步,这里只需要保证所有服务器时间一致。
原因是因为,puppetmaster和agent之间时间相差不得超过10分钟(好像是),而后期配置的mcollecitve服务端和客户端之间不能相差60秒

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[root@puppetmaster ~]# rpm -qa | grep ntp
fontpackages-filesystem- 1.41 - 1.1 .el6.noarch
ntpdate- 4.2 .4p8- 3 .el6.x86_64  #默认已经安装
ntp- 4.2 .4p8- 3 .el6.x86_64 #默认已经安装
[root@puppetmaster ~]# cp /etc/ntp.conf{,.bak}
[root@puppetmaster ~]# vim /etc/ntp.conf
driftfile / var /lib/ntp/drift
logfile / var /log/ntp.log
Broadcastdelay  0.008
restrict  default  kod nomodify notrap nopeer noquery
restrict - 6  default  kod nomodify notrap nopeer noquery
restrict  default  ignore
restrict  127.0 . 0.1
restrict - 6  :: 1
restrict  192.168 . 100.0   mask  255.255 . 255.0  notrap nomodify
server   127.127 . 1.0      # local clock
fudge    127.127 . 1.0  stratum  10    refid NIST
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
[root@puppetmaster ~]# /etc/init.d/ntpd start
Starting ntpd:                                             [  OK  ]
[root@puppetmaster ~]# chkconfig ntpd on

2、节点测试并设置crontab

1
2
3
4
5
6
[root@agent1 ~]# ntpdate puppetmaster.kisspuppet.com
  7  Mar  06 : 08 : 30  ntpdate[ 16411 ]: adjust time server  192.168 . 100.110  offset  0.049448  sec
[root@agent1 ~]# crontab -l #可通过croutab -e命令设置
*/ 30  * * * * /usr/sbin/ntpdate puppetmaster.kisspuppet.com >>/root/ntdate.log  2 >& 1  && /sbin/clock --systohc
[root@agent1 ~]# /etc/init.d/crond reload
Reloading cron daemon configuration:                       [  OK  ]

四、制作本地yum仓库

本实验大部分包来自于http://yum.puppetlabs.com,部分包来自于EPEL和Gems官网,rabbitmq官方等,关于如何制作yum仓库,之前有文章写道http://kisspuppet.com/2014/01/26/puppet_create_repo/,这里在简单操作一下

1
2
3
4
5
6
7
8
9
10
[root@puppetmaster RHEL6U4]# yum install createrepo #安装制作软件包的软件
[root@puppetmaster RHEL6U4]# createrepo . #将本目录以及子目录下所有rpm包生产repodata
Spawning worker  0  with  105  pkgs
Workers Finished
Gathering worker results
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete

注:RHEL5的repodata必须在RHEL5环境下运行createrpo命令生成

五、配置FTP服务器

1、安装并配置FTP服务器

搭建FTP服务器的目的只要是为自定义yum仓库做准备

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
[root@puppetmaster ~]# yum install vsftpd
Loaded plugins: product-id, refresh-packagekit, security, subscription-manager
This system  is  not registered to Red Hat Subscription Management. You can  use  subscription-manager to register.
rhel-base                                                                                         |  3.9  kB      00 : 00  ...
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package vsftpd.x86_64  0 : 2.2 . 2 - 11 .el6 will be installed
--> Finished Dependency Resolution
...
[root@puppetmaster ~]# cp /etc/vsftpd/vsftpd.conf{,.bak}
[root@puppetmaster ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask= 022
anon_upload_enable=YES
anon_root=/puppet   #匿名访问的目录
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/ var /log/xferlog
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
[root@puppetmaster ~]# /etc/init.d/vsftpd start
Starting vsftpd  for  vsftpd:                                [  OK  ]
[root@puppetmaster ~]# chkconfig vsftpd on

2、在FTP共享目录里制作yum仓库

将生成好的yum源copy到FTP共享目录中

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[root@puppetmaster ~]# ll /puppet/
total  12
drwxr-xr-x  4  root root  4096  Mar   7  06 : 21  RHEL5U7
drwxr-xr-x  4  root root  4096  Mar   7  06 : 21  RHEL5U8
drwxr-xr-x  6  root root  4096  Mar   7  06 : 21  RHEL6U4
[root@puppetmaster ~]# ll /puppet/RHEL6U4/
total  16600
-rw-r--r--  1  root root    87643  Mar   7  06 : 21  facter- 1.7 . 3 - 1 .el5.x86_64.rpm
-rw-r--r--  1  root root    87440  Mar   7  06 : 21  facter- 1.7 . 3 - 1 .el6.x86_64.rpm
drwxr-xr-x  2  root root     4096  Mar   7  06 : 21  gem
-rw-r--r--  1  root root   634944  Mar   7  06 : 21  GeoIP- 1.4 . 8 - 1 .el6.x86_64.rpm
-rw-r--r--  1  root root   151654  Mar   7  06 : 21  keepalived- 1.2 . 7 - 1.1 .x86_64.rpm
-rw-r--r--  1  root root    10924  Mar   7  06 : 21  mcollective- 2.2 . 4 - 1 .el6.noarch.rpm
-rw-r--r--  1  root root    24596  Mar   7  06 : 21  mcollective-client- 2.2 . 4 - 1 .el6.noarch.rpm
-rw-r--r--  1  root root   759300  Mar   7  06 : 21  mcollective-common- 2.2 . 4 - 1 .el6.noarch.rpm
drwxr-xr-x  3  root root     4096  Mar   7  06 : 21  mcollective-plugins
drwxr-xr-x  2  root root     4096  Mar   7  06 : 21  mq
-rw-r--r--  1  root root   406588  Mar   7  06 : 21  nginx- 1.0 . 15 - 5 .el6.x86_64.rpm
-rw-r--r--  1  root root  1128352  Mar   7  06 : 21  puppet- 2.7 . 23 - 1 .el6.noarch.rpm
-rw-r--r--  1  root root  4509032  Mar   7  06 : 21  puppet-dashboard- 1.2 . 23 - 1 .el6.noarch.rpm
-rw-r--r--  1  root root    25596  Mar   7  06 : 21  puppet-server- 2.7 . 23 - 1 .el6.noarch.rpm
-rw-r--r--  1  root root  3729988  Mar   7  06 : 21  rabbitmq-server- 3.1 . 5 - 1 .el6.noarch.rpm
drwxr-xr-x  2  root root     4096  Mar   7  06 : 21  repodata
...

六、配置远程yum仓库

1
2
3
4
5
6
7
8
[root@puppetmaster ~]# vim /etc/yum.repos.d/rhel-puppet.repo
[rhel-puppet]
name=puppetlabs epel gems  for  rhel
baseurl=ftp: //puppetmaster.kisspuppet.com/RHEL6U4 #指向FTP服务器地址
enabled= 1
gpgcheck= 0
[root@puppetmaster ~]# yum list | grep puppet-server #测试
puppet-server.noarch                    2.7 . 25 - 1 .el6                  rhel-puppet

注:node1~node3同上

七、重要软件版本选型

目前puppet最成熟的版本为2.7.和3.3版本,两个版本都可以,本实验采用2.7版本。

1
2
3
4
5
6
7
8
9
10
puppet-server  2.7 . 25 - 1  来自puppetlabs
puppet  2.7 . 25 - 1  来自puppetlabs
facter  1.7 . 5  来自puppetlabs
puppet-dashboar  1.2 . 23  来自puppetlabs
ruby  1.8 .* 系统自带
mcollective  2.2 . 4  来自puppetlabs
activemq  5.5 . 0  来自puppetlabs
rabbitmq-server  3.1 . 5  来自rabbitmq官网
kermit-webui  1.2 - 1  来自kermit官网
...

本文转自凌激冰51CTO博客,原文链接:http://blog.51cto.com/dreamfire/1369561,如需转载请自行联系原作者

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
关系型数据库 网络安全 PostgreSQL
puppet连载14:安装puppetdb
yum install puppetdb puppetdb-terminus -y service puppetdb start vi /etc/puppet/puppet.
1065 0
|
网络协议 应用服务中间件 Shell
puppet连载12:linux安装nginx、openresty
服务端在/puppet/soft 里建nginx1102setup.sh,内容: !/bin/bash yum -y install wget libtool expat-devel gcc gcc-c++ glibc automake autocon...
931 0
|
Java 应用服务中间件 Linux
puppet连载九:linux安装jdk、tomcat模块
安装jdk1.8.0_91和tomcat8.0.36 mkdir -p /etc/puppet/modules/linuxjdktomcat/{manifests,templates,files} vi /etc/puppet/modules/linuxjdktomcat/manifests/init.
1078 0
|
MySQL 关系型数据库 Linux
puppet连载10:linux安装percona57/56/55、sysbench、tpcc模块
在服务端/puppet/soft下建my.cnf,内容为https://www.jianshu.com/p/c63fc6c71279 在服务端/puppet/soft下建changemysql57pass.
1075 0
|
关系型数据库 MySQL Linux
puppet连载四:服务端安装dashboard
curl -sSL https://rvm.io/mpapis.asc | gpg2 --import - curl -L get.rvm.io | bash -s stable source /etc/profile.
1265 0
|
Linux 开发工具 git
puppet连载七:linux基础组件安装模块
linux基础组件安装模块linuxbaseinstall 更换源,安装gcc gcc-c++ glibc-devel make ncurses-devel openssl-devel autoconf git mkdir -p /etc/puppet...
1074 0
|
网络安全 Apache Ruby
puppet连载三:服务端安装http、passenger
服务端安装插件: yum install -y ruby-devel ruby-libs rubygems libcurl-devel httpd httpd-devel apr-util-devel apr-devel mod_ssl gcc-c++...
1068 0
|
消息中间件
puppet 连载二:服务端和客户端安装(ActiveMQ、MCollective)
-------------------------------------服务端----------------------------------- 1、jdk安装 vi /etc/profile export JAVA_HOME=/usr/loca...
1149 0
|
网络协议 Apache
puppet 连载一:服务端和客户端安装(puppet、svn)
1、mkdir /puppet mkdir /puppet/soft 2、服务端安装dnsmasq:yum install -y dnsmasq cp /etc/dnsmasq.
1420 0
|
Linux Windows Ruby
puppet 服务端 客户端安装
转载:http://blog.51cto.com/ywzhou/1576141一、安装说明 官方安装向导https://docs.puppetlabs.com/guides/install_puppet/install_el.
1063 0