LOFTER for ipad —— 让兴趣,更有趣

点击下载 关闭

LOFTER-网易轻博

自动化运维

172浏览    13参与
北大青鸟教育
joychen520
走过岁月......

SaltStack之分组管理

在使用 SaltStack 对主机进行批量管理的时候,因为不同的服务器组所做的业务功能不同,因此为了更加方便的管理,需要对主机进行分组管理

一. 编辑配置文件

[root@salt-master ~]# vim /etc/salt/master


二.  分组方式

  • G -- 针对 Grains 做单个匹配,例如:G@os:Ubuntu

  • E -- 针对 minion 针对正则表达式做匹配,例如:E@web\d+.(dev|qa|prod).loc

  • P -- 针对 Grains 做正则表达...

在使用 SaltStack 对主机进行批量管理的时候,因为不同的服务器组所做的业务功能不同,因此为了更加方便的管理,需要对主机进行分组管理

一. 编辑配置文件

[root@salt-master ~]# vim /etc/salt/master


二.  分组方式

  • G -- 针对 Grains 做单个匹配,例如:G@os:Ubuntu

  • E -- 针对 minion 针对正则表达式做匹配,例如:E@web\d+.(dev|qa|prod).loc

  • P -- 针对 Grains 做正则表达式匹配,例如:P@os:(RedHat|Fedora|CentOS)

  • L -- 针对 minion 做列表匹配,例如:L@minion1.example.com,minion3.domain.com or bl*.domain.com

  • I -- 针对 Pillar 做单个匹配,例如:I@pdata:foobar

  • S -- 针对子网或是 IP 做匹配,例如:S@192.168.1.0/24 or S@192.168.1.100

  • R -- 针对客户端范围做匹配,例如: R@%foo.bar

走过岁月......

SaltStack之grains使用

grains主要负责采集客户端一些基本信息, 这个可以在客户端自定义,然后自动汇集上来;也可以从服务器端定义后推送至客户端,采集完后,再汇集上来

1.打印所有items值

[root@salt-master ~]# salt "*" grains.items

salt-minion1:

    ----------

    SSDs:

    biosreleasedate:...


grains主要负责采集客户端一些基本信息, 这个可以在客户端自定义,然后自动汇集上来;也可以从服务器端定义后推送至客户端,采集完后,再汇集上来

1.打印所有items值

[root@salt-master ~]# salt "*" grains.items

salt-minion1:

    ----------

    SSDs:

    biosreleasedate:

        07/02/2015

    biosversion:

        6.00

    cpu_flags:

        - fpu

        - vme

        - de

        - pse

以下省略......字

2.列出所有项

[root@salt-master ~]# salt 'salt-minion1' grains.ls

salt-minion1:

    - SSDs

    - biosreleasedate

    - biosversion

    - cpu_flags

    - cpu_model

    - cpuarch

    - domain

    - fqdn

    - fqdn_ip4

    - fqdn_ip6

    - gpus

    - host

    - hwaddr_interfaces

    - id

    - init

    - ip4_interfaces

    - ip6_interfaces

    - ip_interfaces

    - ipv4

    - ipv6

    - kernel

    - kernelrelease

    - locale_info

    - localhost

    - lsb_distrib_id

    - machine_id

    - manufacturer

    - master

    - mdadm

    - mem_total

    - nodename

    - num_cpus

    - num_gpus

    - os

    - os_family

    - osarch

    - oscodename

    - osfinger

    - osfullname

    - osmajorrelease

    - osrelease

    - osrelease_info

    - path

    - productname

    - ps

    - pythonexecutable

    - pythonpath

    - pythonversion

    - saltpath

    - saltversion

    - saltversioninfo

    - selinux

    - serialnumber

    - server_id

    - shell

    - systemd

    - virtual

    - zmqversion

3.查看单项的值

接2,查看某一item的值

[root@salt-master ~]# salt 'salt-minion1' grains.item osrelease_info

