本文介绍在Ubuntu 18.04系统上安装和配置Puppet master和agent的方法。Puppet是一个用Ruby和C++编写的配置管理工具,可帮助你在数百到数千个系统中自动配置和部署应用程序,该软件属于Apache许可证,Puppet master的工作是控制配置信息,它的一个关键要求是网络时间同步,我们将确保在Puppet主服务器上设置正确的时区以及正常工作的NTP服务,我的实验室环境如下。 Puppet Master: 主机名:puppet-server.computingforgeeks.com IP地址:192.168.1.2 Puppet Agent(用于测试): 主机名:node-01.computingforgeeks.com IP地址:192.168.1.3
一、设置正确的时区 Ubuntu 18.04附带timedatectl命令行工具,可用于在服务器上设置正确的时区,比如: $ sudo timedatectl set-timezone Asia/Shanghai 使用timedatectl命令来确认更改,重要的参数如下: Time zone: Asia/Shanghai System clock synchronized: yes systemd-timesyncd.service active: yes RTC in local TZ: no
二、设置服务器主机名 使用hostnamectl命令设置服务器主机名,比如: $ sudo hostnamectl set-hostname puppet-server.computingforgeeks.com 添加我们稍后将用于/etc/hosts文件的正确主机名和IP地址: # echo "192.168.1.2 puppet-server.computingforgeeks.com puppet-server " >> /etc/hosts # echo "192.168.1.3 node-01.computingforgeeks.com node-01" >> /etc/hosts
三、设置ntp服务 安装ntp包: $ sudo apt-get -y install ntp 如果你想限制哪些系统可以使用你的ntp服务器,请在/etc/ntp.conf中添加如下所示的行: restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap 将192.168.1.0替换为你信任的网络。 重启ntp服务: $ sudo systemctl restart ntp 检查ntp状态,运行ntpq -p命令:
参考:在Linux系统下安装配置Chrony,使其成为NTP客户端替代品。
四、在Ubuntu 18.04上安装Puppet Master 现在已满足所有安装的要求,继续下载Ubuntu 18.04的PuppetLabs存储库并在服务器上安装Puppet master: $ sudo apt-get install wget $ wget https://apt.puppetlabs.com/puppet-release-bionic.deb $ sudo dpkg -i puppet-release-bionic.deb Selecting previously unselected package puppet-release. (Reading database ... 100156 files and directories currently installed.) Preparing to unpack puppet-release-bionic.deb ... Unpacking puppet-release (1.0.0-2bionic) ... Setting up puppet-release (1.0.0-2bionic) ... 更新apt索引并安装puppet master: $ sudo apt-get install puppetmaster 确认已安装的Puppet版本: $ apt policy puppetmaster puppetmaster: Installed: 5.4.0-2ubuntu3 Candidate: 5.4.0-2ubuntu3 Version table: *** 5.4.0-2ubuntu3 500 500 http://mirrors.digitalocean.com/ubuntu bionic/universe amd64 Packages 500 http://mirrors.digitalocean.com/ubuntu bionic/universe i386 Packages 100 /var/lib/dpkg/status 在Ubuntu系统上,应该自动启动服务,运行sudo systemctl status puppet-master.service命令:
五、在Ubuntu 18.04上配置Puppet Master 安装Puppet主服务器后,就可以开始配置了,建议更改Puppet Java进程内存分配基础结构大小,我将为我的Puppet服务器分配1GB的内存,这是通过编辑位于/etc/default/puppet-master上的环境文件来完成的: # vim /etc/default/puppet-master JAVA_ARGS="-Xms1024m -Xmx1024m" 进行更改后重新启动puppet服务器进程: $ sudo systemctl restart puppet-master.service 接下来配置防火墙,如果你的Ubuntu 18.04系统上有防火墙,则需要打开Puppet主服务使用的端口8140,运行以下命令以允许防火墙上的端口: $ sudo ufw allow 8140/tcp 参考:Debian、Ubuntu、Linux Mint系统中的UFW防火墙入门教程。 进行此更改后,你无需重新启动Puppet服务。 再创建测试清单。 为了完成本文内容,我们将在Ubuntu 18.04客户端服务器上创建一个简单的Puppet清单来安装Apache Web服务器,首先为nginx类创建文件夹路径: $ sudo mkdir -p /etc/puppet/modules/nginx/manifests /etc/puppet/modules目录将托管我们所有的模块,然后通过创建文件来创建nginx资源: $ sudo vim /etc/puppet/modules/nginx/manifests/init.pp 添加以下内容: class nginx { package { 'nginx': ensure => installed, } service { 'nginx': ensure => true, enable => true, require => Package['nginx'], } } 接下来,为我们的客户端node-01.computingforgeeks.com创建一个节点文件: $ sudo vim /etc/puppet/manifests/site.pp 具有以下内容: node 'node-01.computingforgeeks.com' { include nginx } 请记住将node-01.computingforgeeks.com替换为你的实际Puppet客户端的主机名。 重新启动puppet master以获取要加载的新更改: $ sudo systemctl restart puppet-master
六、安装Puppet Agent 现在已在主服务器上设置了所有内容,请在客户端计算机上安装puppet agent: $ sudo apt-get install wget $ wget https://apt.puppetlabs.com/puppet-release-bionic.deb $ sudo dpkg -i puppet-release-bionic.deb Selecting previously unselected package puppet-release. (Reading database ... 100156 files and directories currently installed.) Preparing to unpack puppet-release-bionic.deb ... Unpacking puppet-release (1.0.0-2bionic) ... Setting up puppet-release (1.0.0-2bionic) ... 更新apt索引并安装puppet master: $ sudo apt-get install puppet 设置Puppet服务器主机名: $ sudo vim /etc/puppetlabs/puppet/puppet.conf 添加以下行: [main] certname = node-01 server = puppet-server 保存配置文件并启动puppet agent: $ sudo systemctl start puppet-agent $ sudo systemctl enable puppet
七、在Puppet Server上为Puppet Client签名证书 由于这是客户端-服务器体系结构,因此主服务器必须先为每个代理节点批准证书请求,然后才能对其进行配置,检查证书列表使用: $ sudo puppet cert list "node-01" (SHA256) 16:21:EE:6A:52:1C:0C:23:53:FD:1C:0F:82:1D:2C:72:E3:A3:DE:8B 使用命令对其进行签名: $ sudo puppet cert sign node-01 Signing Certificate Request for: "node-01" (SHA256) 16:21:EE:6A:52:1C:0C:23:53:FD:1C:0F:82:1D:2C:72:E3:A3:DE:8B Notice: Signed certificate request for node-01 Notice: Removing file Puppet::SSL::CertificateRequest node-01 at '/var/lib/puppet/ssl/ca/requests/node-01.pem' 要一次签署多个节点的证书请求,请使用: $ sudo puppet cert sign --all Puppet Master现在应该能够与代理节点通信并控制它,通过在代理上运行以下命令来确认: $ sudo puppet agent --test
相关主题 |