Puppet基礎編3-Puppetインストール前期の準備


ゼロ基礎学習Puppet自動化構成管理シリーズドキュメント
仕事をよくしようとすると,まずその器を利する.
原文住所:http://kisspuppet.com/2014/03/06/puppet_learning_base3/
Puppetをインストールする前に、ネットワークアドレス仕様、ホスト名、certname名、時間など、多くの予備作業が必要ですが、これらの準備ができているだけで、puppetをインストールした後に問題を発見して後悔することはありません.説明:次のドキュメントシステムは、本編のドキュメント仕様案で設計され、拡張され、準生産の基準に従って作成されます.
一、ネットワークアドレス規範
【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すべてのサーバのDNS 1は192.168.100.110です.
1、ホスト名の設定
[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

注:agent 2~agent 3同上
2、IPアドレスの設定system-config-networkコマンドで設定した後、プロファイルにアクセスして変更できます.
[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

注:node 1~node 3同上
3、NetworkManagerサービスを閉じる
NetworkManagerサービスは、RHELグラフィックスインタフェース管理NICのサービスで、そのオープンがネットワークに影響を与えるため、RHEL 6はデフォルトでオンになっていますので、オフにすることをお勧めします.
[root@puppetmaster ~]# /etc/init.d/NetworkManager stop
Stopping NetworkManager daemon:                            [  OK  ]
[root@puppetmaster ~]# chkconfig NetworkManager off

注:node 1~node 3同上
4、ファイアウォールを閉じる
本実験は主にアーキテクチャ全体の機能をテストするためであり,ファイアウォールをテストする場合は別途解決してください.
[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

注:node 1~node 3同上
5、selinuxを閉じる
[root@puppetmaster ~]# sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config

注:node 1~node 3同上
6、設定key操作の便宜上、公開鍵秘密鍵を設定し、puppetmaster側で統一的に配置することができる
[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 [email protected]
The key's randomart p_w_picpath is:
+--[ RSA 2048]----+
|             .+  |
|             . o |
|              =  |
|         o     *.|
|      . E o . o o|
|       + . o o . |
|      = . . = .  |
|     . + . + o   |
|        o.. .    |
+-----------------+
[root@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.
[email protected]'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を設定することもできます.第4部でkermitアーキテクチャを構築するときにDNSサービスを構築します.今しばらくhostsファイルで解析を行います.まずpuppetmasterを設定した後、copyをすべてのノードに統一することができます.
[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 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
[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仮想マシンの操作なので、ディスクは直接あるディレクトリにマウントできます.物理マシンであれば、ディスクのファイルをすべて指定したディレクトリにコピーし、beaeurlを指すことをお勧めします.
[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
...

注:node 1~node 3同上
説明:RHEL 5のReportはServerディレクトリにあるので、Repoファイルを構成する際にパラメータbaseurl=file:///media/cdrom/Server三、NTPサーバーの設置
1、NTPサーバーを配置してntpサーバーとローカルを設定して同期する.もちろん、ネットワークが外部サーバーと同期できる場合、ここではすべてのサーバーの時間が一致することを保証するだけである.なぜなら、puppetmasterとagentの間の時間の差は10分を超えてはならない(そうであるようだ)が、後期に構成されたmcollecitveサービス側とクライアント間の差は60秒ではないからである.
[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の設定
[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/、ここで簡単に操作します
[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

注意:RHEL 5のrepodataはRHEL 5環境でcreaterpoコマンド生成を実行する必要があります
五、FTPサーバーの配置
1、FTPサーバーのインストールと配置
FTPサーバを構築する目的はyum倉庫をカスタマイズするための準備である限り
[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共有ディレクトリに
[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倉庫の配置
[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

注:node 1~node 3同上
七、重要なソフトウェアバージョンの選択
現在puppetの最も成熟したバージョンは2.7.1と3.3バージョンであり,両バージョンとも可能であり,本実験では2.7バージョンを用いた.
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  
...

ホームに戻る
コミュニケーション:
微信公衆番号:puppet 2014、微信検索加入可能、以下のQRコードをスキャンして加入可能
微信公衆番号
QQ交流群:296934942