• Puppet


    一、Puppet简介

    Puppet基于ruby语言开发的自动化系统配置工具,可以C/S模式或独立运行,支持对所有UNIX及类UNIX系统的配置管理,最新版本也开始支持对Windows操作系统有限的一些管理。Puppet适用于服务器管的整个过程 ,比如初始安装、配置更新以及系统下线。

    二、Puppet的安装

    Puppet的安装方式支持源码安装、yum安装以及ruby的gem安装。官网推荐使用yum来安装puppet,方面以后的升级、管理、维护。Centos可以采用yum来安装,但是Centos的默认源中没有puppet包,因此需要先安装epel包。Epel是企业版Linux附加软件包(Extra Packages for Enterprise Linux)的缩写,是一个由特别兴趣小组创建、维护并管理的,针对红帽企业版Linux(RHEL)及其衍生发行版(比如CentOS、Scientific Linux)的一个高质量附加软件包项目。

        不推荐使用apt-get命令进行安装,因为该命令下载的puppet存在bug。可直接从源代码               进行安装,需要安装的软件有ruby,facter和puppet

    1. Master的安装

    yum -y install ruby ruby-libs ruby-shadow
    wget ftp://ftp.sunet.se/pub/Linux/distributions/yellowdog/yum/6.2/extras/RPMS/epel-release-5-3.noarch.rpm
    rpm -Uvh epel-release-5-3.noarch.rpm
    yum -y install puppet puppet-server facter

    2. Agent的安装

    yum install ruby ruby-libs ruby-shadow
    wget ftp://ftp.sunet.se/pub/Linux/distributions/yellowdog/yum/6.2/extras/RPMS/epel-release-5-3.noarch.rpm
    rpm -Uvh epel-release-5-3.noarch.rpm
    yum -y install puppet facter

    至此如果安装过程不报错的话,puppet已经安装成功了。
    三、Puppet的简单配置

    1. Master的配置

    先来看看puppet主目录下都有什么文件已经每个文件是做什么用的:

    ls -1 /etc/puppet/
    auth.conf       #定义puppet master的acl文件
    fileserver.conf   #定义puppet master文件服务器的配置文件
    manifests        #puppet脚本主文件目录,site.pp文件必须存在
    modules            #puppet模块目录
    puppet.conf     #puppet主配置文件
    ssl                     #存放ssl证书的目录

    刚开始的话, puppet.conf不需要配置就可以满足。

    需要更改hosts文件,注意hosts要和主机名对应。

    vim  /etc/hosts添加如下内容:

    10.1.4.218 puppet.zhang.com puppet
    10.1.4.213 node1.zhang.com node1
    10.1.4.214 node2.zhang.com node2

    大家要根据实际情况加,我这里是一个master,两个agent。

    2. Agent的配置

    Agent的配置主要是更改agent上的/etc/puppet/puppet.conf文件的[agent]部分。

    在agent上vim /etc/puppet/puppet.conf 添加如下配置

    server = puppet.zhang.com        #master服务器的地址
    runinterval = 3600                       #每隔多久的时间进行自动更新,时间单位为秒
    listen = true                         #客户端作为一个服务进行监听,允许其它的机器触发puppet运行允许远程触发puppet的节点配置

    四、puppet的启动和停止

    1. Master的启动和停止

    Master的启动

    /etc/rc.d/init.d/puppetmaster start

    也可以以采用 service puppetmaster start启动

    第一次启动建议采用puppet master --verbose --no-daemonize方式启动,有助于测试和调试错误,如果采用后面这种方式,你可以看到启动的整个过程,启动过程会做一些初始化的工作,为master创建本地证书认证中心,证书和key。并打开socket等待client的连接。你可以在/etc/puppet/ssl目录看到相关的文件和目录。

    Master的停止

    /etc/rc.d/init.d/puppetmaster stop

    也可以以采用 service puppetmaster stop停止

    更改多选项可以使用/etc/rc.d/init.d/puppetmaster –h查看

    2. Agent的启动和停止

    Agent的启动

    /etc/rc.d/init.d/puppet start

    也可以采用service puppet start来启动

    调试的时候可以采用

    puppet agent --server=puppet.zhang.com --no-daemonize –verbose

    的方式来启动,这样启动我们可以看到agent是如何和master建立连接的。

    Agent的停止

    /etc/rc.d/init.d/puppet stop

    也可以采用service puppet stop来停止。

    五、FAQ

    1.  连接master的时候出现如下报错:

    dnsdomainname: Unknown host

    解决办法:检查机器主机名的设置,以及是否添加进hosts。

    2.   连接master的时候出现如下报错:

    err: Could not request certificate: getaddrinfo: Name or service not known

    解决办法:服务器端没有配置hosts域名绑定,在hosts中添加。

    3.  连接master的时候出现如下报错:

    warning: peer certificate won't be verified in this SSL session

    解决办法:服务端还没有返回签发证书,使用puppet cert --list查看

    4.  连接master的时候出现如下报错:

    err: Could not retrieve catalog from remote server: certificate verify failed

    解决办法:客户端和服务器端时间不同步,SSL连接需要依赖主机上的时间是否正确。执行更新时间的命令:/sbin/ntpdate asia.pool.ntp.org

    --------------------------------------------------------------------

     资源

    常用的资源主要有以下几个:

    file:文件管理

    package:软件包管理

    service:系统服务管理

    cron:配置定期任务

    exec:运行shell命令

    (1)    file资源

    更详细资料,可参见:http://puppet.wikidot.com/file

    (2)    package资源

    更详细资料,可参见:http://puppet.wikidot.com/package

    (3)    service资源

    更详细资料,可参见:http://puppet.wikidot.com/srv

    (4)    exec资源

    更详细资料,可参见:http://puppet.wikidot.com/exec

    (5)    cron资源

    更详细资料,可参见:http://puppet.wikidot.com/cron

  • 相关阅读:
    MVC+EF 理解和实现仓储模式和工作单元模式 MVC+EF 理解和实现仓储
    ANDROID中BROADCASTRECEIVER的两种注册方式(静态和动态)详解
    企业微信通讯录组件一个机制
    linq查询DataTable中的某列去重数据
    C# 判断文件流类型
    js中使用settimeout的问题
    一个做流程的开源库
    javascript判断两个日期是否相等
    开发小贴士
    zepto.js与jquery.js
  • 原文地址:https://www.cnblogs.com/zhaozhenguo666/p/5512788.html
Copyright © 2020-2023  润新知