salt-minion1:

    ----------

    osrelease_info:

        - 7

        - 2

        - 1511

[root@salt-master ~]# salt 'salt-minion1' grains.item ipv4

salt-minion1:

    ----------

    ipv4:

        - 127.0.0.1

        - 192.168.254.132

走过岁月......

SaltStack简单使用

1. 测试被控主机的连通性

[root@salt-master ~]# salt '*' test.ping

salt-minion2:

    True

salt-minion1:

    True

2. 远程命令执行测试

[root@salt-master ~]# salt '*' cmd.run 'uptime'

salt-minion1:

     10:43:16 up 1 day,  4:07, ...

1. 测试被控主机的连通性

[root@salt-master ~]# salt '*' test.ping

salt-minion2:

    True

salt-minion1:

    True

2. 远程命令执行测试

[root@salt-master ~]# salt '*' cmd.run 'uptime'

salt-minion1:

     10:43:16 up 1 day,  4:07,  1 user,  load average: 0.00, 0.01, 0.05

salt-minion2:

     10:43:19 up 13:38,  1 user,  load average: 0.00, 0.01, 0.05

3. 显示被控主机的操作系统类型

[root@salt-master ~]# salt '*' grains.item os

salt-minion1:

    ----------

    os:

        CentOS

salt-minion2:

    ----------

    os:

        CentOS

4. 远程代码执行测试

[root@salt-master ~]# salt '*' cmd.exec_code python "import sys;print sys.version"

salt-minion2:

    2.7.5 (default, Aug 18 2016, 15:58:25) 

    [GCC 4.8.5 20150623 (Red Hat 4.8.5-4)]

salt-minion1:

    2.7.5 (default, Aug 18 2016, 15:58:25) 

    [GCC 4.8.5 20150623 (Red Hat 4.8.5-4)]

5. 【-E 】参数

使用该参数时,命令的对象里面可以用正则表达式来匹配对象 

[root@salt-master ~]# salt -E 'salt+' test.ping

salt-minion1:

    True

salt-minion2:

    True

6. 【-L 】参数 

使用该参数时,可以指定多个对象进行操作

[root@salt-master ~]# salt -L 'salt-minion1,salt-minion2' test.ping

salt-minion2:

    True

salt-minion1:

    True

7. 【-G】参数

该参数使用grains里的item来指定 

[root@salt-master ~]# salt -G 'os_family:RedHat' test.ping

salt-minion1:

    True

salt-minion2:

    True

查看item可使用以下命令

[root@salt-master ~]# salt 'salt-minion1' grains.items

[root@salt-master ~]# salt 'salt-minion1' grains.ls

8. 【-N】参数

使用该参数操作某个组内的对象

首先在配置文件中设置组


重启master

[root@salt-master ~]# systemctl restart salt-master

   

执行-N参数测试

[root@salt-master ~]# salt -N group-sec test.ping

salt-minion2:

    True

salt-minion1:

    True

关于分组细节设置请参考以下链接

http://securityer.lofter.com/post/1d0f3ee7_c3c6ce4

走过岁月......

SaltStack(自动化管理平台)安装部署

SaltStack,一种全新的基础设施管理方式,部署轻松,在几分钟内可运行起来,扩展性好,很容易管理上万台服务器,速度够快,服务器之间秒级通讯。

salt底层采用动态的连接总线, 使其可以用于编配, 远程执行, 配置管理等等.

Server:CentoOS 7.0

Salt-master: 192.168.254.131 (管理端)

Salt-minion: 192.168.254.132 (被管理端)

1.在master和minion主机上均安装epel

[root@salt-master ~]#  rpm ...

SaltStack,一种全新的基础设施管理方式,部署轻松,在几分钟内可运行起来,扩展性好,很容易管理上万台服务器,速度够快,服务器之间秒级通讯。

salt底层采用动态的连接总线, 使其可以用于编配, 远程执行, 配置管理等等.

Server:CentoOS 7.0

Salt-master: 192.168.254.131 (管理端)

Salt-minion: 192.168.254.132 (被管理端)

1.在master和minion主机上均安装epel

[root@salt-master ~]#  rpm -ivh http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

[root@salt-master ~]#  rpm -qa | grep epel

epel-release-7-8.noarch

2.在master主机上安装salt-master并加入开机启动

[root@salt-master ~]#  yum install salt-master -y

[root@salt-master ~]#  rpm -qa | grep salt-master

salt-master-2015.5.10-2.el7.noarch

[root@salt-master ~]#  systemctl enable salt-master.service

Created symlink from /etc/systemd/system/multi-user.target.wants/salt-master.service to /usr/lib/systemd/system/salt-master.service.

3.master主机启动salt-master服务,并确认进程

[root@salt-minion ~]#   systemctl start salt-master.service


4.minion主机上安装salt-minion并加入开机启动

[root@salt-minion ~]#  yum install salt-minion -y

[root@salt-minion ~]#  rpm -qa | grep salt-minion

salt-minion-2015.5.10-2.el7.noarch

[root@salt-minion ~]#  systemctl enable salt-minion.service

Created symlink from /etc/systemd/system/multi-user.target.wants/salt-minion.service to /usr/lib/systemd/system/salt-minion.service.

5.minion主机上启动minion服务,并确认其进程

[root@salt-minion ~]#  systemctl start salt-minion.service


6.配置minion上的配置文件

[root@salt-minion ~]#  vi /etc/salt/minion

填写master端的IP指向


至此,安装完毕,master和minion两主机可以通信了。下面介绍一下salt-key的操作

salt-key操作(master端)

列出当前所有Key

[root@salt-master ~]#  salt-key -L

Accepted Keys:

Denied Keys:

Unaccepted Keys:

Rejected Keys:

如果发现没有minion的信息,多是防火墙原因,关闭或重新设置一下防火墙

[root@salt-master ~]#  firewall-cmd --state

running

[root@salt-master ~]#  systemctl stop firewalld.service

[root@salt-master ~]#  firewall-cmd --state

not running

[root@salt-master ~]#  salt-key -L

Accepted Keys:

Denied Keys:

Unaccepted Keys:

salt-minion

Rejected Keys:

此时可以看到minion的主机名了,只是目前还处于[Unaccepted Keys:]的状态

接受一个ID为salt-minion的Key,ID的值在minion的/etc/salt/minion中修改【id: xxxxx】

[root@salt-master ~]#  salt-key -a salt-minion

The following keys are going to be accepted:

Unaccepted Keys:

salt-minion

Proceed? [n/Y] Y

Key for minion salt-minion accepted.

[root@salt-master ~]#  salt-key -L

Accepted Keys:

salt-minion

Denied Keys:

Unaccepted Keys:

Rejected Keys:

接受所有Key

salt-key -A

删除ID为CentOS的key

salt-key -d CentOS

删除所有的key

salt-key -D

查看key指纹(master)

[root@salt-master ~]# salt-key -f CentOS

Accepted Keys:

salt-minion:  54:6d:70:6c:80:12:49:62:99:66:8f:06:b8:4c:eb:0e

查看key指纹(minion)

 [root@salt-minion ~]# salt-call key.finger --local

local:

    54:6d:70:6c:80:12:49:62:99:66:8f:06:b8:4c:eb:0e

执行测试在线命令

[root@salt-master ~]# # salt "*" test.ping

salt-minion:

    True

其中【*】代表所有客户端,把*换成id代表只是选中这个id的客户端

返回true说明客户端在线

执行远程命令

[root@salt-master ~]#  salt "*" cmd.run "uname -a"

salt-minion:

    Linux CentOS 3.10.0-327.28.3.el7.x86_64 #1 SMP Thu Aug 18 19:05:49 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

[root@salt-master ~]#  salt "*" cmd.run "ip ro sh"

salt-minion:

    default via 192.168.254.2 dev eno16777736  proto static  metric 100

    192.168.254.0/24 dev eno16777736  proto kernel  scope link  src 192.168.254.132  metric 100

部署和基本操作如上,后续详述自动化实践...

IT168文库

玩转自动化运维_邵海杨

 

玩转自动化运维_邵海杨


本议题主要谈论:1、探讨云时代下的架构设计及运维挑战;2、运维人员的团队协作和架构师成长修炼;3、面对来自devops和云的挑战,运维工程师如何成长;4、怎么实现自动化运维,化被动为主动。


详细解读 和小伙伴们一起来吐槽


同步自网易博客 (查看原文)

玩转自动化运维_邵海杨 - 332566262 - 拟声的主扬

 

玩转自动化运维_邵海杨


本议题主要谈论:1、探讨云时代下的架构设计及运维挑战;2、运维人员的团队协作和架构师成长修炼;3、面对来自devops和云的挑战,运维工程师如何成长;4、怎么实现自动化运维,化被动为主动。


详细解读 和小伙伴们一起来吐槽


同步自网易博客 (查看原文)

91ziyuan

7、puppet关于模块的基础知识

对于puppet模块,一般通常放在/etc/puppet/modules目录下面

这里,我们用memcached这个模块来做一个详细的介绍

1、创建memcached模块主目录

    mkdir -p /etc/puppet/modules/memcached


2、创建memcached模块所需的目录结构,一般为三个目录:


    files    (存放memcached程序包或者配置文件)

    manifests(存放memcached模块主入口文件)...


对于puppet模块,一般通常放在/etc/puppet/modules目录下面

这里,我们用memcached这个模块来做一个详细的介绍

1、创建memcached模块主目录

    mkdir -p /etc/puppet/modules/memcached


2、创建memcached模块所需的目录结构,一般为三个目录:


    files    (存放memcached程序包或者配置文件)

    manifests(存放memcached模块主入口文件)

    templates(存放模板文件)

  


    mkdir /etc/puppet/modules/memcached/{files,templates,manifests}


3、创建init.pp文件,内容为:

    cat /etc/puppet/modules/memcached/manifests/init.pp


    class memcached {

    package { "memcached":

                ensure => installed,

            }

    file { "/etc/memcached.conf":

          source => "puppet://$fileserver/modules/memcached/memcached.conf",

    }

    service { "memcached":

              ensure => running,

              enable => true,

              require => [ Package["memcached"],File["/etc/memcached.conf"] ],

      }

    }

4、配置文件服务器fileserver.conf

    [memcached]

        path /etc/puppet/modules/memcached/files

        allow 192.168.1.0/24


5、定义节点使用新的模块

    node clientname {

    include memcached

    }

6、客户端执行查看效果,puppet agent --test


注意:

memcached.conf文件必须存在,且放在/etc/puppet/modules/memcached/files目录下面


如果需要使用模板,可以这样配置:

file {"/etc/memcached.conf":

content => template("memcached/memcached.conf.erb"),

}

且memcached.conf.erb文件必须存在/etc/puppet/modules/memcached/templates目录下面


91ziyuan

6、puppet资源类型详解-包管理

puppet包管理

package


例子:安装vim/vsftpd/mysql三个软件包,卸载bind

package {

["vim","vsftpd","mysql"]:

ensure => installed,

"bind":

    ensure => absent,

}


参数详解

allowcdrom 可以允许使用cdrom作为软件源,可以设置为false/true

description 描述

ensure installed,present...

puppet包管理

package


例子:安装vim/vsftpd/mysql三个软件包,卸载bind

package {

["vim","vsftpd","mysql"]:

ensure => installed,

"bind":

    ensure => absent,

}



参数详解

allowcdrom 可以允许使用cdrom作为软件源,可以设置为false/true

description 描述

ensure installed,present   安装软件

absent             卸载软件

pureged             干净的移除该软件

latest             安装最新版本


namevar 软件名字

