多台linux服务器的集中统一批量布署管理, 用什么工具最好呢?

简介:

cfengine、 puppet、 func哪种会好些呢?

我看下网上介绍的这些资料吧

这些之后一一贴上相关的资料

 

 

 cfengine 基本配置
文字太多跳转下面的页面查看
 
 

配置管理工具Puppet简介、安装 (转)

本文转自:http://www.yoyotown.com/?tag=cfengine

前言:

系统管理员经常陷入一系列的重复任务中:如升级软件包、管理配置文件、系统服务、cron任务以及添加新的配置、修复错误等。这些任务通常是重复低 效的,解决这类任务的第一反应是让他们自动化,于是出现了定制脚本。由于环境复杂,定制脚本和应用程序一再被重复开发,并且很难适合多种平台,灵活性和功 能也很难保证,于是像Puppet这样的自动化配置管理工具便出现了。

在开源世界里,有很多配置工具可供选择,这个领域一些关键的产品有:

Puppet(http://puppet.reductivelabs.com/):

  • Ruby写成的配置管理工具,使用C/S架构,使用declarative language配置客户端。

Cfengine(http://www.cfengine.org):

  • 最先发布的开源配置工具之一,1993年发布,同样是C/S架构,通常应用于教育机构。

LCFG(http://www.lcfg.org/):

  • C/S架构的配置管理工具,使用XML定义配置。

Bcfg2

  • Python编写的C/S架构的配置管理工具,使用规格书和客户机响应配置目标主机。
SmartFrog(http:// www.smartfrog.org/):

func (https://fedorahosted.org/func/)

本文档致力于描述使用Puppet管理你的主机、应用程序、后台程序和各种服务。

Puppet简介:

1. Puppet的用途

Puppet是开源的基于Ruby的系统配置管理工具,依赖于C/S的部署架构。主要开发者是Luke Kanies,遵循GPLv2版权协议。从1997年开始Kanies参与UNIX的系统管理工作,Puppet的开发源于这些经验。因为对已有的配置工 具不甚满意,从2001年到2005年间,Kanies开始在Reductive实验室从事工具的开发。很快,Reductive实验室发布了他们的旗舰 产品——Puppet。

2. Pupput的特性

许多系统配置管理工具工作的方式非常类似,如cfengine。是什么让Puppet与众不同?

Puppet的语法允许你创建一个单独脚本,用来在你所有的目标主机上建立一个用户。所有的目标主机会依次使用适用于本地系统的语法解释和执行这个 模块。举例:如果这个配置是在Red Hat服务器上执行,建立用户使用useradd命令;如果这个配置是在FreeBSD主机上执行,使用的是adduser命令。

Puppet另一个卓越的地方是它的灵活性。源于开源软件的天性,你可以自由的获得Puppet的源码,如果你遇到问题并且有能力的话,你可以修改 或者加强Puppet的代码去适用于你的环境。另外,社区开发者和捐献者还在不断增强Puppet的功能。一个大的开发者和用户社区也致力于提供 Puppet的文档和技术支持。

Puppet也是易于扩展的。定制软件包的支持功能和特殊的系统环境配置能够快速简单的添加进Puppet的安装程序中。

3. Puppet的工作模式

Puppet是一个C/S架构的配置管理工具,在中央服务器上安装puppet-server软件包(被称作Puppet master)。在需要管理的目标主机上安装puppet客户端软件(被称作Puppet Client)。当客户端连接上Puppet master后,定义在Puppet master上的配置文件会被编译,然后在客户端上运行。每个客户端默认每半个小时和服务器进行一次通信,确认配置信息的更新情况。如果有新的配置信息或 者配置信息已经改变,配置将会被重新编译并发布到各客户端执行。也可以在服务器上主动触发一个配置信息的更新,强制各客户端进行配置。如果客户端的配置信 息被改变了,它可以从服务器获得原始配置进行校正。

4. Puppet的未来

最后,Puppet是一个年轻的工具,仍然处于开发和发展中。Puppet社区快速壮大,并且许多新的想法不断融入,促使开发、更新和模块每天都在 呈现。

安装配置:

1. PuppetRedHat/CentOS系 统上安装

Puppet是基于Ruby写成的,所以安装前要准备好Ruby环境。在中心的Server上安装puppet-server包,并运行 puppetmasterd进程;在被管理机上安装puppet包,并运行puppetd进程。另外,在每台主机上配置好自己的hostname,之后每 台机器要以hostname区分。

1). 安装ruby环境:

yum install ruby ruby-rdoc

2). 安装puppet

Server端安装:

 wget http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm

rpm -Uvh epel-release-5-4.noarch.rpm

yum install puppet-server

chkconfig --level 2345 puppetmaster on

修改hosts,添加下面行:

Vi /etc/hosts

172.16.228.30   puppet.sina.com.cn puppet

172.16.228.29   web1.sina.com.cn web1

客户端安装:

 wget http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm

rpm -Uvh epel-release-5-4.noarch.rpm

yum install puppet

chkconfig --level 2345 puppet on

修改hosts,添加下面行:

Vi /etc/hosts

172.16.228.30   puppet.sina.com.cn puppet

172.16.228.29   web1.sina.com.cn web1

3). 启动puppet

Server端首次运行前,编辑/etc/puppet/manifests/site.pp文件,内容可以用最基本的:

# Create “/tmp/testfile” if it doesn’t exist.

class test_class {

file { “/tmp/testfile”:

ensure => present,

mode => 644,

owner => root,

group => root

}

}

# tell puppet on which client to run the class

node web1.sina.com.cn {

include test_class

}

启动Server端:

service puppetmaster start

启动客户端:

/etc/init.d/puppet once -v

这时客户机会去连server,但是由于连接是在ssl上的,而Server还没有sign过客户端的cert,客户机被断开。

到Server端执行:puppetca --list,会显示等待签名的客户端的主机名,执行:puppetca -sign <客户端主机名> 即可为其签名。

在Server端为web1.sian.com.cn授权:

puppetca --list

web1.sian.com.cn

puppetca --sign web1.sian.com.cn

这时再到客户机上启动puppetd,即可看到客户在正常地连接server,并且应用Server上为客户端定制的配置策略。

启动客户端:

/etc/init.d/puppet once -v

4). 测试:

也可以将日志直接打印到终端上进行测试:

Server端:puppetmasterd -d --no-daemonize -v --trace

客户端:puppetd --test --trace --debug

2. puppet配置文件

主配置文件(puppet.conf):

1). 配置文件命名空间:

