通过配置ssh深刻理解puppet的语法及工作机制

需求分析

1)、要求openssh-server处于被安装状态
2)、要求在配置文件/etc/ssh/sshd_config正确的情况下,sshd服务处于运行状态
2)、要求/etc/ssh/sshd_config文件属性不被串改(权限、属主、属组等)
3)、要求/etc/ssh/sshd_config文件被修改或者删除后会被自动修复
4)、要求通过puppetserver端修改/etc/ssh/sshd_config之后,sshd服务能够自动重启。

定义全局配置信息

定义全局配置文件site.pp
[root@puppetserver ~]# vim /etc/puppet/manifests/site.pp 
import 'nodes/*'
$puppetserver = 'puppetserver.rsyslog.org'

创建并配置nodes.pp节点
[root@puppetserver ~]# mkdir /etc/puppet/manifests/nodes –p
[root@puppetserver ~]# vim /etc/puppet/manifests/nodes/nodes.pp
> node /^agent\d+\.rsyslog.org$/{
>        include ssh
> }
> endf

设置模块搜索路径
vim /etc/puppet/puppet.conf 
[main]
modulepath = /etc/puppet/modules:/var/lib/puppet/modules:/usr/local/lib/puppet/modules

创建模块目录结构
[root@puppetserver ~]# mkdir -vp 
/etc/puppet/modules/ssh/{files,templates,manifests}

创建配置文件

创建配置文件(/etc/puppet/modules/ssh/manifests目录下)

1)、创建site.pp文件
class ssh{
        include ssh::params,ssh::config,ssh::service,ssh::install
}

2)、创建install.pp文件
class ssh::install{
        package { $ssh::params::ssh_package_name:
                ensure => installed,
        }
}

3)、创建config.pp文件
class ssh::config{
        file { $ssh::params::ssh_service_config:
                ensure => present,
                owner => 'root',
                group => 'root',
                mode => 0440,
                source => "puppet:///modules/ssh/etc/ssh/sshd_config",
                require => Class["ssh::install"],
                notify => Class["ssh::service"],
        }
}

4)、创建service.pp文件
class ssh::service{
        service { $ssh::params::ssh_service_name:
                ensure => running,
                hasstatus => true,
                hasrestart => true,
                enable => true,
                require => Class["ssh::config"],
        }
}

5)、创建params.pp文件
class ssh::params {
        case $::operatingsystem {
                Slaris: {
                        $ssh_package_name = 'openssh'
                        $ssh_service_config = '/etc/ssh/sshd_config'
                        $ssh_service_name = 'sshd'
                }
                /^(Ubuntu|Debian)$/: {
                        $ssh_package_name = 'openssh-server'
                        $ssh_service_config = '/etc/ssh/sshd_config'
                        $ssh_service_name = 'sshd'
                }
                /^(RedHat|CentOS|Fedora)$/: {
                        $ssh_package_name = 'openssh-server'
                        $ssh_service_config = '/etc/ssh/sshd_config'
                        $ssh_service_name = 'sshd'
                }
                default: {
                        $ssh_package_name = 'openssh-server'
                        $ssh_service_config = '/etc/ssh/sshd_config'
                        $ssh_service_name = 'sshd'
                }
        }

}

创建测试文件
[root@puppetserver manifests]# mkdir /etc/puppet/modules/ssh/files/etc/ssh/ -p [root@puppetserver manifests]# scp agent1.rsyslog.org:/etc/ssh/sshd_config /etc/puppet/modules/ssh/files/etc/ssh/ 
[root@puppetserver ~]# service puppetmaster reload

测试(puppet kick的方式)

Puppet server端开启调试模式测试
[root@puppetserver ~]# puppet master --no-daemonize --verbose

Puppet agent端开启调试模式测试
[root@puppetserver manifests]# puppetrun -p 10 --host agent1.rsyslog.org
Triggering agent1.rsyslog.org
Getting status
status is success
agent2.rsyslog.org finished with exit code 0
Finished

本文转自凌激冰51CTO博客,原文链接:http://blog.51cto.com/dreamfire/1257719,如需转载请自行联系原作者

