如何在 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 是一种配置管理gement 工具,它允许自动化定义和维护多个开发人员工作站的一致状态的过程。它是一个描述性的、集中式的、基于客户端-服务器的系统。中央服务器已配置,客户端与其同步,以确保所有系统都以所描述的状态结束。例如,使用 Puppet 可以轻松完成确保项目中所有开发人员系统具有相同开发环境的任务。
这是一个快速程序,用于在具有 Ubuntu OS 的 Amazon EC2 实例上设置 Puppet 服务器和一个 Puppet 客户端,并在服务器上安装 Puppet Dashboard 以查看客户端的状态。
先决条件
- 两个 ec2 实例设置 Ubuntu ami.
- 一个名为 puppetserver 的实例,另一个名为 puppetclient。
程序
Puppet 服务器和客户端设置
配置主机文件查看 puppetserver 和 puppetclient 上的 /etc/hostname 文件。这些分别是 Puppet 服务器和客户端主机名
在两个系统上编辑 /etc/hosts 文件。添加服务器和客户端 IP 以及相应的主机名。
正在设置 Puppet 服务器
启用 Puppet Labs 包存储库
- 在 Puppet 服务器
上下载 OS(这里是 Ubuntu 12.04)的 "puppetlabs-release" 包
- 通过 运行ning 安装包
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
安装木偶
安装人偶大师
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
文件并添加行
服务器=。
客户端现在可以连接到 Puppet master。
启动 Puppet 代理服务以建立服务器和客户端之间的首次通信。
sudo puppet agent --verbose --no-daemonize --onetime
这将启动与 Puppet 主进程的连接,该进程正在侦听 Puppet 服务器上的端口 8140。输出将是冗长的,并且代理将不会作为守护进程在后台继续 运行ning。还有,它只会运行一次,即关闭连接后,代理进程就会退出。输出如下:
客户端已通过发送 SSL 证书请求让服务器知道自己。服务器需要对客户端进行认证。
查看服务器上尚未签署的证书列表
sudo puppet cert --list
这列出了以下内容
签署客户端节点的 SSL 证书
sudo puppet cert --sign <puppet client name>
客户端现在可以与服务器建立完全连接并轮询 Puppet master 以获取任何配置更新。
定义配置
我们已经在 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 客户端必须有一个 helloworld.txt 文件
在 /home/ubuntu/ 文件夹中有内容,这是测试内容。
在客户端获取更改
在 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 仪表板 运行s 在 Puppet 服务器上的端口 3000 上。
设置步骤如下
- 正在安装外部依赖项
Dashboard 是 Ruby on Rails 网络应用程序,因此需要安装某些软件
Ruby宝石
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
安装Ruby宝石包系统
( 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 上启动。仪表板的 UI 可以在 :3000
查看
配置人偶
puppet 服务器和客户端都需要配置为仪表板接收报告。
将代理节点配置为通过打开报告向主节点提交报告。
puppet.conf(在每个代理上)
[agent]
report = true
配置服务器。将 http 报告处理程序添加到 puppet 服务器的报告设置并将 reporturl 设置为 Dashboard 实例的 reports/upload 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
正在测试 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实例上,其中一个是server,一个是client。此外,还安装了 puppet-dashboard 以查看客户端节点的状态。
我在 EC2 中使用 ubuntu 12.04 AMI 来创建 puppet 集群,但我在配置它时遇到了问题。 问题是主人无法识别奴隶。 我需要 mysql
以外的更多包裹吗/etc/mysql/my.cnf
我需要对上述文件进行哪些更改?
Puppet 是一种配置管理gement 工具,它允许自动化定义和维护多个开发人员工作站的一致状态的过程。它是一个描述性的、集中式的、基于客户端-服务器的系统。中央服务器已配置,客户端与其同步,以确保所有系统都以所描述的状态结束。例如,使用 Puppet 可以轻松完成确保项目中所有开发人员系统具有相同开发环境的任务。 这是一个快速程序,用于在具有 Ubuntu OS 的 Amazon EC2 实例上设置 Puppet 服务器和一个 Puppet 客户端,并在服务器上安装 Puppet Dashboard 以查看客户端的状态。
先决条件
- 两个 ec2 实例设置 Ubuntu ami.
- 一个名为 puppetserver 的实例,另一个名为 puppetclient。
程序
Puppet 服务器和客户端设置
配置主机文件查看 puppetserver 和 puppetclient 上的 /etc/hostname 文件。这些分别是 Puppet 服务器和客户端主机名 在两个系统上编辑 /etc/hosts 文件。添加服务器和客户端 IP 以及相应的主机名。
正在设置 Puppet 服务器 启用 Puppet Labs 包存储库
- 在 Puppet 服务器 上下载 OS(这里是 Ubuntu 12.04)的 "puppetlabs-release" 包
- 通过 运行ning 安装包 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
安装木偶
安装人偶大师
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
文件并添加行
服务器=。
客户端现在可以连接到 Puppet master。
启动 Puppet 代理服务以建立服务器和客户端之间的首次通信。
sudo puppet agent --verbose --no-daemonize --onetime
这将启动与 Puppet 主进程的连接,该进程正在侦听 Puppet 服务器上的端口 8140。输出将是冗长的,并且代理将不会作为守护进程在后台继续 运行ning。还有,它只会运行一次,即关闭连接后,代理进程就会退出。输出如下:
客户端已通过发送 SSL 证书请求让服务器知道自己。服务器需要对客户端进行认证。 查看服务器上尚未签署的证书列表
sudo puppet cert --list
这列出了以下内容
签署客户端节点的 SSL 证书
sudo puppet cert --sign <puppet client name>
客户端现在可以与服务器建立完全连接并轮询 Puppet master 以获取任何配置更新。
定义配置
我们已经在 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 客户端必须有一个 helloworld.txt 文件 在 /home/ubuntu/ 文件夹中有内容,这是测试内容。
在客户端获取更改
在 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 仪表板 运行s 在 Puppet 服务器上的端口 3000 上。
设置步骤如下
- 正在安装外部依赖项
Dashboard 是 Ruby on Rails 网络应用程序,因此需要安装某些软件 Ruby宝石 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
安装Ruby宝石包系统
( 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 上启动。仪表板的 UI 可以在 :3000
查看配置人偶
puppet 服务器和客户端都需要配置为仪表板接收报告。 将代理节点配置为通过打开报告向主节点提交报告。
puppet.conf(在每个代理上)
[agent]
report = true
配置服务器。将 http 报告处理程序添加到 puppet 服务器的报告设置并将 reporturl 设置为 Dashboard 实例的 reports/upload 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
正在测试 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实例上,其中一个是server,一个是client。此外,还安装了 puppet-dashboard 以查看客户端节点的状态。