2015-04-18 159 views

回答

2

Puppet是一個配置管理工具,允許自動執行定義和維護多個開發人員工作站的一致狀態的過程。它是一個描述性的,集中的和基於客戶端 - 服務器的系統。中央服務器已配置,客戶端與其同步以確保所有系統都以所述狀態結束。例如,使用Puppet可以輕鬆完成確保項目中所有開發人員系統上的相同開發環境的任務。 以下是在具有Ubuntu操作系統的Amazon EC2實例上設置Puppet服務器和一個Puppet客戶端的快速步驟,以及在服務器上安裝Puppet Dashboard以查看客戶端的狀態。

先決條件

  • 兩個EC2實例建立與Ubuntu AMI。
  • 一個名爲puppetserver的實例,另一個名爲puppetclient。

程序

木偶服務器和客戶端設置

  • 配置主機文件查看關於puppetserver和puppetclient在/ etc /主機名的文件。這兩個系統上分別是Puppet服務器和客戶端主機名 編輯/ etc/hosts文件。添加服務器和客戶端IP以及相應的主機名。

  • 設置的木偶服務器 啓用木偶服務器

  • 的木偶實驗室包庫

  • 下載「puppetlabs釋放」包的OS(這裏的,Ubuntu 12.04)運行 安裝包dpkg -i
  • 運行apt-get update以獲取可用軟件包的新列表。

例如,啓用Ubuntu 12的存儲庫。04,精確的穿山甲:

wget https://apt.puppetlabs.com/puppetlabs-release-precise.deb 
sudo dpkg -i puppetlabs-release-precise.deb 
sudo apt-get updateInstall Puppet 

安裝木偶

安裝戲夢人生

sudo apt-get update sudo apt-get install puppetmaster 

設置的木偶客戶

木偶客戶機上安裝木偶

sudo apt-get update sudo apt-get install puppet 

指定客戶端上的Puppet服務器域名。爲此,請修改
/etc/puppet/puppet.conf 文件並添加行 server =。 客戶端現在可以連接到Puppet主站。

enter image description here

啓動用於建立服務器和客戶端之間的第一通信木偶代理服務。

sudo puppet agent --verbose --no-daemonize --onetime 

這開始在端口8140監聽木偶服務器上的木偶大師進程的連接。輸出將是詳細的,代理將不會作爲守護進程在後臺繼續運行。此外,它將只運行一次,即在連接關閉後,代理程序進程將退出。輸出看起來像:

enter image description here

客戶端已通過發送一個SSL證書請求使自己已知的服務器。服務器需要證明客戶端。 要查看服務器

sudo puppet cert --list 

此列出了以下

enter image description here

登錄客戶端節點的SSL證書

sudo puppet cert --sign <puppet client name> 
上還沒有將要簽署的證書列表

enter image description here

客戶端現在可以建立與服務器的完整連接並輪詢Puppet主機以進行任何配置更新。

定義配置

我們已經成立了傀儡木偶兩種服務器和客戶端上,並且也建立了兩臺機器之間的通信。下一步是使用puppet清單定義目標系統的配置。這些清單在site.pp文件中指定。

作爲一個例子,我們定義了一個清單,它將在客戶端上創建一個helloworld.txt文件。

定義清單

放入/etc/puppet/manifests/site.pp文件中的下列清單定義,

node "<puppet client hostname>" { file { "/home/ubuntu/helloworld.txt": content => "This is test content", ensure => file, owner => "ubuntu", group => "ubuntu", mode => 0644 } } 

此清單定義了傀儡客戶端必須有一個helloworld.txt文件 在/ home/ubuntu /文件夾中包含內容,這是測試內容。

客戶端

獲取變化對木偶客戶端,運行以下命令。

sudo puppet agent -t 

puppet客戶端拉取puppet服務器上site.pp文件中定義的清單。它瞭解到一個名爲helloworld.txt的文件具有已定義的規範,預計將存在於/ home/ubuntu位置。因爲客戶端上不存在這樣的文件,所以代理採取行動並創建文件。

查看「helloworld.txt」文件

爲了驗證客戶端在由木偶服務器定義的狀態存在,運行下面的命令

sudo vi /home/ubuntu/helloworld.txt 

文件內容是相同在服務器清單定義中定義。

安裝木偶控制板