main 通用配置选项

puppetd 客户端配置选项

puppetmasterd 服务端配置选项

2). main命名空间选项:

confdir 配置文件目录,默认在/etc/puppet

vardir 动态数据目录,默认在/var/lib/puppet

logdir 日志目录,默认在/var/log/log

rundir puppet PID目录,默认在/var/run/puppet

statedir state目录,默认在$vardir/state

statefile state文件,默认在$statedir/state.yaml

ssldir SSL证书目录,默认在$vardir/ssl

trace 发生错误时显示跟踪信息,默认false

filetimeout 检测配置文件状态改变的时间周期,单位秒,默认15秒

syslogfacility 指定syslog功能为user级,默认为daemon级

3). puppetmasterd命名空间选项:

user 后台进程执行的用户

group 后台进程执行的组

mainfestdir mainfests文件存储目录,默认为$confdir/mainfests

mainfest mainfest站点文件的名字,默认为site.pp

bindaddress 后台进程绑定的网卡地址接口

masterport 后台进程执行的端口,默认为8140

4). puppet命名空间选项:

server puppet puppet服务器名,默认为puppet

runinterval seconds puppet应用配置的时间间隔,默认1800秒(0.5小时)

puppetdlockfie file puppet lock文件位置,默认$statedir/puppetdlock

puppetport port 后台进程执行的端口,默认8139

文件服务配置文件(fileserver.conf):

[files]

path /var/lib/puppet/files

allow 121.14.1.*

allow 60.28.228.0/24

allow *.house.sina.com.cn

deny *.sina.com.cn

path定义文件存放路径,通过allow/deny来控制访问权限。

