如何在 CentOS 7 上安裝和配置 Puppet 主從架構


本文將學習如何在 CentOS 7 上安裝和配置開源 Puppet 代理/主伺服器,該軟體來自 Puppet Labs。Puppet 是一種配置管理工具,可幫助系統管理員自動化伺服器基礎設施的配置、供應和管理。Puppet 代理稱為節點,我們將使用 Puppet Server 軟體包而不是 Passenger 或任何其他環境。

我們需要對要安裝 Puppet 主伺服器的伺服器具有 root 或超級使用者訪問許可權。

先決條件

我們需要在 Puppet 伺服器上配置正確的 DNS,以便客戶端能夠與您的基礎設施通訊。防火牆埠 8140 從伺服器到客戶端以及客戶端到伺服器之間開放,以向節點/客戶端傳送指令。

準備 Puppet 主伺服器

我們需要安裝 CentOS 7 x64 位版本以用於 Puppet 主伺服器,主機名應為 Puppet,硬體需求取決於我們要管理多少個代理或節點,通常我們需要 2 核 CPU 和至少 1GB 的 RAM,並使用伺服器的 DNS 記錄設定主機檔案。

192.168.1.87 puppet.demo.com puppet

安裝 NTP

由於我們使用證書頒發機構來管理代理節點,因此 Puppet 主伺服器必須保持準確的時間,以避免在它頒發代理證書時出現潛在問題,如果存在一些時間差異,證書可能會過期,為了避免這些問題,我們將安裝 NTP(網路時間協議)。

使用 YUM 安裝 NTP

以下是命令:

# yum install ntp -y

我們需要更新配置檔案中的池區域,以便它從池中更新正確的時間。

# vi /etc/ntp.conf
server 0.us.pool.ntp.org
server 1.us.pool.ntp.org
server 2.us.pool.ntp.org
server 3.us.pool.ntp.org

執行以下命令以更新 Puppet 主伺服器上的時間。

# ntpdate pool.ntp.org

重啟 NTP 服務並在啟動時啟用該服務。

# systemctl restart ntpd
# systemctl enable ntpd

安裝 Puppet Server

現在環境已準備就緒,我們將安裝 Puppet 主伺服器,我們將從官方儲存庫安裝 Puppet Server,要啟用儲存庫,我們需要執行以下命令。

# rpm -ivh https://yum.puppetlabs.com/puppetlabs-release-pc1-el-7.noarch.rpm

更新儲存庫後,我們使用此命令安裝 Puppet Server。

# yum install puppetserver

使用以下命令啟動 Puppet Server 並啟用伺服器在啟動時啟動。

# systmectl start puppetserver
# systemctl enable puppetserver

安裝 Puppet Agent

我們還需要在所有要管理的 Puppet 伺服器上安裝代理軟體。我們需要在所有節點或客戶端機器上安裝此代理,以便它們可用於 Puppet 伺服器。

使用以下命令啟用官方 Puppet Labs 官方儲存庫。

# rpm -ivh https://yum.puppetlabs.com/puppetlabs-release-pc1-el-7.noarch.rpm

使用以下命令安裝 puppet-agent 軟體包。

# yum -y install puppet-agent

現在我們需要啟動已安裝的 Puppet 代理,使用以下命令。

# /opt/puppetlabs/bin/puppet resource service puppet ensure=running enable=true

第一次執行 Puppet 代理時,它將生成一個 SSL 證書並向 Puppet 主伺服器傳送簽名請求。

Puppet 入門

現在我們將學習 Puppet 主伺服器的基本任務。

收集節點的事實

“factor”收集有關連線的節點的資訊,例如客戶端的作業系統名稱、主機名、SSH 金鑰、IP 地址等。我們還可以新增不屬於預設事實的自定義事實。

要列出正在自動收集的事實,請執行以下命令。

# /opt/puppetlabs/bin/factor

主清單檔案

Puppet 使用特定的語言來告訴系統配置,這些配置使用副檔名為 .pp 的清單作為預設配置檔案。清單位於以下位置:/etc/puppetlabs/code/environments/production/manifests/site.pp

它們使用 Puppet 代理定期執行,預設情況下每 30 分鐘執行一次,當它檢查傳送到主伺服器的事即時,這些事實會被拉取到當前目錄中,並且主清單決定與代理相關的所需狀態。

在特定代理節點上執行

我們還可以手動啟動特定代理的檢查並執行以下命令以手動執行。

# /opt/puppetlabs/bin/puppet agent –test

演示示例清單

# vi /etc/puppetlabs/code/environments/production/manifests/site.pp
file {'/tmp/example-ip': # resource type file and filename
   ensure => present, # make sure it exists
   mode => '0644', # file permissions
   content => "192.168.1.100: ${ipaddress_eth0}.
", # note the ipaddress_eth0 fact }

這將顯示位於 /tmp 資料夾中的 IP 地址,並且清單將確保所有節點在 /tmp 資料夾中都有 example-ip 檔案。

在特定節點上執行

我們還可以在清單中為特定節點定義資源,這可以透過在清單中使用節點來實現。

# vi /etc/puppetlabs/code/environments/production/manifests/site.pp
node 'node1', 'node2' { # applies to node1 and node2 nodes
   file {'/tmp/dns': # resource type file and filename
      ensure => present, # make sure it exists
      mode => '0644',
      content => "Only DNS servers get this file.
",    } } node default {} # applies to nodes that aren't explicitly defined

以上示例將確保節點 1 和節點 2 在 /tmp/dns 中具有檔案。

從 Puppet 主伺服器執行模組

模組對於將要一起執行的任務進行分組非常有用。Puppet 社群中提供了許多模組,或者我們可以編寫自己的模組。

如果我們需要安裝 puppetlabs-apache 模組。

# /opt/puppetlabs/bin/puppet module install puppetlabs-apache

現在編輯 site.pp 並新增以下內容以在節點 2 上安裝 apache。

node 'host2' {
   class { 'apache': } # use apache module
   apache::vhost { 'demo.com': # define vhost resource
      port => '80',
      docroot => '/var/www/html'
   }
}

這將安裝 apache 軟體包並配置一個名為 demo.com 的虛擬主機,用於偵聽埠 80,並且文件根目錄為 /var/www/html。

注意:在執行此示例之前,請注意,如果節點中存在任何現有配置,這將刪除所有現有的 Apache 配置。

在完成配置和設定後,我們已經介紹了基本的主/代理安裝以及一些清單和模組,我們可以使用 Puppet 管理客戶端和基礎設施,因為 Puppet 還有許多其他功能,我們將在以後的文章中介紹它們。

更新時間: 2019年10月18日

244 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始
廣告