如何在centos 7上使用主代理安装和配置人偶

在本文中,我们将从Puppet Labs了解如何在CentOS 7上安装和配置开源Puppet代理/主机。Puppet是一种配置管理工具,可以帮助系统管理员自动化服务器基础结构的配置,设置和管理。Puppet代理称为节点,我们将使用Puppet Server软件包而不是乘客或任何其他环境。

我们需要root或超级用户访问要在其中安装Puppet主服务器的服务器。

先决条件

我们需要在p服务器上配置的正确DNS,以便客户端客户端可以与您的基础结构进行通信。防火墙端口在8140从服务器到客户端以及从客户端到服务器打开,以将指令发送到节点/客户端。

准备Puppet主服务器

我们需要安装CentOS 7 x64位以与Puppet Master一起使用,并且主机名应为Puppet,并且硬件要求取决于我们要管理的代理或节点的数量,通常我们需要2个核心CPU和至少1GB的RAM,以及使用服务器的DNS记录设置主机文件

192.168.1.87 puppet.demo.com puppet

安装NTP

当我们将证书颁发机构用于代理节点时,Puppet主服务器必须保持准确的时间,以避免在颁发代理证书时可能出现的问题(如果存在一些时间差异,证书可能会过期),为避免这些问题,我们将安装NTP(网络时间协议) )。

使用YUM安装NTP

下面是命令–

# yum install ntp -y

我们需要更新配置文件中的池区域,以便它将更新池中的正确时间。

# vi /etc/ntp.conf
server 0.us.pool.ntp.org
server 1.us.pool.ntp.org
server 2.us.pool.ntp.org
server 3.us.pool.ntp.org

运行以下命令以更新Puppet Master上的时间

# ntpdate pool.ntp.org

重新启动NTP服务并启用该服务以在启动时启动

# systemctl restart ntpd
# systemctl enable ntpd

安装人偶服务器

现在环境已经准备就绪,我们将安装puppet主服务器,然后从官方存储库安装Puppet服务器,以启用运行以下命令所需的存储库。

# rpm -ivh https://yum.puppetlabs.com/puppetlabs-release-pc1-el-7.noarch.rpm

更新存储库后,使用此命令安装Puppet服务器

# yum install puppetserver

启动Puppet服务器,并使用以下命令\使服务器在引导时启动。

# systmectl start puppetserver
# systemctl enable puppetserver

安装人偶代理

我们还需要在所有Puppet服务器上安装ager软件进行管理。我们需要在所有节点或客户端计算机上安装此代理,以便它们可用于puppet服务器。

使用以下命令启用官方的Puppet Labs官方存储库

# rpm -ivh https://yum.puppetlabs.com/puppetlabs-release-pc1-el-7.noarch.rpm

使用以下命令安装puppet-agent软件包

# yum -y install puppet-agent

现在,我们需要启动通过以下命令安装的Puppet代理:

# /opt/puppetlabs/bin/puppet resource service puppet ensure=running enable=true

首次运行Puppet代理时,它将生成SSL证书,并将签名请求发送到Puppet Master。

Puppet入门

现在我们将学习Puppet Master的基本任务

节点收集事实

'factor'收集有关连接的节点的信息,例如操作系统名称,客户端的主机名,SSH密钥,IP地址等),我们还可以添加不属于默认事实的自定义事实

要列出自动收集的事实,请运行以下命令。

# /opt/puppetlabs/bin/factor

主列表文件

Puppet使用一种特定的语言来告诉系统配置,该配置以扩展名.pp表示为默认配置文件。列表位于以下位置-/etc/puppetlabs/code/environments/production/manifests/site.pp

它们使用默认在30分钟内定期执行的Puppet代理执行,当它检查将自身发送到主目录的事实发送到主目录,并且与该代理相关的所需状态由主列表确定时。

在特定代理节点上执行

我们还可以手动启动对特定代理的检查,然后运行以下命令以手动执行。

# /opt/puppetlabs/bin/puppet agent –test

演示示例列表

# vi /etc/puppetlabs/code/environments/production/manifests/site.pp
file {'/tmp/example-ip': # resource type file and filename
   ensure => present, # make sure it exists
   mode => '0644', # file permissions
   content => "192.168.1.100: ${ipaddress_eth0}.\n", # note the ipaddress_eth0 fact
}

这将显示/ tmp文件夹中的IP地址,列表将确保所有节点在/ tmp文件夹中都有example-ip文件。

在特定节点上执行

我们还可以为列表中的特定节点定义资源,这可以使用列表中的节点来完成。

# vi /etc/puppetlabs/code/environments/production/manifests/site.pp
node 'node1', 'node2' { # applies to node1 and node2 nodes
   file {'/tmp/dns': # resource type file and filename
      ensure => present, # make sure it exists
      mode => '0644',
      content => "Only DNS servers get this file.\n",
   }
}
node default {} # applies to nodes that aren't explicitly defined

上面的示例将确保node1和node2的文件位于/ tmp / dns。

从Puppet Master执行模块

模块对于将分组任务一起运行很有用。Puppet社区中有许多可用模块,或者我们可以编写自己的模块。

如果需要安装puppetlabs-apache模块。

# /opt/puppetlabs/bin/puppet module install puppetlabs-apache

现在编辑site.pp并添加以下内容以在node2上安装apache

node 'host2' {
   class { 'apache': } # use apache module
   apache::vhost { 'demo.com': # define vhost resource
      port => '80',
      docroot => '/var/www/html'
   }
}

这将安装apache软件包并配置一个名为demo.com的虚拟主机以侦听端口80,文档根目录为/ var / www / html

注意:在运行此示例之前,请注意,如果节点中存在任何现有配置,它将删除所有现有的Apache配置。

在配置和设置之后,我们用一些列表介绍了基本的Master / agent安装,我们可以管理客户端的模块是使用Puppet的基础结构,因为Puppet具有更多功能,我们将在后续文章中介绍它们。