首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

RedHat/CentOS 下 Puppet 集中化配置管理實戰部署指南

     編輯:Java 綜合教學

RedHat/CentOS 下 Puppet 集中化配置管理實戰部署指南

Puppet 是典型 C/S 架構(星型拓撲)的配置管理工具。所有 Agent 定期(預設 30 分鐘)連線 Master 拉取最新配置並強制套用,執行結果回報 Master。本文記錄在 RedHat 6 環境下,從安裝、認證、自動簽名、資源定義到實際驗證的完整流程。

環境規劃

角色IP主機名關鍵服務
Master172.25.254.2vm2.example.compuppetmaster (TCP 8140)
Agent1172.25.254.3vm3.example.compuppet agent
Agent2172.25.254.4vm4.example.compuppet agent

前置條件: 全網主機名解析正確、時間同步(NTP),否則 SSL 憑證驗證失敗。

Master 端安裝與啟動

# 安裝核心套件(依版本調整 RPM 路徑)
yum install -y puppet-server-3.8.1 facter ruby-augeas rubygems rubygem-json ruby-shadow puppet hiera

# 啟動服務
/etc/init.d/puppetmaster start

# 驗證端口
netstat -anltp | grep 8140
# tcp  0  0 0.0.0.0:8140  0.0.0.0:*  LISTEN  1118/ruby

Agent 端安裝與首次認證

yum install -y puppet facter ruby-shadow hiera ruby-augeas rubygems rubygem-json

# 發起認證請求
puppet agent --server vm2.example.com --test
# 首次會顯示 "Exiting; no certificate found and waitforcert is disabled"

Master 端查看待簽名請求:

puppet cert list
# "vm3.example.com" (SHA256) xx:xx:...

簽名核准:

puppet cert sign vm3.example.com
# 或全部簽名:puppet cert sign --all

Agent 再次執行 puppet agent --test 即可套用配置。

自動簽名配置(生產環境慎用)

# Master 端
vim /etc/puppet/puppet.conf
# [main] 區段下添加
autosign = true

# 建立 autosign.conf
echo "*.example.com" > /etc/puppet/autosign.conf
/etc/init.d/puppetmaster reload

Agent 端直接 puppet agent --server vm2.example.com --test 即自動通過。

憑證重置(主機名變更時)

# Master
puppet cert clean vm3.example.com

# Agent
rm -rf /var/lib/puppet/ssl/*
puppet agent --server=puppet.example.com

核心配置:site.pp 資源定義

Puppet 程式入口為 /etc/puppet/manifests/site.pp,所有資源由此調用。

1. 檔案分發

file { "/mnt/puppet-3.8.1-1.el6.noarch.rpm":
  ensure  => file,
  source  => "puppet:///files/puppet-3.8.1-1.el6.noarch.rpm",
  mode    => "0600",
  owner   => "root",
}

Master 建立 /etc/puppet/files/ 目錄放置源檔案,並在 /etc/puppet/fileserver.conf 開放:

[files]
path /etc/puppet/files
allow *

2. 套件與服務管理

package { "vsftpd":
  ensure => present,  # installed/absent
}

service { "vsftpd":
  ensure    => running,
  enable    => true,
  subscribe => File["/etc/vsftpd/vsftpd.conf"],  # 配置變更自動 reload
}

file { "/etc/vsftpd/vsftpd.conf":
  source => "puppet:///files/vsftpd.conf",
  mode   => "0600",
  notify => Service["vsftpd"],
}

3. 用戶建立

user { "xp":
  ensure     => present,
  uid        => 900,
  home       => "/home/test",
  shell      => "/bin/bash",
  managehome => true,
  password   => '$6$salt$hashed_password',  # 使用 openssl passwd -6 生成
}

4. 定時任務

cron { "echo-date":
  command => "/bin/echo `/bin/date` >> /tmp/echo",
  user    => "root",
  hour    => ["2-4"],
  minute  => "*/10",
}

驗證與總結

Agent 端執行 puppet agent --test 觀察輸出,確認檔案、套件、服務、用戶、crontab 均依預期變更。Puppet 以聲明式 DSL 描述「期望狀態」,配合冪等性執行,是自動化運維、基礎設施即代碼(IaC)的基石工具。建議進階學習 Hiera 數據分離、Roles/Profiles 模式、PuppetDB 整合與 r10k 環境部署。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved