2015-04-18 118 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以查看客户端节点的状态。

相关问题