日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Puppet 的部署与应用,看这一篇就够了

發(fā)布時(shí)間:2023/12/20 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Puppet 的部署与应用,看这一篇就够了 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

工作原理

Puppet的目的是讓管理員只集中于要管理的目標(biāo),而忽略實(shí)現(xiàn)的細(xì)節(jié)。Puppet既可以在單機(jī)上使用,也可以c/s使用,在大規(guī)模使用puppet的情況下,通常使用c/s結(jié)構(gòu),在這種結(jié)構(gòu)中puppet客戶端只運(yùn)行puppetclient,puppet服務(wù)器只運(yùn)行puppetmaster。

工作流程

1)客戶端puppet調(diào)用facter(facter是通過(guò)ssl加密收集及檢測(cè)分析客戶端配置信息的一個(gè)工具),facter探測(cè)出主機(jī)的一些變量,如主機(jī)名,內(nèi)存大小,ip地址等。Puppet把這些信息通過(guò)ssl連接發(fā)送到服務(wù)器器端


2)服務(wù)器端的puppetmaster通過(guò)facter工具分析檢測(cè)客戶端的主機(jī)名,然后找到項(xiàng)目主配置文件mainfest里面對(duì)應(yīng)的node配置,并對(duì)該部分內(nèi)容進(jìn)行解析。Facter發(fā)送過(guò)來(lái)的信息可以作為變量處理,node牽扯到的代碼才解析,其他沒(méi)牽涉的代碼不解析,解析分為幾個(gè)階段,首先進(jìn)行語(yǔ)法檢查,如果語(yǔ)法沒(méi)錯(cuò),就繼續(xù)解析,解析的結(jié)果生成一個(gè)中間的“偽代碼”,然后把偽代碼發(fā)送給客戶端。 3)客戶端接收到偽代碼,并執(zhí)行,客戶端把執(zhí)行的結(jié)果發(fā)送給服務(wù)器。 4)服務(wù)器把客戶端的執(zhí)行結(jié)果寫(xiě)入日志。

Puppet工作過(guò)程有以下兩點(diǎn)值得注意:
1)為了保證安全,client和master之間是基于ssl和證書(shū)的,只有經(jīng)master證書(shū)認(rèn)證的client可以與master通信。
2)Puppet會(huì)讓系統(tǒng)保持在人們所期望的某種狀態(tài)并一直維持下去,例如:檢測(cè)某個(gè)文件并保證其一直存在,保證ssh服務(wù)始終開(kāi)啟,如果文件被刪除了或者ssh服務(wù)被關(guān)閉了,puppet下次執(zhí)行時(shí)(默認(rèn)30分鐘),會(huì)重新創(chuàng)建該文件或者啟動(dòng)ssh服務(wù)。


?●??安裝puppet的實(shí)驗(yàn)步驟
?●??搭建puppetmaster
?●??搭建puppetclient
?●??配置測(cè)試節(jié)點(diǎn)
?●??客戶端主動(dòng)拉取

?●??服務(wù)器推送

搭建 puppetmaster

規(guī)劃服務(wù)器主機(jī)名(小規(guī)模可以修改/etc/hosts文件,服務(wù)器多的時(shí)候我們需要搭建dns服務(wù)器來(lái)實(shí)現(xiàn)服務(wù)通過(guò)主機(jī)名進(jìn)行通信,這里就以/etc/hosts文件來(lái)實(shí)現(xiàn))

(puppetmaster)

[root@master /]# vim /etc/sysconfig/network HOSTNAME=master.itzhushou.cn . 192.168.1.10 master.itzhushou.cn [root@master /]# vim /etc/hosts 192.168.1.30 client2.itzhushou.cn 192.168.1.20 client1.itzhushou.cn

重啟生效 [root@master /]# reboot

(NTP)

[root@master /]# rpm -q ntp [root@master /]# vim /etc/ntp.conf (添加以下兩行) server 127.127.1.0 fudge 127.127.1.0 stratum 8

啟動(dòng)ntp服務(wù)并開(kāi)啟iptables例外

[root@master /]# service ntpd start [root@master /]# chkconfig ntpd on [root@master /]# iptables -I INPUT -p udp --dport 123 -j ACCEPT [root@master /]# service iptables save

(puppetmaster)

[root@master /]# hostname

在puppetmaster上面配置時(shí)間同步,作為ntp的客戶端

[root@master /]# ntpdate 192.168.1.40 [root@master /]# mount /dev/cdrom /media/ [root@master /]# cd /media/ [root@master /]# ls

安裝ruby(puppet就是基于ruby語(yǔ)言開(kāi)發(fā)的,所以需要安裝ruby)