source 指定rpm包地址,必须是本地地址或者URL


provider 指定软件管理者

apt 通过apt-get安装

                                支持特性:installable, purgeable, uninstallable, upgradeable, versionable

yum 通过yum安装

                                支持特性:installable, purgeable, uninstallable, upgradeable, versionable

rpm 通过rpm方式安装

等等


实例:


指定使用rpm方式安装

package {"install_nginx":

provider  => rpm,

ensure    => present,

source    => "/usr/local/src/$nginx_name",

}



针对不同平台:

class ssh::params { 

case $operatingsystem {

Solaris:{

$package_name = 'openssh'

}

/(Ubuntu|Debian)/: {

$package_name = 'openssh-server'

}

}

}



数组方式安装多个包

package {"multi_install":

name => ["vsftpd","ssh","httpd"],

ensure => present,

}



默认值方式安装多个包

Package {

ensure => present,

}

package {["vsftpd","ssh","httpd"]:}



91ziyuan

5、puppet资源类型详解-文件

写出一个完整的puppet配置文件,离不开它所依赖的各种资源。例如file、exec、package等等,关于这些资源,我会在博客中一一做一个比较详细的介绍,大家也可以通过puppet中文wiki或者puppet官网获得一个比较详细的学习资料

中文wiki

http://puppet.wikidot.com/

puppet英文官网

https://puppetlabs.com/


puppet文件资源

一些比较常用的file资源参数:

owner      文件所属用户
group   ...

写出一个完整的puppet配置文件,离不开它所依赖的各种资源。例如file、exec、package等等,关于这些资源,我会在博客中一一做一个比较详细的介绍,大家也可以通过puppet中文wiki或者puppet官网获得一个比较详细的学习资料

中文wiki

http://puppet.wikidot.com/

puppet英文官网

https://puppetlabs.com/

 

puppet文件资源

一些比较常用的file资源参数:

owner      文件所属用户
group      文件所属组
mode       文件权限
ignore     忽略指定文件,比如.svn .git
recurse    递归检索文件,同步目录设为true

backup     备份

content    指定文件内容或文件模版名称

 

例子:

file { "/var/www/my/file": source => "/path/in/nfs/or/something", mode => 666 }

 

backup参数详解:

作用:用于在同步文件内容之前是否对原始文件进行备份操作

backup => false         不进行备份操作

backup => ".bak"        备份到文件所在的当前目录,并且以.bak作为后缀

                        可以加上一些其他参数,例如:.bak_$uptime_seconds

filebucket {main:

    server => puppet

}

backup => main          将文件备份到服务器上

 

recurse
设置是否以及如何进行递归操作, 可以设置的值是 false,true ,inf ,remote

recurselimit
递归的深度,设置的值可以匹配/^[0-9]+$/.

recurse参数主要是用于在客户端对整个目录做配置,例如从服务器上同步某个目录

file {"/tmp/testdir":
    ensure => present,
    owner   => "root",
    group  => "root",
    mode    => 0644,
    recurse => true,
    source => "puppet://$puppetserver/vsftpd/testdir",
}

 

content

指定文件内容或者文件模版名称,例如:

file {"/tmp/test.txt":

    ensure  => present,

    content => "hello,world!",

}

或者指定文件模版

file {"/tmp/vhost.conf":
        content => template("ssh/vhost.conf.erb"),
        owner   => "root",
        group   => "root",
        mode    => 777,
}

 

checksum

检查文件是否被修改,这个状态用来在复制文件的时候使用, 这里有几种检测方式,包括md5 ,mtime,time,timestamp等.
默认的检测是用md5

 

ensure

指定文件创建方式,可以使用的设置为:

absent    如果文件存在,删除文件,如果指定recurese => true 就会删除目录

present   如果文件不存在,创建文件

file      创建文件

directory 创建目录

 

target

是为创建链接的。可以设置的值为notlink

 

创建目录:

file {"/tmp/createdir":
    ensure => directory,
}

 

