我在 EC2 中使用 ubuntu 12.04 AMI 来创建 puppet 集群,我在配置它时遇到了问题。问题是主人无法识别奴隶。我是否需要除 mysql 以外的更多软件包
/etc/mysql/my.cnf
我需要对上述文件进行哪些更改?
我在 EC2 中使用 ubuntu 12.04 AMI 来创建 puppet 集群,我在配置它时遇到了问题。问题是主人无法识别奴隶。我是否需要除 mysql 以外的更多软件包
/etc/mysql/my.cnf
我需要对上述文件进行哪些更改?
Puppet 是一个配置管理工具,它允许自动定义和维护多个开发人员工作站的一致状态的过程。它是一个描述性的、集中的和基于客户端-服务器的系统。中央服务器已配置,客户端与它同步,以确保所有系统都以所述状态结束。例如,使用 Puppet 可以轻松完成确保项目中所有开发人员系统上相同开发环境的任务。这是在具有 Ubuntu OS 的 Amazon EC2 实例上设置 Puppet 服务器和一个 Puppet 客户端的快速过程,并在服务器上安装 Puppet Dashboard 以查看客户端的状态。
先决条件
程序
木偶服务器和客户端设置
配置主机文件 查看 puppetserver 和 puppetclient 上的 /etc/hostname 文件。这些分别是 Puppet 服务器和客户端主机名 在两个系统上编辑 /etc/hosts 文件。添加服务器和客户端 IP 以及相应的主机名。
设置 Puppet 服务器 启用 Puppet Labs 软件包存储库
例如,要启用 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 上运行。
以下是设置步骤
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
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 服务器和客户端以接收报告。将代理节点配置为通过打开报告向主节点提交报告。
[agent]
report = true
配置服务器。将 http 报告处理程序添加到 puppet 服务器的报告设置并将 reporturl 设置为仪表板实例的报告/上传 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 工作人员。
启动 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 以查看客户端节点的状态。