Puppet部署应用
  r1HxizPVIczm 2023年11月13日 30 0

Puppet部署应用简介:

puppet是一种Linux、Unix、windows平台的集中配置管理系统,使用自有的puppet描述语言,可管理配置文件、用户、cron任务、软件包、系统服务等。puppet把这些系统实体称之为资源,puppet的设计目标是简化对这些资源的管理以及妥善处理资源间的依赖关系。


Puppet工作方式:


puppet既可以在单机上使用,也可以以C/S结构使用.


在大规模使用puppet的情况下,通常使用C/S结构;在这种结构中puppet客户端是只运行puppet的服务器,puppet服务器端是只运行puppetmaster的服务器.


全部主机:

部署环境:

wget https://yum.puppetlabs.com/el/7/products/x86_64/puppetlabs-release-7-12.noarch.rpm
rpm -ivh puppetlabs-release-7-12.noarch.rpm
cd /etc/yum.repos.d
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

cat << EOF >> /etc/hosts
192.168.1.10 master.puppet.com
192.168.1.11 client01.puppet.com
192.168.1.12 client02.puppet.com
EOF


master:

安装并启动 Puppet 服务端
hostnamectl set-hostname master.puppet.com
bash
yum install -y puppet-server
systemctl start puppetmaster
systemctl enable puppetmaster


clien1和clien2:

安装 Puppet Client

hostnamectl set-hostname client01.puppet.com
hostnamectl set-hostname client02.puppet.com
bash
yum install -y puppet

修改客户端配置文件

在 /etc/puppet/puppet.conf 文 件 中 的 [main] 标 题 下 添 加 “server =

master.puppet.com”配置字段用于设置 Puppet Master 的域名

vim /etc/puppet/puppet.conf
#添加以下内容:
server = master.puppet.com

客户端申请注册

等待一会儿,可以按 Ctrl+C 结束,从服务器端查看到申请信息

puppet agent --server=master.puppet.com --no-daemonize --verbose


master:

Master 端查看申请注册的客户端

puppet cert --list

在 Master 上,将所有申请未注册的客户端进行注册

puppet cert sign --all

注册成功后,可以通过目录去查看已经注册的客户端

ll /var/lib/puppet/ssl/ca/signed/

Master 上创建需要的目录

cd /etc/puppet/
mkdir -p modules/ssh/{manifests,templates,files}
mkdir manifests/nodes
mkdir modules/ssh/files/ssh
chown -R puppet modules/

查看/etc/puppet/modules/ssh 目录下的结构

ll modules/ssh

创建模块配置文件 install.pp

vim /etc/puppet/modules/ssh/manifests/install.pp
#添加以下内容:
class ssh::install{
package{ "openssh":
    ensure => present,
}
}

创建模块配置文件 config.pp

vim /etc/puppet/modules/ssh/manifests/config.pp
#添加以下内容:
class ssh::config{
file { "/etc/ssh/sshd_config":
ensure => present,
owner =>"root",
group =>"root",
mode =>"0600",
source =>"puppet://$puppetserver/modules/ssh/ssh/sshd_config",
require => Class["ssh::install"],
notify => Class["ssh::service"],
}
}

创建模块配置文件 service.pp

vim /etc/puppet/modules/ssh/manifests/service.pp
#添加以下内容:
class ssh::service {
service {"sshd":
ensure=>running,
hasstatus=>true, 
hasrestart=>true, 
enable=>true,
require=>Class["ssh::config"]
}
}

创建模块主配置文件 init.pp

vim /etc/puppet/modules/ssh/manifests/init.pp
#添加以下内容:
class ssh{
include ssh::install,ssh::config,ssh::service
}

此时,/etc/puppet/modules/ssh/manifests 目录下有四个文件

ll /etc/puppet/modules/ssh/manifests/

建立服务器端 ssh 统一维护文件

cp /etc/ssh/sshd_config /etc/puppet/modules/ssh/files/ssh/
chown -R puppet /etc/puppet/modules/ssh/files/ssh/

创建测试节点配置文件

vim /etc/puppet/manifests/nodes/ssh.pp
#添加以下内容:
node 'client01.puppet.com'{
include ssh
}
node 'client02.puppet.com'{
include ssh
}

将测试节点载入 Puppet,即修改 site.pp

vim /etc/puppet/manifests/site.pp
#添加以下内容:
import "nodes/ssh.pp"

修改服务端维护的 sshd_config 配置文件

vim /etc/puppet/modules/ssh/files/ssh/sshd_config
#修改Port取消注释并改为9922
Port 9922
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

重新启动 Puppet Master 服务

systemctl restart puppetmaster

clien1和clien2:

客户端主动拉取

在其中一台 client01.puppet.com 客户端上,执行以下操作从服务器端主动拉取

配置

puppet agent -t
cat /etc/ssh/sshd_config | grep Port

查看服务器 SSH 服务是否重启,端口是否生效

netstat -tunlp | grep ssh

服务端主动推送

当大规模部署时不可能在每台客户端都采用拉取动作,而此时用服务器推送模式

反而更合理。在客户端 client02.puppet.com 上做修改

vim /etc/puppet/puppet.conf
#末尾添加,使 Puppet 监听 8139 端口:
listen = true

修改验证配置文件 auth.conf 定义一些验证信息及访问权限

vim /etc/puppet/auth.conf
#末尾添加,允许任何服务端推送
allow *

启动 Puppet Agent 客户端

systemctl start puppetagent

修改客户端 client02.puppet.com 的/etc/ssh/sshd_config 文件,将 Port 9922

还原成最初始状态

vim /etc/ssh/sshd_config
#将Port9922改为22
Port 22

然后重启 sshd 服务

systemctl restart sshd

查看还原后的/etc/ssh/sshd_config 的内容如下

[root@client01 ~]# cat /etc/ssh/sshd_config | grep Port
#Port 22
#GatewayPorts no
[root@client01 ~]# netstat -tunlp| grep ssh
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 3161/sshd
tcp6 0 0 :::22 :::* LISTEN 3161/sshd


master:

向 client02.puppet.com 节点推送配置

[root@master ~]# puppet kick client02.puppet.com
Triggering client02.puppet.com
Getting status
status is success
client02.puppet.com finished with exit code 0
Finished


clien1和clien2:

校验结果

此时,在clien1和clien2两台主机上可以查看到 SSH 端口已经被更改为 9922

cat /etc/ssh/sshd_config | grep Port
netstat -tunlp | grep sshd





【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月13日 0

暂无评论

推荐阅读
  r1HxizPVIczm   2023年11月13日   31   0   0 puppet
r1HxizPVIczm