3. puppet命令集

 

1). puppet 用于执行用户所写独立的mainfests文件

# puppet -l /tmp/manifest.log manifest.pp

2). puppetd 运行在被管理主机上的客户端程序

# puppetd –server puppet.leju.com

3). puppetmasterd 运行在管理机上的服务器程序

# puppetmasterd

4). puppetca puppet认证程序

# puppetca -l

pclient.leju.com

# puppetca -s pclient.leju.com

5). puppetrun 用于连接客户端,强制运行本地配置文件

# puppetrun -p 10 –host host1 –host host2 -t remotefile -t webserver

6). filebucket 客户端用于发送文件到puppet file bucket的工具

# filebucket -b /tmp/filebucket /my/file

7). ralsh 转换配置信息到puppet配置代码

# ralsh user luke

user { ‘luke’:

home => ‘/home/luke’,

uid => ‘100′,

ensure => ‘present’,

comment => ‘Luke Kanies,,,’,

gid => ‘1000′,

shell => ‘/bin/bash’,

groups => ['sysadmin','audio','video','puppet']

}

8). puppetdoc 打印puppet参考文档

# puppetdoc -r type > /tmp/type_reference.rst

# puppetdoc –outputdir /tmp/rdoc –mode rdoc /path/to/manifests

# puppetdoc /etc/puppet/manifests/site.pp

官网 问题解答http://projects.puppetlabs.com/issues/3126

 

 

 

例子


1、同步目录:

file {"/qeedoodb/setup/package":
        source =>"puppet://$puppetserver/package",
        recurse =>"true", #递归检索文件,同步目录时设为true
        owner =>"root",
        group =>"root",
        mode =>"744",
        purge =>"true", #保持和source完全一致。类似rsync的 --delete参数
}

2、同步文件:

file { "/qeedoodb/package/2.txt":
        source => "puppet://$puppetserver/package/2.txt",
        owner => "root",
        group => "root",
        mode => 0644,
}

 需要配置/etc/puppet/fileserver.conf

 

[package]
  path /etc/puppet/client_conf/package        存放同步文件的路径
  allow *                 #指所有的IP都可访问

[code]
 path /etc/puppet/client_conf/code
  allow *

 

 

部署Func/Certmaster平台

转自刘天斯
http://blog.liuts.com/post/186/