[root@master /]# yum -y install compat-readline5 [root@master /]# yum -y install ruby

安裝完成之后檢查版本

[root@master /]# ruby -v [root@master /]#useradd -s /sbin/nologin puppet [root@master /]# cd /

安裝facter(通過(guò)facter工具分析檢測(cè)客戶端傳來(lái)的信息)

[root@master /]# umount /dev/cdrom /media/ [root@master /]# umount /dev/cdrom [root@master /]# cd /media/ [root@master /]# mount /dev/cdrom /media/ [root@master /]# ls [root@master /]# cd /usr/facter-1.7.1/ [root@master /]# tar zxf facter-1.7.1.tar.gz -C /usr/ [root@master /]# ruby install.rb 安裝puppet

編譯安裝:

[root@master /]# cd /media/ [root@master /]# tar zxf puppet-2.7.21.tar.gz -C /usr/ [root@master /]# cd /usr/puppet-2.7.21/ [root@master /]# ruby install.rb

復(fù)制配置文件

[root@master /]# cp conf/redhat/fileserver.conf /etc/puppet/ [root@master /]# cp conf/redhat/puppet.conf /etc/puppet/ [root@master /]# cp conf/redhat/server.init /etc/init.d/puppetmaster

修改文件屬性并創(chuàng)建puppet主目錄:

[root@master /]# chmod +x /etc/init.d/puppetmaster [root@master /]# mkdir /etc/puppet/manifets [root@master /]# mkdir /etc/puppet/modules [root@master /]# mkdir /etc/puppet/manifests

puppet服務(wù)證書(shū)請(qǐng)求與簽名
關(guān)閉防火墻(也可開(kāi)例外)

Service iptables stop [root@master /]# service iptables stop

在[main]標(biāo)題下添加一行:配置服務(wù)器模塊路徑

[root@master /]# vim /etc/puppet/puppet.conf modulepath = /etc/puppet/modules:/usr/share/puppet/modules

啟動(dòng)puppet主程序

[root@master /]# service puppetmaster start [root@master /]# netstat -anpt | grep ruby

配置防火墻

[root@master /]# iptables -I INPUT -p tcp --dport 8140 -j ACCEPT [root@master /]# service iptables save

(puppetclient1)
搭建puppetclient
規(guī)劃服務(wù)器主機(jī)名

[root@master /]# vim /etc/sysconfig/network HOSTNAME=client1.itzhushou.cn

[root@master /]# vim /etc/hosts 192.168.1.10 master.itzhushou.cn 192.168.1.20 client1.itzhushou.cn 192.168.1.30 client2.itzhushou.cn [root@master /]# hostname . [root@master /]# reboot

服務(wù)器時(shí)間同步 [root@master /]# ntpdate 192.168.1.40

安裝ruby

[root@master /]# mount /dev/cdrom /media/ [root@master /]# yum -y install compact-readline5 reby 或者rpm -ivh compact-readline5......

安裝facter

[root@master /]# cd / [root@master /]# umount /dev/cdrom /media/ [root@master /]# mount /dev/cdrom /media [root@master /]# tar zxf facter-1.7.1.tar.gz -C /usr/ [root@master /]# cd /media/ [root@master /]# cd /usr/facter-1.7.1/ [root@master /]# ruby install.rb

安裝puppet

[root@master /]# cd /media/ [root@master /]# tar zxf puppet-2.7.21.tar.gz -C /usr/ [root@master /]# cd /usr/puppet-2.7.21/ [root@master /]# ruby install.rb

復(fù)制文件并設(shè)置執(zhí)行權(quán)限

[root@master /]# cp conf/redhat/puppet.conf /etc/puppet/ [root@master /]# cp conf/redhat/client.init /etc/init.d/puppetclient [root@master /]# chmod +x /etc/init.d/puppetclient [root@master /]# service iptables stop

puppet服務(wù)證書(shū)請(qǐng)求簽名

[root@master /]# vim /etc/puppet/puppet.conf server = /master.itzhushou.cn

注意:puppetclient2的配置過(guò)程與puppetclient1類(lèi)似,主機(jī)名改為client2.itzhushou.cn即可,其他都一樣。

注冊(cè)服務(wù)器

分別在puppetclient1和puppetclient2上進(jìn)行注冊(cè),執(zhí)行的命令一樣 [root@master /]# puppet agent --server=master.itzhushou.cn --no-daemonize --verbose


上面會(huì)一直等待,可以按ctrl+c結(jié)束,但是服務(wù)器上已經(jīng)有申請(qǐng)信息了

(puppetmaster)
可以執(zhí)行puppet cert —list 查看申請(qǐng)注冊(cè)客戶端
將未注冊(cè)的客戶端進(jìn)行注冊(cè)Puppet cert sign —all

