1

我在 EC2 中使用 ubuntu 12.04 AMI 来创建 puppet 集群,我在配置它时遇到了问题。问题是主人无法识别奴隶。我是否需要除 mysql 以外的更多软件包

/etc/mysql/my.cnf

我需要对上述文件进行哪些更改?

4

1 回答 1

3

Puppet 是一个配置管理工具,它允许自动定义和维护多个开发人员工作站的一致状态的过程。它是一个描述性的、集中的和基于客户端-服务器的系统。中央服务器已配置,客户端与它同步,以确保所有系统都以所述状态结束。例如,使用 Puppet 可以轻松完成确保项目中所有开发人员系统上相同开发环境的任务。这是在具有 Ubuntu OS 的 Amazon EC2 实例上设置 Puppet 服务器和一个 Puppet 客户端的快速过程,并在服务器上安装 Puppet Dashboard 以查看客户端的状态。

先决条件

  • 使用 Ubuntu ami 设置的两个 ec2 实例。
  • 一个实例命名为 puppetserver,另一个实例命名为 puppetclient。

程序

木偶服务器和客户端设置

  • 配置主机文件 查看 puppetserver 和 puppetclient 上的 /etc/hostname 文件。这些分别是 Puppet 服务器和客户端主机名 在两个系统上编辑 /etc/hosts 文件。添加服务器和客户端 IP 以及相应的主机名。

  • 设置 Puppet 服务器 启用 Puppet Labs 软件包存储库

  • 在 Puppet 服务器上下载操作系统(此处为 Ubuntu 12.04)的“puppetlabs-release”包
  • 通过运行 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

安装木偶

安装 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 Master。

在此处输入图像描述

启动 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 Master 以获取任何配置更新。

定义配置

我们在 Puppet 服务器和客户端上都设置了 puppet,并且还建立了两台机器之间的通信。下一步是使用 puppet manifest 定义目标系统的配置。这些清单在 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 仪表板

概述 Puppet Dashboard 是一个与 Puppet 交互的 GUI。它可用于查看和报告所有客户端节点的状态。Puppet 仪表板在 puppet 服务器上的端口 3000 上运行。

以下是设置步骤

  1. 安装外部依赖项

Dashboard 是 Ruby on Rails 网络应用程序,因此需要安装某些软件 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 仪表板

从 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

测试仪表板是否正常工作

使用 Ruby 的内置 WEBrick 服务器启动仪表板

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

仪表板实例使用“生产”环境在端口 3000 上启动。Dashboard 的 UI 可以在 :3000 查看

配置人偶

需要为仪表板配置 puppet 服务器和客户端以接收报告。将代理节点配置为通过打开报告向主节点提交报告。

puppet.conf(在每个代理上)

[agent]
report = true

配置服务器。将 http 报告处理程序添加到 puppet 服务器的报告设置并将 reporturl 设置为仪表板实例的报告/上传 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 工作人员。

启动 delay_job 工作人员

运行以下命令

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

这将启动 delay_job 工作人员,并完成挂起的任务。

因此,puppet 现在安装在两个 EC2 实例上,其中一个是服务器,另一个是客户端。此外,安装了 puppet-dashboard 以查看客户端节点的状态。

于 2015-04-18T07:56:55.043 回答