python 系统管理_系统管理 — The Hitchhiker's Guide to Python

Puppet¶

Puppet 是来自Puppet Labs的IT自动化和配置管理软件,允许系统管理员定义他们的IT基础设施状态,

这样就能够提供一种优雅的方式管理他们成群的物理和虚拟机器。

Puppet均可作为开源版和企业版获取到。其模块是小的、可共享的代码单元,用以自动化或定义系统的状态。

Puppet Forge 是一个模块仓库,它由社区编写,面向开源和企业版的Puppet。

Puppet代理安装于其状态需要被监控或者修改的节点上。作为特定服务器的Puppet Master负责组织代理节点。

代理节点发送系统的基本信息到Puppet Master,比如说操作系统、内核、架构、IP地址、主机名等。

接着,Puppet Master编译携带有节点生成信息的目录,告知每个节点应如何配置,并发送给代理。

代理便会执行前述目录中的变化,并向Puppet Master发送回一份报告。

Facter是一个有趣的工具,它用来传递Puppet获取到的基本系统信息。这些信息可以在编写Puppet模块的时候作为变量来引用。

$ facter kernel

Linux

$ facter operatingsystem

Ubuntu

在Puppet中编写模块十分直截了当。Puppet清单(manifest)组成了Puppet模块。Puppet清单以扩展名 .pp 结尾。

下面是一个Puppet中 ‘Hello World’的例子。

notify { 'This message is getting logged into the agent node':

#As nothing is specified in the body the resource title

#the notification message by default.

}

这里是另一个基于系统的逻辑的例子。注意操纵系统信息是如何作为变量使用的,变量前加了前缀符号 $ 。

类似的,其他信息比如说主机名就能用 $hostname 来引用。

notify{ 'Mac Warning':

message => $operatingsystem ? {

'Darwin' => 'This seems to be a Mac.',

default => 'I am a PC.',

},

}

Puppet有多种资源类型,需要时可以使用包-文件-服务(package-file-service)范式来承担配置管理的主要任务。

下面的Puppet代码确保了系统中安装了OpenSSH-Server包,并且在每次sshd配置文件改变时重启sshd服务。

package { 'openssh-server':

ensure => installed,

}

file { '/etc/ssh/sshd_config':

source => 'puppet:///modules/sshd/sshd_config',

owner => 'root',

group => 'root',

mode => '640',

notify => Service['sshd'],# sshd will restart

# whenever you edit this

# file

require => Package['openssh-server'],

}

service { 'sshd':

ensure => running,

enable => true,

hasstatus => true,

hasrestart=> true,

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值