概述 木偶儀表板是與木偶接口的GUI。它可以用來查看和報告所有客戶端節點的狀態。 Puppet儀表板在puppet服務器的端口3000上運行。

以下是建立

  1. 安裝外部依賴

Dashboard是一個Ruby on Rails的web應用程序,因此需要一定的軟件被安裝 的RubyGems 耙版本的步驟0.8.3或更新版本 MySQL數據庫服務器版本5.x Ruby-MySQL綁定版本2.7.x或2.8.x

安裝包

sudo apt-get install -y build-essential irb libmysql-ruby libmysqlclient-dev libopenssl-ruby libreadline-ruby mysql-server rake rdoc ri ruby ruby-dev 

安裝RubyGems包系統

(URL="http://production.cf.rubygems.org/rubygems/rubygems-1.3.7.tgz" PACKAGE=$(echo $URL | sed "s/\.[^\.]*$//; s/^.*\///") cd $(mktemp -d /tmp/install_rubygems.XXXXXXXXXX) && \ wget -c -t10 -T20 -q $URL && \ tar xfz $PACKAGE.tgz && \ cd $PACKAGE && \ sudo ruby setup.rb) 

創建寶石作爲GEM1的替代名稱。8

sudo update-alternatives --install /usr/bin/gem gem /usr/bin/gem1.8 1 

安裝木偶控制板

從puppetlabs包庫

sudo apt-get update sudo apt-get install puppet-dashboard 

安裝木偶的儀表板配置控制板

修改database.yml文件。它可以在/usr/share/puppet-dashboard/config/database.yml找到。

enter image description here

下生產環境的鍵值對,數據庫值「dashboard_production」指定儀表板數據庫名和用戶名值「儀表盤」指定該數據庫的用戶。在下一步中,我們將創建數據庫和用戶。密碼值是MySQL的密碼。

創建和配置MySQL數據庫

創建木偶儀表盤的用戶和數據庫。導航到MySQL命令行

CREATE DATABASE dashboard_production CHARACTER SET utf8; CREATE USER 'dashboard'@'localhost' IDENTIFIED BY 'my_password'; GRANT ALL PRIVILEGES ON dashboard_production.* TO 'dashboard'@'localhost'; 

配置MySQL的最大數據包大小,以允許較大的行中數據庫

set global max_allowed_packet = 33554432; 

另外修改MySQL配置文件/etc/mysql/my.cnf

允許32MB允許偶爾有足夠的備用空間的17MB行

max_allowed_packet = 32M 

要創建儀表盤表,木偶,儀表盤的文件夾

cd /usr/share/puppet-dashboard rake RAILS_ENV=production db:migrate 

測試該儀表盤正在運行以下命令

開始使用儀表盤Ruby內置的WEBrick服務器

cd /usr/share/puppet-dashboard 
sudo ./script/server -e production 

儀表板實例使用「生產」環境在端口3000上啓動。儀表盤的用戶界面可瀏覽:3000

配置木偶

兩個傀儡服務器和客戶端需要配置的儀表板來接收報告。 配置代理節點,通過打開報告提交報告給主數據庫。

puppet.conf(每劑)

[agent] 
report = true 

配置服務器。將http報告處理程序添加到puppet服務器的報告設置,並將reporturl設置爲Dashboard實例的報告/上傳URL

puppet。CONF(上木偶主)

[master] 
reports = store, http 
reporturl = http://<server hostname>:3000/reports/upload 

爲使儀表盤的外部節點分類器(ENC),

puppet.conf(上木偶主)

[master] 
node_terminus = exec 
external_nodes = /usr/bin/env PUPPET_DASHBOARD_URL=http://<server hostname>:3000 /usr/share/puppet-dashboard/bin/external_node 

測試木偶的連接到信息中心

重新啓動木偶大師 運行其中一個木偶代理來測試配置

sudo puppet agent -t 

輸出將是:

enter image description here

這意味着,該報告已經到來。爲了處理它,我們將激活delayed_job工作人員。

開始delayed_job的工人

運行以下命令

cd /usr/share/puppet-dashboard 
sudo env RAILS_ENV=production script/delayed_job -p dashboard -n 1 -m start 

這將啓動delayed_job的工人,並完成掛起任務。

因此,puppet現在安裝在兩個EC2實例上,其中一個是服務器,另一個是客戶端。另外,還安裝了puppet-dashboard以查看客戶端節點的狀態。

相關問題