更新文件,多源:
file {"/path/to/my/file":
  source => [
    "/modules/nfs/files/file.$host",
    "/modules/nfs/files/file.$operatingsystem",
    "/modules/nfs/files/file"
  ]
}

 

 

 

 

91ziyuan

2、puppet服务端和客户端的安装

根据puppet官网的推荐,我们这次主要是以yum的方式安装服务端和客户端所需要的各种软件,这样在以后的升级和迁移过程比较简单

官网上为我们在各种平台上的安装配置提供了一份版本适用性表格

安装平台推荐:








ruby版本兼容性推荐



详细信息请访问官网:http://docs.puppetlabs.com/guides/platforms.html


下面是我所用的软件版本列表

ruby-1.8.5-27
ruby-lib-1.8.5-27
ruby-shadow-1.4.1-2
facter-1.6.6-1
puppet-server...

根据puppet官网的推荐,我们这次主要是以yum的方式安装服务端和客户端所需要的各种软件,这样在以后的升级和迁移过程比较简单

官网上为我们在各种平台上的安装配置提供了一份版本适用性表格

安装平台推荐:

2、puppet服务端和客户端的安装

2、puppet服务端和客户端的安装

2、puppet服务端和客户端的安装

 

ruby版本兼容性推荐

2、puppet服务端和客户端的安装

详细信息请访问官网:http://docs.puppetlabs.com/guides/platforms.html

 

下面是我所用的软件版本列表

ruby-1.8.5-27
ruby-lib-1.8.5-27
ruby-shadow-1.4.1-2
facter-1.6.6-1
puppet-server-2.7.9-1
puppet-2.7.9-1

 

puppetmaster

    hostname:server.pp.com

    ip:192.168.1.100

puppet agent

    hostname:client.pp.com

    ip:192.168.1.101

 

1、安装服务端
1.1、安装ruby环境
yum install ruby ruby-libs ruby-shadow


1.2、yum添加EPEL仓库
rpm -Uvh http://mirrors.sohu.com/fedora-epel/5/i386/epel-release-5-4.noarch.rpm


1.3、安装puppet
yum install puppet puppet-server facter

 

1.4、配置puppet
puppet的主配置文件为puppet.conf,默认存在/etc/puppet/puppet.conf
如果没有,可以手动生成
puppetmasterd --genconfig > puppet.conf

 

1.5、配置puppet服务端域名
more puppet.conf
[master]
certname=server.pp.com

 

1.6、添加site.pp文件,否则puppet拒绝启动,我们现在也仅仅需要一个空文件而已
touch /etc/puppet/manifest/site.pp

 

1.7、配置host,使能够解析到server.pp.com/client.pp.com

 

1.8、启动puppet master
service puppetmaster start
服务将监控8140端口,默认使用puppet账号启动服务
调试puppet master
puppet master --verbose --no-daemonize --debug

 

 

2、配置第一个agent
2.1、安装puppet客户端软件
yum install ruby ruby-libs ruby-shadow
rpm -Uvh http://mirrors.sohu.com/fedora-epel/5/i386/epel-release-5-4.noarch.rpm
yum install puppet facter

 

2.2修改agent配置文件
vi /etc/puppet/puppet.conf
[main]
server=server.pp.com

 

2.3、host添加puppetmaster主机名称server.pp.com

 

2.4、测试连接
puppet agent --server=server.pp.com --verbose --debug
或者
puppet agent --test

 

2.5、查看服务端,并证书验证
puppetca --list                    查看等待验证的客户端
puppetca --sign client.pp.com      验证某个客户端
puppetca --sign --all              验证所有待验证客户端
puppetca --all --list              查看已经通过验证的客户端
puppetca --revoke hostname         吊销客户端证书
puppetca --clean hostename         删除当前客户端的所有文件


如果某个客户端需要重新申请证书,可以在服务端使用这个命令:puppetca --revoke --clean hostname
客户端删除/etc/puppet目录下面的ssl目录
 