[root@master /]# puppet cert --list [root@master /]# puppet cert sign --all

可以通過(guò)目錄去查看已經(jīng)注冊(cè)的客戶端(看到下面的信息說(shuō)明注冊(cè)成功了)
[root@master /]# ll /var/lib/puppet/ssl/ca/signed/


應(yīng)用案例

1、配置一個(gè)測(cè)試節(jié)點(diǎn)
節(jié)點(diǎn)信息:/etc/puppet/manifests/nodes
模塊信息: /etc/pupppet/modules

實(shí)驗(yàn)?zāi)繕?biāo):為了保護(hù)linux的ssh端×××破,批量修改客戶端的sshd端口,將22號(hào)端口改為9922,并實(shí)現(xiàn)重啟sshd服務(wù)的工作。

想完成以上幾點(diǎn),需要明確幾點(diǎn):

?●??需確定openssh軟件包安裝
?●??需確定存在ssh的配置文件
?●??確定sshd的服務(wù)是系統(tǒng)服務(wù)

創(chuàng)建ssh模塊,模塊的目錄為ssh,模塊下有三個(gè)文件分別是:manifests、templates、files。

manifest里面必須包含一個(gè)init.pp文件,這是該模塊的的初始(入口)文件,導(dǎo)入一個(gè)模塊的時(shí)候需要從init.pp開(kāi)始執(zhí)行,可以把所有的代碼都寫(xiě)入到這個(gè)文件中,也可以分成多個(gè).pp文件,init在去包含其他文件,定義class類(lèi)名時(shí)必須是ssh,這樣才能實(shí)現(xiàn)調(diào)動(dòng)
files目錄是該模塊的發(fā)布目錄,puppet提供了一個(gè)文件分割機(jī)制,類(lèi)似rsync的模塊。

templates目錄包含erb模塊文件、這個(gè)和file資源的templates屬性有關(guān)(很少使用)
master端

[root@master /]# rpm -q openssh

創(chuàng)建必要的目錄

[root@master /]# mkdir -p /etc/puppet/modules/ssh/{manifests,templates,files} [root@master /]# mkdir /etc/puppet/manifests/nodes [root@master /]# chown -R puppet /etc/puppet/modules/ [root@master /]# mkdir /etc/puppet/modules/ssh/files/ssh [root@master /]# ll /etc/puppet/modules/ssh/

創(chuàng)建模塊配置文件install.pp
Vi /etc/puppet/modules/ssh/manifests/install.pp
輸入以下信息(首先確定客戶端安裝了ssh服務(wù))

[root@master /]# vim /etc/puppet/modules/ssh/manifests/install.pp class ssh::install{ package{ "openssh": ensure => present, } }

注意:present是以,結(jié)尾,由于配置的是ssh服務(wù),所以模塊名為ssh,如果配置http,則模塊名為http。

創(chuàng)建模塊配置文件config.php

[root@master /]# vim /etc/puppet/modules/ssh/manifests/config.pp

class ssh::config{
file { “/etc/ssh/sshd_config”:
ensure =>present,
owner =>”root”,
group =>”root”,
mode =>”0600”,
source =>”puppet://$puppetserver/modules/ssh/ssh/sshd_config”,
require => Class[“ssh::install”],
notify => Class[“ssh::service”],
}
}