Func简介
      Func是由红帽子公司以Fedora平台统一网络控制器 Func(Fedora Unified Network Controller https://fedorahosted.org/func),目的是为了解决这一系列统一管理监控问题而设计开发的系统管理基础框架。 它是一个能有效的简化我们多服务器系统管理工作的工具,它很容易学习、很容易使用、也很容易被扩展,它功能强大而我们只需要非常非常少的配置和维护。
    Func分为master及slave两部分,master为主控端,slave为被控端。以下为两部分的安装配置说明
     FUNC模块学习笔记
========================Func 2.5版本安装文档[Master]=========================
环境要求

Linux2.6内核
python2.5或以上(建议源码安装,系统自带的python2.3、2.4对func支持不好)
 


下载软件包


wget http://people.fedoraproject.org/~alikins/files/certmaster/certmaster-0.25.tar.gz
wget http://people.fedoraproject.org/~alikins/files/func/func-0.25.tar.gz
wget http://ovh.dl.sourceforge.net/sourceforge/pyopenssl/pyOpenSSL-0.9.tar.gz
 

安装

tar -zxvf pyOpenSSL-0.9.tar.gz
cd pyOpenSSL-0.9
/usr/local/bin/python setup.py install

tar -zxvf certmaster-0.25.tar.gz
cd certmaster-0.25
/usr/local/bin/python setup.py install

tar -zxvf func-0.25.tar.gz
cd func-0.25
/usr/local/bin/python setup.py install安装

ln -s /usr/local/bin/certmaster /usr/bin/certmaster
ln -s /usr/local/bin/certmaster-request /usr/bin/certmaster-request
ln -s /usr/local/bin/certmaster-ca /usr/bin/certmaster-ca
ln -s /usr/local/bin/certmaster-sync /usr/bin/certmaster-sync

ln -s /usr/local/bin/funcd /usr/bin/funcd
ln -s /usr/local/bin/func /usr/bin/func
ln -s /usr/local/bin/func-create-module /usr/bin/func-create-module
ln -s /usr/local/bin/func-inventory /usr/bin/func-inventory
ln -s /usr/local/bin/func-transmit /usr/bin/func-transmit
ln -s /usr/local/bin/func-build-map /usr/bin/func-build-map
 

配置

vi /etc/certmaster/certmaster.conf
[main]
autosign = no
listen_addr =

#证书交换通讯端口
listen_port = 1998

cadir = /etc/pki/certmaster/ca
cert_dir = /etc/pki/certmaster
certroot = /var/lib/certmaster/certmaster/certs
csrroot = /var/lib/certmaster/certmaster/csrs
cert_extension = cert
sync_certs = False

vi /etc/func/minion.conf
[main]
log_level = DEBUG
acl_dir = /etc/func/minion-acl.d

listen_addr =

#(Func通讯端口
listen_port = 1999
minion_name =
 


启动服务
service certmaster start


=============================2.5版本安装文档[slave]=========================
下载软件包

wget http://people.fedoraproject.org/~alikins/files/certmaster/certmaster-0.25.tar.gz
wget http://people.fedoraproject.org/~alikins/files/func/func-0.25.tar.gz
wget http://ovh.dl.sourceforge.net/sourceforge/pyopenssl/pyOpenSSL-0.9.tar.gz
 

安装

tar -zxvf pyOpenSSL-0.9.tar.gz
cd pyOpenSSL-0.9
/usr/local/bin/python setup.py install

tar -zxvf certmaster-0.25.tar.gz
cd certmaster-0.25
/usr/local/bin/python setup.py install

tar -zxvf func-0.25.tar.gz
cd func-0.25
/usr/local/bin/python setup.py install

ln -s /usr/local/bin/certmaster /usr/bin/certmaster
ln -s /usr/local/bin/funcd /usr/bin/funcd
 

配置

vi /etc/certmaster/certmaster.conf
[main]
autosign = no
listen_addr =

#与master端口保持一致
listen_port = 1998
cadir = /etc/pki/certmaster/ca
cert_dir = /etc/pki/certmaster
certroot = /var/lib/certmaster/certmaster/certs
csrroot = /var/lib/certmaster/certmaster/csrs
cert_extension = cert
sync_certs = False

vi /etc/certmaster/minion.conf
[main]
certmaster = func.master.server.com

#与master端口保持一致
certmaster_port = 1998
log_level = DEBUG
cert_dir = /etc/pki/certmaster

vi /etc/func/minion.conf
[main]
log_level = DEBUG
acl_dir = /etc/func/minion-acl.d

listen_addr =

#与master端口保持一致
listen_port = 1999

#slave主机名
minion_name =NN2007-08-048
 

启动服务
/sbin/chkconfig --level 345 certmaster on
/sbin/service certmaster start

/sbin/chkconfig --level 345 funcd on
/sbin/service funcd start

*安装完毕后一定要重启服务器操作系统,不然服务器端有时看不到该主机的证书请求。

=============================Master端常用操作==============================

func "*" call --forks="5" command run "date" 启用5个进程来执行date命令。
certmaster-ca --list 可以查看未签名的计算机名。
certmaster-ca --sign NN2004-02-008 对slave服务器进行签名(证书交换)。
certmaster-ca --sign `certmaster-ca --list ` 如证书请求的服务器比较多,可以这样一下子搞定。
certmaster-ca -c NN2004-02-008 删除该主机证书
 


=============================防火墙配置==============================

Slave主机需对master开放1998(certmaster)、1999(func)端口
master需对所有Slave主机开放1998(certmaster)端口

 

本文转自 holy2009 51CTO博客,原文链接:http://blog.51cto.com/holy2010/418040

相关文章
|
2月前
|
安全 Linux Shell
四、Linux核心工具:Vim, 文件链接与SSH
要想在Linux世界里游刃有余,光会“走路”还不够,还得配上几样“高级装备”。首先是Vim编辑器,它像一把瑞士军刀,让你能在命令行里高效地修改文件。然后要懂“软硬链接”,软链接像个快捷方式,硬链接则是给文件起了个别名。最后,SSH是你的“传送门”,不仅能让你安全地远程登录服务器,还能用scp轻松传输文件,设置好密钥更能实现免-密登录,极大提升效率。
361 3
|
2月前
|
安全 Linux iOS开发
SonarQube Server 2025 Release 5 (macOS, Linux, Windows) - 代码质量、安全与静态分析工具
SonarQube Server 2025 Release 5 (macOS, Linux, Windows) - 代码质量、安全与静态分析工具
179 0
SonarQube Server 2025 Release 5 (macOS, Linux, Windows) - 代码质量、安全与静态分析工具
|
2月前
|
Unix Linux 程序员
Linux文本搜索工具grep命令使用指南
以上就是对Linux环境下强大工具 `grep` 的基础到进阶功能介绍。它不仅能够执行简单文字查询任务还能够处理复杂文字处理任务,并且支持强大而灵活地正则表达规范来增加查询精度与效率。无论您是程序员、数据分析师还是系统管理员,在日常工作中熟练运用该命令都将极大提升您处理和分析数据效率。
258 16
|
3月前
|
弹性计算 安全 Linux
阿里云服务器ECS安装宝塔Linux面板、安装网站(新手图文教程)
本教程详解如何在阿里云服务器上安装宝塔Linux面板,涵盖ECS服务器手动安装步骤,包括系统准备、远程连接、安装命令执行、端口开放及LNMP环境部署,手把手引导用户快速搭建网站环境。
|
4月前
|
缓存 监控 Linux
Linux系统性能调优技巧和相关工具
Linux 作为一种应用应展和系统服务的优选操作系统,在处理性能和端到端点评估上持有出色表现。但是,在处理进程或系统处于低效状态时,性能调优就显得十分重要。本文将探讨一些 Linux 系统性能调优的常用技巧,并介绍相关工具
148 1
Linux系统性能调优技巧和相关工具
|
4月前
|
Linux 数据安全/隐私保护 iOS开发
推荐Linux环境下效能优良的双向文件同步工具
综合上述条件,对于Linux环境下的双向文件同步需求,Unison 和 Syncthing 是两个非常出色的选择。它们都有良好的社区支持和文档资源,适用于不同规模的环境,从个人使用到商业部署。Unison 特别适合那些需要手动干预同步过程、需要处理文件冲突解决的场景。而 Syncthing 更加现代化,适合需要自动、实时的数据同步与备份的环境。对于选择哪一个,这将取决于个人的使用场景和具体需求。
506 16
|
3月前
|
数据采集 编解码 运维
一文讲完说懂 WowKey -- WowKey 是一款 Linux 类设备的命令行(CLT)运维工具
WowKey 是一款面向 Linux 类设备的命令行运维工具,支持自动登录、批量执行及标准化维护,适用于企业、团队或个人管理多台设备,显著提升运维效率与质量。
|
4月前
|
监控 Linux 网络安全
FinalShell SSH工具下载,服务器管理,远程桌面加速软件,支持Windows,macOS,Linux
FinalShell是一款国人开发的多平台SSH客户端工具,支持Windows、Mac OS X和Linux系统。它提供一体化服务器管理功能,支持shell和sftp同屏显示,命令自动提示,操作便捷。软件还具备加速功能,提升访问服务器速度,适合普通用户和专业人士使用。
1218 0
|
2月前
|
Linux 应用服务中间件 Shell
二、Linux文本处理与文件操作核心命令
熟悉了Linux的基本“行走”后,就该拿起真正的“工具”干活了。用grep这个“放大镜”在文件里搜索内容,用find这个“探测器”在系统中寻找文件,再用tar把东西打包带走。最关键的是要学会使用管道符|,它像一条流水线,能把这些命令串联起来,让简单工具组合出强大的功能,比如 ps -ef | grep 'nginx' 就能快速找出nginx进程。
412 1
二、Linux文本处理与文件操作核心命令
下一篇
oss云网关配置