2.6、以服务的方式启动puppet客户端
service puppet start
调试客户端
puppet agent --server=server.pp.com --no-daemonize --verbose --debug

 

 

91ziyuan

4、puppet的ssh模块讲解

这个模块为其他人所写,里面用到了很多我们所需要的新的功能,学习这个模块后,我们会对puppet模块的编写有一个比较深的了解


class ssh::install {
    package {"ssh_pkg":
        name => $operatingsystem ? {

            /(RedHat|CentOS...

这个模块为其他人所写,里面用到了很多我们所需要的新的功能,学习这个模块后,我们会对puppet模块的编写有一个比较深的了解

 

class ssh::install {
    package {"ssh_pkg":
        name => $operatingsystem ? {

            /(RedHat|CentOS|Fedora|Ubuntu|Debian)/ => "openssh-server",
            Solaris => "openssh",
        },
        ensure => present,
    }
}

class ssh::config {
   file {"/etc/ssh/sshd_config":
        ensure => present,
        owner  => 'root',
        group  => 'root',
        mode   => '0600',
        source => "puppet:///modules/ssh/sshd_config",
        require => Class["ssh::install"],
        notify => Class["ssh::service"],

   }
}

class ssh::service {
    service {"sshd":
        ensure => running,
        hasstatus => true,
        hasrestart => true,
        enable => true,
        require => Class["ssh::config"],
    }
}

class ssh {
    include ssh::install,ssh::config,ssh::service
}

 

首先在这个模块中,我们编写了三个类,用于管理ssh模块的安装、配置、服务开启和关闭

在类ssh::install中,多了几行代码,如下:

name => $operatingsystem ? {

            /(RedHat|CentOS|Fedora|Ubuntu|Debian)/ => "openssh-server",
            Solaris => "openssh",
        },
在package资源中,name属性一般用于指定所要安装软件包的名称,这里主要是为了适应客户端平台的多样性而做的适应性配置,例如在RedHat平台上,ssh软件包的名字叫openssh-server,而在Solaris平台上则是openssh,puppet会自动判断平台的类型而安装指定的包

 

 

而在类ssh::config中主要有两个属性需要我们关注

require => Class["ssh::install"],
notify => Class["ssh::service"],

 

require属性

用于指定在执行某个资源的时候需要提前执行另外一个资源,只有在另外一个执行成功的时候这个资源才可以被正常执行,也就是我们通常所说的依赖关系。在这个例子中,表示只有在安装了ssh程序以后才可以对它的配置文件做出某些修改

对多个资源存在依赖:

require => [ File["/usr/local"], File["/usr/local/scripts"] ]

相对属性:before

用于某个资源必须要在before指定的那个资源之前执行

 

 

notify属性

用于在执行某个资源后通知另外的资源接着执行,一般用户修改配置文件后重启服务

相对资源:subscribe

例如:

file { "/etc/ssh/sshd_config":
        .....
        notify => Service[sshd],
}
 
service { "sshd":
           ......
           subscribe => File["/etc/ssh/sshd_config"],

当sshd_config文件内容有更新时候通知sshd资源进行服务重启操作

 

 

service {"sshd":
        ensure => running,
        hasstatus => true,
        hasrestart => true,
        enable => true,
        require => Class["ssh::config"],
    }

在service资源中

ensure => running 用于开启某个服务

enable => true 开启自启动,也就是linux系统中的chkconfig

hasstatus=> true 指定某个服务是否支持查看服务状态,默认为false,puppet一般会通过查看进程的方式获取这个服务的启动信息

hasrestart => true  指定某个服务是否支持服务重启操作,默认为false,puppet一般会通过start/stop进行服务的重启操作

 

class ssh

用于包含其他类,组成一个完整的ssh模块配置信息

 

 

 

LOFTER

让兴趣,更有趣

简单随性的记录
丰富多彩的内容
让生活更加充实

下载移动端
关注最新消息