[英]How can i install puppet cluster on Amazon EC2 instances?
我在EC2中使用ubuntu 12.04 AMI來創建puppet群集,並且在配置時遇到問題。 問題是主設備無法識別從設備。 我需要更多的軟件包而不是mysql
/etc/mysql/my.cnf
我需要在上面的文件中進行哪些更改?
Puppet是一種配置管理工具,允許自動化定義和維護多個開發人員工作站的一致狀態的過程。 它是一個描述性,集中式和基於客戶端服務器的系統。 中央服務器已配置,客戶端自身與其同步,以確保所有系統都以所述狀態結束。 例如,使用Puppet可以輕松完成在項目中的所有開發人員系統上確保相同開發環境的任務。 這是在具有Ubuntu OS的Amazon EC2實例上設置Puppet服務器和一個Puppet客戶端的快速過程,並且還在服務器上安裝Puppet Dashboard以查看客戶端的狀態。
先決條件
程序
Puppet服務器和客戶端設置
配置主機文件查看puppetserver和puppetclient上的/ etc / hostname文件。 這些是兩個系統上的Puppet服務器和客戶端主機名分別編輯/ etc / hosts文件。 添加服務器和客戶端IP以及相應的主機名。
設置Puppet Server啟用Puppet Labs Package存儲庫
例如,為了啟用Ubuntu 12.04,Precise Pangolin的存儲庫:
wget https://apt.puppetlabs.com/puppetlabs-release-precise.deb
sudo dpkg -i puppetlabs-release-precise.deb
sudo apt-get updateInstall Puppet
安裝Puppet
安裝puppetmaster
sudo apt-get update sudo apt-get install puppetmaster
設置Puppet客戶端
在puppet客戶端上安裝Puppet
sudo apt-get update sudo apt-get install puppet
在客戶端上指定Puppet服務器域名。 為此,請修改
/etc/puppet/puppet.conf文件並添加行server =。 客戶端現在可以連接到Puppet主服務器。
啟動Puppet代理服務以建立服務器和客戶端之間的第一次通信。
sudo puppet agent --verbose --no-daemonize --onetime
這將啟動與正在偵聽Puppet服務器上的端口8140的Puppet主進程的連接。 輸出將是詳細的,並且代理將不會在后台繼續作為守護程序運行。 此外,它只運行一次,也就是說,在連接關閉后,代理進程將退出。 輸出如下:
客戶端通過發送SSL證書請求使服務器知道。 服務器需要驗證客戶端。 查看服務器上尚未簽名的證書列表
sudo puppet cert --list
這列出了以下內容
簽署客戶端節點的SSL證書
sudo puppet cert --sign <puppet client name>
客戶端現在可以建立與服務器的完全連接,並輪詢Puppet主服務器以進行任何配置更新。
定義配置
我們在Puppet服務器和客戶端都設置了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 } }
這個清單定義了puppet客戶端必須在/ home / ubuntu /文件夾中有一個帶有內容的helloworld.txt文件,這是測試內容。
在客戶端上進行更改
在puppet客戶端上,運行以下命令。
sudo puppet agent -t
puppet客戶端拉取puppet服務器上site.pp文件中定義的清單。 它了解到一個名為helloworld.txt的文件具有已定義的規范,預計將存在於/ home / ubuntu位置。 由於客戶端上不存在此類文件,因此代理會采取操作並創建該文件。
查看'helloworld.txt'文件
要驗證客戶端是否存在於Puppet服務器定義的狀態,請運行以下命令
sudo vi /home/ubuntu/helloworld.txt
文件內容與服務器上清單定義中定義的內容相同。
安裝Puppet Dashboard
概述Puppet Dashboard是一個與Puppet連接的GUI。 它可用於查看和報告所有客戶端節點的狀態。 Puppet儀表板在puppet服務器上的端口3000上運行。
以下是設置步驟
Dashboard是一個Ruby on Rails Web應用程序,因此需要安裝某些軟件RubyGems Rake版本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 )
創建gem作為gem1.8的替代名稱
sudo update-alternatives --install /usr/bin/gem gem /usr/bin/gem1.8 1
安裝Puppet Dashboard
從puppetlabs包存儲庫安裝puppet-dashboard
sudo apt-get update sudo apt-get install puppet-dashboard
配置儀表板
修改database.yml文件。 它可以在/usr/share/puppet-dashboard/config/database.yml找到。
在生產環境的鍵值對下,數據庫值“dashboard_production”指定儀表板數據庫名稱,而用戶名值“dashboard”指定此數據庫的用戶。 在下一步中,我們將創建數據庫和用戶。 密碼值是MySQL的密碼。
創建和配置MySQL數據庫
為puppet-dashboard創建用戶和數據庫。 導航到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
max_allowed_packet = 32M
要創建儀表板表,請在puppet-dashboard文件夾中運行以下命令
cd /usr/share/puppet-dashboard rake RAILS_ENV=production db:migrate
測試Dashboard是否正常工作
使用Ruby的內置WEBrick服務器啟動儀表板
cd /usr/share/puppet-dashboard
sudo ./script/server -e production
儀表板實例使用“生產”環境在端口3000上啟動。 儀表板的UI可在以下位置查看:3000
配置木偶
需要為儀表板配置puppet服務器和客戶端以接收報告。 配置代理節點以通過打開報告來向主節點提交報告。
[agent]
report = true
配置服務器。 將http報告處理程序添加到puppet服務器的報告設置,並將reporturl設置為Dashboard實例的報告/上傳URL
[master]
reports = store, http
reporturl = http://<server hostname>:3000/reports/upload
為了啟用儀表板的外部節點分類器(ENC),
[master]
node_terminus = exec
external_nodes = /usr/bin/env PUPPET_DASHBOARD_URL=http://<server hostname>:3000 /usr/share/puppet-dashboard/bin/external_node
測試Puppet與Dashboard的連接
重新啟動puppet master運行其中一個puppet代理來測試配置
sudo puppet agent -t
輸出將是:
這意味着報告已經到了。 為了處理它,我們將激活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以查看客戶端節點的狀態。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.