工欲善其事必先利其器
在安装Puppet之前是需要做很多预备工作的,比如网络地址规范、主机名、certname名、时间等等,也只有这些准备好了,才不至于在安装好puppet之后发现问题而后悔莫及。 说明:接下来的整套文档体系都是以本篇文档规范方案进行设计和扩充的,同样也是也是按照准生产的标准进行编写。
一、网络地址规范
【HOSTNAME】 【IP】 【certname】 【operatingsystem】
puppetmaster.www.yunvn.com 192.168.100.110/24 puppetmaster_cert.www.yunvn.com RHEL6.4
agent1.www.yunvn.com 192.168.100.111/24 agent1_cert.www.yunvn.com RHEL5.7
agent2.www.yunvn.com 192.168.100.112/24 agent2_cert.www.yunvn.com RHEL5.8
agent3.www.yunvn.com 192.168.100.123/24 agent3_cert.www.yunvn.com RHEL6.4
注:192.168.100.*/24的网关为192.168.100.110 所有服务器的DNS1为192.168.100.110
1、设置主机名
[iyunv@puppetmaster ~]# vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=www.yunvn.com
[iyunv@agent1 ~]# vim /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=agent1.www.yunvn.com
注:agent2~agent3同上
2、设置IP地址
可通过system-config-network命令进行配置好后在进入配置文件进行修改
[iyunv@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默认是开启的,建议关闭。
[iyunv@puppetmaster ~]# /etc/init.d/NetworkManager stop
Stopping NetworkManager daemon: [ OK ]
[iyunv@puppetmaster ~]# chkconfig NetworkManager off
注:node1~node3同上
4、关闭防火墙
本实验主要是为了测试整个架构的功能,如果要测试防火墙,请另行解决。
[iyunv@puppetmaster ~]# /etc/init.d/iptables stop
iptables: Flushing firewall rules: [ OK ]
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Unloading modules: [ OK ]
[iyunv@puppetmaster ~]# chkconfig iptables off
注:node1~node3同上
5、关闭selinux
[iyunv@puppetmaster ~]# sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config
注:node1~node3同上
6、设置key 为了操作方便,设置公钥私钥,可通过puppetmaster端统一部署
[iyunv@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.. . |
+-----------------+
[iyunv@puppetmaster ~]# for i 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到所有节点上
[iyunv@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.www.yunvn.com agent1
192.168.100.112 agent2.www.yunvn.com agent2
192.168.100.113 agent3.www.yunvn.com agent3
[iyunv@puppetmaster ~]# for i 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
[iyunv@agent1 ~]# ping www.yunvn.com#设置完成之后记得测试下
PINGwww.yunvn.com (192.168.100.110) 56(84) bytes of data.
64 bytes fromwww.yunvn.com(192.168.100.110): icmp_seq=1 ttl=64 time=0.327 ms
64 bytes from www.yunvn.com (192.168.100.110): icmp_seq=2 ttl=64 time=0.996 ms
64 bytes from www.yunvn.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指向它既可。
[iyunv@puppetmaster ~]# mkdir /media/cdrom
[iyunv@puppetmaster ~]# mount /dev/cdrom /media/cdrom/
mount: block device /dev/sr0 is write-protected, mounting read-only
[iyunv@puppetmaster ~]# cp /etc/yum.repos.d/rhel-source.repo /etc/yum.repos.d/rhel-base.repo
[iyunv@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
[iyunv@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
[iyunv@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秒
[iyunv@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 #默认已经安装
[iyunv@puppetmaster ~]# cp /etc/ntp.conf{,.bak}