**命令解釋** class ssh::config{ file{ "/etc/ssh/sshd_config": //配置客戶端需要同步的文件 ensure => present, //確定客戶端此文件存在 group => "root", //文件所屬組 owner => "root", //文件所屬用戶 mode => "0600", //文件權(quán)限 source=> "puppet://$puppetserver/modules/ssh/ssh/sshd_config", //從服務(wù)器同步文件的路徑 require => Class["ssh::install"], //調(diào)用ssh::install確定 openssh已經(jīng)安裝 >這個(gè)文件的內(nèi)容主要是定義,發(fā)布的配置文件權(quán)限以及調(diào)用ssh::install檢查client是否安裝了ssh服務(wù),以及調(diào)用ssh::service重新啟動(dòng)sshd服務(wù)。 notify => Class["ssh::service"], //如果config.pp發(fā)生變化通知service.pp } } 創(chuàng)建模塊配置文件service.pp

[root@master /]# vim /etc/puppet/modules/ssh/manifests/service.pp

class ssh::service {
service {“sshd”:
ensure=>running,
hasstatus=>true,
hasrestart=>true,
enable=>true,
require=>Class[“ssh::config”]
}
}

**命令解釋** class ssh::service{ service{ "sshd": ensure =>running, //確定sshd運(yùn)行 hasstatus=>true, //puppet該服務(wù)支持status命令,即類(lèi)似service sshd status命令 hasrestart=>true, //puppet該服務(wù)支持status命令,即類(lèi)似service sshd status命令 enable=>true, //服務(wù)是否開(kāi)機(jī)啟動(dòng) 創(chuàng)建模塊主配置文件init.pp require=>Class["ssh::config"] //確認(rèn)config.pp調(diào)用 } }

[root@master /]# vim /etc/puppet/modules/ssh/manifests/init.pp

class ssh{
include ssh::install,ssh::config,ssh::service
}

上面一共建立了4個(gè)文件,確保建立好 `[root@master /]# ll /etc/puppet/modules/ssh/manifests/` 建立服務(wù)器端ssh統(tǒng)一維護(hù)文件 由于服務(wù)器端和客戶端的sshd_config文件默認(rèn)一樣,此時(shí)將服務(wù)器端/etc/ssh/sshd_config復(fù)制到模塊默認(rèn)路徑。 [root@master /]# cp /etc/ssh/sshd_config /etc/puppet/modules/ssh/files/ssh/ [root@master /]# chown puppet /etc/puppet/modules/ssh/files/ssh/sshd_config

[root@master /]# vim /etc/puppet/manifests/nodes/ssh.pp

node ‘client1.itzhushou.cn’ {
include ssh
}

node ‘client2.itzhushou.cn’ {
include ssh
}

將測(cè)試節(jié)點(diǎn)載入puppet,即修改site.pp Vi /etc/puppet/manifests/site.pp,輸入以下信息:

[root@master /]# vim /etc/puppet/manifests/site.pp

import “nodes/ssh.pp”

修改服務(wù)器端維護(hù)的sshd_config配置文件

[root@master /]# vim /etc/puppet/modules/ssh/files/ssh/sshd_config
Port 9922

重新啟動(dòng)puppet
[root@master /]# /etc/init.d/puppetmaster restart

(puppetclient1) 配置客戶端主動(dòng)拉取 一般在小規(guī)模自動(dòng)化群集中,如代碼上線需要重新啟動(dòng)服務(wù)時(shí),為了防止網(wǎng)站暫時(shí)性無(wú)法訪問(wèn)的問(wèn)題,每臺(tái)客戶端需要運(yùn)行一次puppet agent -t命令,所以選擇模式時(shí)需要根據(jù)規(guī)模的大小來(lái)決定,一般運(yùn)維工程師puppet服務(wù)器到各客戶端建立ssh信任,然后自定義腳本,ssh讓客戶端批量執(zhí)行puppet命令同步。 在客戶端puppetclient1上執(zhí)行命令: `[root@master /]# puppet agent -t` ![](http://i2.51cto.com/images/blog/201803/07/ee28e070defb4e3a3c2a22df15f19c38.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=) 然后在客戶端上查看ssh配置文件的端口是否改變,并查看端口運(yùn)行狀態(tài):

[root@master /]# vim /et/ssh/sshd_config
[root@master /]# netstat -anpt | grep ssh

![](http://i2.51cto.com/images/blog/201803/07/308907289f912669bb3576c8b45180fc.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=) 服務(wù)器推送同步 1修改puppet主配置文件 在客戶端上執(zhí)行下面命令: Vi /etc/puppet/puppet.conf,在最后添加一行,使puppet監(jiān)聽(tīng)8139端口

[root@master /]# vim /etc/puppet/puppet.conf
listen= true

修改puppet驗(yàn)證配置文件,定義權(quán)限 在客戶端上執(zhí)行:vim /etc/puppet/auth.conf 在最后一行添加下面的內(nèi)容

[root@master /]# vim /etc/puppet/puppet.conf
listen= true

修改puppet驗(yàn)證配置文件,定義權(quán)限 在客戶端上執(zhí)行:`vim /etc/puppet/auth.conf` 在最后一行添加下面的內(nèi)容

[root@master /]# vim /etc/puppet/auth.conf
allow *
.
啟動(dòng)puppet客戶端
[root@master /]# /etc/init.d/puppetclient start
```

(puppetmaster)

再次把服務(wù)器的ssh配置文件端口改為9933(換一個(gè)試試)

服務(wù)器推送給客戶端
[root@master /]# puppet kick client1.itzhushou.cn

在客戶端查看端口是否改變




原文發(fā)布時(shí)間為:2018-11-20

本文作者:李佳良

本文來(lái)自云棲社區(qū)合作伙伴“高效運(yùn)維?”,了解相關(guān)信息可以關(guān)注“高效運(yùn)維”。

總結(jié)

以上是生活随笔為你收集整理的Puppet 的部署与应用,看这一篇就够了的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。