通过配置ssh深刻理解puppet的语法及工作机制相关推荐

  1. 深入理解 ngrx effect 背后的工作机制

    博客地址:https://indepth.dev/posts/1206/understanding-the-magic-behind-ngrx-effects an action is a const ...

  2. 理解IP路由器原理及工作机制

    [出处]http://network.chinabyte.com/260/12530260.shtml 一个路由器其实就是一个超小型的电脑,而且操作系统大多为Linux,但是在做这些操作的时候你可能并 ...

  3. 深刻理解HDFS工作机制

    深入理解一个技术的工作机制是灵活运用和快速解决问题的根本方法,也是唯一途径.对于HDFS来说除了要明白它的应用场景和用法以及通用分布式架构之外更重要的是理解关键步骤的原理和实现细节.在看这篇博文之前需 ...

  4. 半小时深刻理解React

    声明:本文来自腾讯增值产品部官方公众号小时光茶社,为CSDN原创投稿,未经许可,禁止任何形式的转载. 作者:左明,企鹅电竞前端团队leader,腾讯高级工程师.从事web开发超过8年,主导过微云web ...

  5. 华为配置SSH登陆详细步骤

    理解下SSH登录的过程: 1.建立目的端口为22的TCP连接 2.协商SSH版本 3.协商密钥和算法 4.会话建立 下面为server端的详细配置步骤: 1.创建本地RSA密钥对 rsa local- ...

  6. F#学习之路(2) 深刻理解函数(上)

    函数在函数式编程语言中是一等公民,是函数式语言中最重要的基本组成元素,也是其名称的由来. F# 中的函数之如C#中的类,是组织程序结构的最基本单元.是命令式编程语言中函数或OO编程语言中方法的超集.超 ...

  7. sourcetree如何配置ssh密钥 - 教程篇

    百度教程 · 参考: 点击查看:sourcetree如何配置ssh密钥 注意点: 一.先理解是怎么回事,怎么弄! 进入SSH的设置页面,找到(如下图所示)链接: 之后,看到网页内容(有道翻译)如下: ...

  8. 关于Linux中批量配置SSH免密的一些笔记

    写在前面 今天和小伙伴们分享批量配置SSH免密的一些笔记 传统的运维场景可以通过Ansible 等运维工具处理 在安装使用一些运维工具,比如Ansible,或则一些pass组件,需要配置ssh免密,s ...

  9. 《从0到1-全面深刻理解MySQL系列》- 最详细的MySQL安装流程(Window版)

    个人主页: IT学习日记 版权: 本文由[IT学习日记]原创.在CSDN首发 如果文章对你有帮助.欢迎关注.点赞.收藏(一键三连).有任何问题欢迎私信,看到会及时回复! 文章大纲 下载前需要了解的一些 ...

最新文章

  1. c++引用的自我见解
  2. JS输入框统计文字数量
  3. Python爬取B站弹幕方法介绍
  4. 算法,求1亿个数的中位数
  5. Spring MVC 中的基于注解的 Controller
  6. JAVA入门级教学之(break跳出)
  7. [flask 优化] 由flask-bootstrap,flask-moment引起的访问速度慢的原因及解决办法
  8. 带你认识MindSpore量子机器学习库MindQuantum
  9. 对于局部变量_LabVIEW小白入门——局部变量
  10. SceneCAD: Predicting Object Alignmentsand Layouts in RGB-D Scans
  11. 依时利考勤机说明书_指纹考勤机如何安装及使用说明|依时利
  12. 打码兔官网 验证码识别 远程答题服务 代答平台 验证码识别软件下载
  13. 服务器CRT显示不全,CRT显示器显示画面不正常常见原因揭密
  14. php输出次方,PHP 计算2的N次方代码
  15. pytorch实现bert_精细调整bert和roberta以在pytorch中实现高精度文本分类
  16. VO、DTO、BO、QO、DO 如何使用,在那一层使用,一张图告诉你;别再纠结命名规则啦,我来告诉你
  17. 数据安全管理软件-企业如何保护数据安全?
  18. java星座测试需求分析_如何进行软件测试需求分析
  19. Java中文生僻字排序
  20. Java项目:CRM客户关系管理系统(Spring+SpringMVC+MyBatis + maven)

热门文章

  1. my python FAQ
  2. 机器人学习--Mobile robotics 国外大牛及实验室
  3. 数学--线性代数--奇异值分解(SVD)
  4. 计算机视觉与深度学习 | 使用HOG特征进行数字分类
  5. 在python IDLE里执行py文件
  6. java poi 更新excel_在Java Apache POI中更新现有的Excel文件
  7. Python实现 logistic 回归算法
  8. 开源python-文档撰写
  9. 上海女博士“择偶条件”惹争议,相亲像是在许愿,网友:别做梦了 !
  10. 【NLP】预训练时代下的文本生成|模型技巧