如何在Amazon EC2实例上安装puppet群集?

时间:2015-04-18 06:02:43

标签: amazon-web-services puppet aws-ec2

我在EC2中使用ubuntu 12.04 AMI创建puppet群集,我在配置时遇到问题。 问题是主设备无法识别从设备。 我需要更多的软件包而不是mysql

/etc/mysql/my.cnf

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

1 个答案:

答案 0 :(得分:3)

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

<强>先决条件

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

<强>程序

Puppet服务器和客户端设置

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

  • 设置Puppet Server 启用Puppet Labs包存储库

  • 下载&#34; puppetlabs-release&#34; Puppet服务器上的操作系统包(此处为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  文件并添加该行     服务器=。  客户端现在可以连接到Puppet master。

enter image description here

启动Puppet代理服务,以便在服务器和客户端之间建立第一次通信。

sudo puppet agent --verbose --no-daemonize --onetime

这将启动与正在侦听Puppet服务器上的端口8140的Puppet主进程的连接。输出将是详细的,并且代理将不会在后台继续作为守护程序运行。此外,它只运行一次,也就是说,在连接关闭后,代理进程将退出。输出如下:

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服务器和客户端上设置了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位置。由于客户端上不存在此类文件,因此代理会采取操作并创建文件。

查看&#39; helloworld.txt&#39;文件

要验证客户端是否存在于Puppet服务器定义的状态,请运行以下命令

sudo vi /home/ubuntu/helloworld.txt

文件内容与服务器上清单定义中的定义相同。

安装Puppet Dashboard

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

以下是设置

的步骤
  1. 安装外部依赖项
  2. 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 )
    

    创建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找到。

    enter image description here

    在生产环境的键值对下,数据库值&cbspboard_production&#39;指定仪表板数据库名称和用户名值&#39;仪表板&#39;指定此数据库的用户。在下一步中,我们将创建数据库和用户。密码值是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实例的报告/上传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与Dashboard的连接

    重启木偶大师 运行其中一个puppet代理来测试配置

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