puppet 部署

1 修改每個主機的主機名和hosts文件

192.168.0.13 master
192.168.0.14 slave
vim /etc/hostname #修改主機名
slave
vim /etc/hosts #增加DNS解析
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.13 master
192.168.0.14 slave
192.168.0.16 web1.yang.com #提供靜態資源的服務器
192.168.0.19 proxy1.yang.com #反代服務器

2.安裝master端,agent端

yum install epel-release.noarch -y
yum install puppet-server.noarch
#記得啓動 systemctl restart pupetmaster
安裝agent端
yum install puppet -y
vim /etc/puppet/puppet.conf #修改agent端配置,加入以下配置
server = master #指定服務器的主機名,記住ping 下測試能不能正常解析到服務器IP
runinterval = 10 #每隔10s 刷新一次

3.證書認證

agent端運行
puppet agent --test --server master #向master主機發送證書請求

master端
puppet cert list --all        # 查看所有證書
puppet cert list               #只看未簽發的
puppet cert sign --all      #簽發所有未簽發的 
puppet cert sign slave    #只簽發名爲"slave"的證書
puppet cert clean slave #吊銷指定的客戶端的證書,並刪除與其相關的所有文件
rm -rf  /var/lib/puppet/ssl/ #這個文件夾是agent端存放證書的,前面服務器端先吊銷證書,這邊客戶端在刪除存放證書的文件夾,在重新申請,已達到重新申請的效果
自動簽發
方法一
在/etc/puppet下新加配置文件autosign.conf,將要自動簽發的域名寫入該文件
vim /etc/puppet/autosign.conf
*.xxx.com
方法二
vim /etc/puppet/puppet.conf
autosign = true
補充
ll /var/lib/puppet/ssl/ca/requests
#服務器端查看請求證書 (這個文件夾是未籤的證書)
ll /var/lib/puppet/ssl/ca/signed/
#服務器端查看已經簽署的證書(這個文件夾是已籤的證書)
/var/lib/puppet/ssl/
#agent端證書位置,如果需要換證書將裏面的內容全部刪除重新想server發申請即可

4.pp文件的解釋

puppet 部署

manifests --size.pp :這個文件是導航文件,用於匹配用戶調用類的
vim /etc/puppet/manifests/site.pp
node default{
#默認匹配,表示只要證書被簽發的,都會下發下面的類
     include nginx
         #調用名爲nginx的類
}
node /web[0-9]+\.yang\.com/{
#正則匹配,表示匹配主機名以web開頭的後面帶數字的且後面是.yang.com 才下發下面的類 我用來匹配"web1.yang.com"的
     include web
}
node /proxy[0-9]+\.yang\.com/{
#正則匹配,表示匹配主機名以proxy開頭的後面帶數字的且後面是.yang.com 才下發下面的類
     include proxy
}

puppet 部署

modules:這個文件夾是存放模塊的,我建立三個模塊,nginx  proxy  web,nginx被默認"node default"所調用,作用是用來安裝nginx程序包的
vim /etc/puppet/modules/nginx/manifests/init.pp
class nginx {
#注意,類名要和文件夾名一致,否則無法被size.pp 文件調用
      package {"nginx":
      ensure=> present,
              }
            }
web是被"node /web[0-9]+\.yang\.com/"所調用,用來修改nginx配置文件的
class web($nginx_port="8080"){
#先定義一個變量
      file{'/etc/nginx/nginx.conf':
            #複製客戶機的那個路徑::wq
      ensure => file,
      content => template('/etc/puppet/modules/web/files/nginx.conf'),
            # 模板文件的位置,該模塊內部的files文件夾就是用來存放模板文件的
      owner => 'root',
      group => 'root',
      mode => '0644',
          }
    }

puppet 部署

配置文件的重點就是 默認的80端口,替換成了<%= @proxy_port %> ,在複製的過程當中會被替換成剛纔前面定義的8080
proxy是被"node /proxy[0-9]+\.yang\.com/"所調用,也是用來修改nginx配置文件的不過這邊複製的反代的模板,配置和上面web 差不多

5.測試

agent端默認請求資源時間是30分鐘等不了,可用 puppet agent -t 手動請求資源
puppet 部署
#可以看到nginx已經被安裝了,這個是第一個模塊"nginx",安裝的
puppet 部署
#打開nginx的配置文件可以看到,這邊端口已經被替換成了8080,這是第二個模塊"web"產生的效果

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章