Puppet 的部署与应用,看这一篇就够了
工作原理
Puppet的目的是让管理员只集中于要管理的目标,而忽略实现的细节。Puppet既可以在单机上使用,也可以c/s使用,在大规模使用puppet的情况下,通常使用c/s结构,在这种结构中puppet客户端只运行puppetclient,puppet服务器只运行puppetmaster。
工作流程
1)客户端puppet调用facter(facter是通过ssl加密收集及检测分析客户端配置信息的一个工具),facter探测出主机的一些变量,如主机名,内存大小,ip地址等。Puppet把这些信息通过ssl连接发送到服务器器端
Puppet工作过程有以下两点值得注意:
1)为了保证安全,client和master之间是基于ssl和证书的,只有经master证书认证的client可以与master通信。
2)Puppet会让系统保持在人们所期望的某种状态并一直维持下去,例如:检测某个文件并保证其一直存在,保证ssh服务始终开启,如果文件被删除了或者ssh服务被关闭了,puppet下次执行时(默认30分钟),会重新创建该文件或者启动ssh服务。
● 安装puppet的实验步骤
● 搭建puppetmaster
● 搭建puppetclient
● 配置测试节点
● 客户端主动拉取
● 服务器推送
搭建 puppetmaster
规划服务器主机名(小规模可以修改/etc/hosts文件,服务器多的时候我们需要搭建dns服务器来实现服务通过主机名进行通信,这里就以/etc/hosts文件来实现)
(puppetmaster)
HOSTNAME=master.itzhushou.cn .
[root@master /]# vim /etc/hosts
(NTP)
server 127.127.1.0
启动ntp服务并开启iptables例外
[root@master /]# chkconfig ntpd on
(puppetmaster)
[root@master /]# hostname
在puppetmaster上面配置时间同步,作为ntp的客户端
[root@master /]# cd /media/
安装ruby(puppet就是基于ruby语言开发的,所以需要安装ruby)
安装完成之后检查版本
安装facter(通过facter工具分析检测客户端传来的信息)
[root@master /]# umount /dev/cdrom
[root@master /]# mount /dev/cdrom /media/ [root@master /]# ls
[root@master /]# tar zxf facter-1.7.1.tar.gz -C /usr/
编译安装:
[root@master /]# cd /usr/puppet-2.7.21/
复制配置文件
[root@master /]# cp conf/redhat/puppet.conf /etc/puppet/
修改文件属性并创建puppet主目录:
[root@master /]# mkdir /etc/puppet/manifets
puppet服务证书请求与签名
关闭防火墙(也可开例外)
在[main]标题下添加一行:配置服务器模块路径
启动puppet主程序
配置防火墙
(puppetclient1)
搭建puppetclient
规划服务器主机名
192.168.1.30 client2.itzhushou.cn
. [root@master /]# reboot
安装ruby
安装facter
[root@master /]# mount /dev/cdrom /media
[root@master /]# cd /media/ [root@master /]# cd /usr/facter-1.7.1/
安装puppet
[root@master /]# cd /usr/puppet-2.7.21/
复制文件并设置执行权限
[root@master /]# chmod +x /etc/init.d/puppetclient
puppet服务证书请求签名
注意:puppetclient2的配置过程与puppetclient1类似,主机名改为client2.itzhushou.cn即可,其他都一样。
注册服务器
上面会一直等待,可以按ctrl+c结束,但是服务器上已经有申请信息了
(puppetmaster)
可以执行puppet cert —list 查看申请注册客户端
将未注册的客户端进行注册Puppet cert sign —all
可以通过目录去查看已经注册的客户端(看到下面的信息说明注册成功了)
[root@master /]# ll /var/lib/puppet/ssl/ca/signed/
应用案例
1、配置一个测试节点
节点信息:/etc/puppet/manifests/nodes
模块信息: /etc/pupppet/modules
实验目标:为了保护linux的ssh端×××破,批量修改客户端的sshd端口,将22号端口改为9922,并实现重启sshd服务的工作。
想完成以上几点,需要明确几点:
● 需确定openssh软件包安装
● 需确定存在ssh的配置文件
● 确定sshd的服务是系统服务
创建ssh模块,模块的目录为ssh,模块下有三个文件分别是:manifests、templates、files。
manifest里面必须包含一个init.pp文件,这是该模块的的初始(入口)文件,导入一个模块的时候需要从init.pp开始执行,可以把所有的代码都写入到这个文件中,也可以分成多个.pp文件,init在去包含其他文件,定义class类名时必须是ssh,这样才能实现调动
files目录是该模块的发布目录,puppet提供了一个文件分割机制,类似rsync的模块。
templates目录包含erb模块文件、这个和file资源的templates属性有关(很少使用)
master端
[root@master /]# rpm -q openssh
创建必要的目录
[root@master /]# mkdir /etc/puppet/manifests/nodes
[root@master /]# mkdir /etc/puppet/modules/ssh/files/ssh
创建模块配置文件install.pp
Vi /etc/puppet/modules/ssh/manifests/install.pp
输入以下信息(首先确定客户端安装了ssh服务)
class ssh::install{ package{ "openssh": ensure => present, }
注意:present是以,结尾,由于配置的是ssh服务,所以模块名为ssh,如果配置http,则模块名为http。
创建模块配置文件config.php
[root@master /]# 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”],
}
}
ensure => present, //确定客户端此文件存在
owner => "root", //文件所属用户 mode => "0600", //文件权限
require => Class["ssh::install"], //调用ssh::install确定 openssh已经安装
notify => Class["ssh::service"], //如果config.pp发生变化通知service.pp } }
[root@master /]# 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”]
}
}
service{ "sshd":
sshd status命令
sshd status命令 enable=>true, //服务是否开机启动
require=>Class["ssh::config"] //确认config.pp调用 } }
[root@master /]# vim /etc/puppet/modules/ssh/manifests/init.pp
class ssh{
include ssh::install,ssh::config,ssh::service
}
建立服务器端ssh统一维护文件
[root@master /]# cp /etc/ssh/sshd_config /etc/puppet/modules/ssh/files/ssh/
[root@master /]# vim /etc/puppet/manifests/nodes/ssh.pp
node ‘client1.itzhushou.cn’ {
include ssh
}
node ‘client2.itzhushou.cn’ {
include ssh
}
[root@master /]# vim /etc/puppet/manifests/site.pp
import “nodes/ssh.pp”
修改服务器端维护的sshd_config配置文件
[root@master /]# vim /etc/puppet/modules/ssh/files/ssh/sshd_config
Port 9922
重新启动puppet
[root@master /]# /etc/init.d/puppetmaster restart
配置客户端主动拉取
在客户端puppetclient1上执行命令: `[root@master /]# puppet agent -t`
[root@master /]# vim /et/ssh/sshd_config
[root@master /]# netstat -anpt | grep ssh
服务器推送同步 1修改puppet主配置文件 在客户端上执行下面命令:
[root@master /]# vim /etc/puppet/puppet.conf
listen= true
[root@master /]# vim /etc/puppet/puppet.conf
listen= true
[root@master /]# vim /etc/puppet/auth.conf
allow *
.
启动puppet客户端
[root@master /]# /etc/init.d/puppetclient start
```
(puppetmaster)
再次把服务器的ssh配置文件端口改为9933(换一个试试)
服务器推送给客户端
[root@master /]# puppet kick client1.itzhushou.cn
在客户端查看端口是否改变
原文发布时间为:2018-11-20
本文作者:李佳良
本文来自云栖社区合作伙伴“高效运维 ”,了解相关信息可以关注“高效运维”。
Puppet 的部署与应用,看这一篇就够了相关推荐
- api网关选型_如何轻松打造百亿流量API网关?看这一篇就够了(下)
如何轻松打造百亿流量API网关?看这一篇就够了(上) 上篇整体描述了网关的背景,涉及职能.分类.定位环节,本篇进入本文的重点,将会具体谈下百亿级流量API网关的演进过程. 准备好瓜子花生小板凳开始积累 ...
- Docker的降维打击是怎么利用天时地利人和的?看这一篇就够了
Docker的降维打击是怎么利用天时地利人和的?看这一篇就够了 容器的诞生 容器技术的奠基 容器生态的奠基 docker的出现 什么是容器 集装箱 容器 容器编排 容器的诞生 容器技术的奠基 2000 ...
- 如何应对大数据分析工程师面试Spark考察,看这一篇就够了
作者丨斌迪.HappyMint 来源丨大数据与人工智能(ID:ai-big-data) [导读]本篇文章为大家带来spark面试指南,文内会有两种题型,问答题和代码题,题目大部分来自于网络上,有小部分 ...
- minio存储类型 归档管理页面_软件定义存储,看这一篇就够了
minio存储类型 归档管理页面_软件定义存储,看这一篇就够了_婷婷与li的博客-CSDN博客 请看链接 文章来源于TaoCloud ,作者刘爱贵 1.SDS科普 SDS(Software Defin ...
- PHP电子合同对接流程,企业如何API对接云合同电子合同系统,看完这篇就够了
自有系统要怎样对接电子签名系统? 电子合同管理在哪个平台操作? 合同签署怎么完成? 看完这篇就够了 多种方案,系统与平台无缝对接 不管是供应链.人力资源.互联网金融还是大型企业,大部分平台都有自己的业 ...
- OpenStack入门科普,看这一篇就够啦
OpenStack入门科普,看这一篇就够啦 科技百分百 2019-07-06 10:06:00 作者 | 小枣君 来源 | 鲜枣课堂 大家好,我是小枣君. 最近几年,OpenStack这个词开始频繁出 ...
- 什么是 DevOps?看这一篇就够了!
文章目录 一.前因 二.记忆 三.他们说-- 3.1.Atlassian 回答"什么是 DevOps?" 3.2.微软回答"什么是 DevOps?" 3.3.A ...
- python装饰器功能是冒泡排序怎么做_传说中Python最难理解的点|看这完篇就够了(装饰器)...
https://mp.weixin.qq.com/s/B6pEZLrayqzJfMtLqiAfpQ 1.什么是装饰器 网上有人是这么评价装饰器的,我觉得写的很有趣,比喻的很形象 每个人都有的内裤主要是 ...
- serviceloader java_【java编程】ServiceLoader使用看这一篇就够了
转载:https://www.jianshu.com/p/7601ba434ff4 想必大家多多少少听过spi,具体的解释我就不多说了.但是它具体是怎么实现的呢?它的原理是什么呢?下面我就围绕这两个问 ...
- docker 删除所有镜像_关于 Docker 镜像的操作,看完这篇就够啦 !(下)| 文末福利...
紧接着上篇<关于 Docker 镜像的操作,看完这篇就够啦 !(上)>,奉上下篇 !!! 镜像作为 Docker 三大核心概念中最重要的一个关键词,它有很多操作,是您想学习容器技术不得不掌 ...
最新文章
- ST17H26之编译链接选项
- C#的async和await
- Spring Boot 实用开发技巧————Eclipse 远程调试
- 重磅开源 | 机器学习圣经《模式识别与机器学习》中文版PDF!
- ROS笔记(13) 记录与回放数据
- ElementUI项目优化上线
- 上周热点回顾(10.8-10.14)
- Flume+Kafka+storm的连接整合
- php过往版本下载,PHPwind微版本 历史版本及升级包下载_20181226
- AccuMark 7.6.2 格柏服装软件
- 网络编程1之send、recv函数详解
- Charles配合手机模拟器抓取APP数据包教程
- 禁止java自动更新_修改注册表彻底关闭Java自动更新
- 免费虚拟化OVM-V1.6发布,新增虚拟机裸设备映射
- 在Apple Watch上了解时间旅行
- BigSur下Safari14.1.1安装油猴插件(Tampermonkey)
- linux使用man守护进程,man手册的使用
- CentOS关闭火狐浏览器Flash过期提示
- linux脚本创建快捷方式,批处理BAT创建快捷方式
- 互联网行业入门必读书籍
热门文章
- 腾讯地图api修改信息窗口样式_DOTA2 地图编辑器指南(二):总览
- vue定义一个全局价格处理函数
- onclick 传参,用转义符进行转义。
- 分享两个JavaScript打乱数组顺序实现随机排序洗牌的方法(应用于音乐视频的随机播放等)
- html5手机端设置date,H5 input[type='date'] 优化 pc端和移动端的使用
- 浏览器中的机器学习:使用预训练模型
- String、StringBuilder类连接字符串操作的时间差异
- shell重启jar包
- 利用Linux系统生成随机密码的10种方法
- VS2013 C#中调用DLL