Puppet常用能源配置精解,通过布置SSH深远理解P

作者: 计算机网络  发布:2019-11-08

说明:关于安装的方法请看 自动化部署工具Puppet安装配置 http://www.linuxidc.com/Linux/2012-09/71472.htm 。

需求分析

一、配置puppet服务端管理sudo

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服务能够自动重启。

1、主资源配置文件:/etc/puppet/mainfests/site.pp
    可以设置包含其他资源配置文件例如:
 vim site.pp
 import 'nodes/*'
    加载在/etc/puppet/mainfests/nodes目录中的所有以.pp结尾的文件

定义全局配置信息

2、资源配置文件中可以读取模块:
 vim nodes/node1.pp
 node 'node1.a.com' //指定在哪个节点生效
 { include sudo } //读取sudo模块

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

3、定义模块:
   1> 创建模块目录: mkdir /etc/puppet/modules
   2> 在模块目录中创建sudo模块: mkdir /etc/puppet/modules/sudo
   3> 在sudo模块中创建需要的基本目录:mkdir /etc/puppet/modules/sudo/{files,manifests,templates}
   4> 在sudo模块的manifests目录中必须创建模块的具体资源定义文件:vim /etc/puppet/modules/sudo/manifests/init.pp
    ----------------------init.pp文件内容开始-------------------------
class sudo {  //定义类名字为sudo
        package { sudo: ensure => present } //确保sudo软件包安装,如未安装则通过yum自动安装
        file { "/etc/sudoers":    //定义文件资源/etc/sudoers
                owner => "root",    //指定文件属主为root   
                group => "root",    //指定文件属组为root
                mode => 0440,    //指定文件权限为0440
                source => "puppet:///modules/sudo/etc/sudoers",    //定义配置文件sudoers从puppet服务器读取,这里的意思是从:/etc/puppet/modules/sudo/files/etc/sudoers 读取,模块目录files为文件类型资源的根目录
                require => Package["sudo"] } //定义依赖关系,必须执行了package中的操作之后才执行该操作
}
    -----------------------init.pp文件内容结束-----------------------

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

   5> 创建file资源中定义的配置文件sudoers:
    mkdir /etc/puppet/modules/sudo/files/etc
    cp /etc/sudoers /etc/puppet/modules/sudo/files/etc/sudoers

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

图片 1

创建模块目录结构
[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

相关阅读:

CentOS 6.3下Puppet安装配置笔记 http://www.linuxidc.com/Linux/2013-05/84738.htm

搭建Puppet负载均衡之Nginx+passenger http://www.linuxidc.com/Linux/2013-04/83567.htm

Puppet自动化Nginx+Mongrel负载均衡配置 http://www.linuxidc.com/Linux/2012-12/76280.htm

图片 2

本文由金沙澳门官网送注册58发布于计算机网络,转载请注明出处:Puppet常用能源配置精解,通过布置SSH深远理解P

关键词: