簡體   English   中英

如何在Amazon EC2實例上安裝puppet群集?

[英]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以查看客戶端的狀態。

先決條件

  • 使用Ubuntu ami設置了兩個ec2實例。
  • 一個實例命名為puppetserver,另一個實例命名為puppetclient。

程序

Puppet服務器和客戶端設置

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

  • 設置Puppet Server啟用Puppet Labs Package存儲庫

  • 在Puppet服務器上下載OS的“puppetlabs-release”軟件包(此處為Ubuntu 12.04)
  • 通過運行dpkg -i安裝軟件包
  • 運行apt-get update以獲取可用包的新列表。

例如,為了啟用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上運行。

以下是設置步驟

  1. 安裝外部依賴項

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

允許32MB允許偶爾17MB的行,有足夠的空余空間

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服務器和客戶端以接收報告。 配置代理節點以通過打開報告來向主節點提交報告。

puppet.conf(在每個代理上)

[agent]
report = true

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

puppet.conf(在puppet master上)

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

為了啟用儀表板的外部節點分類器(ENC),

puppet.conf(在puppet master上)

[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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM