文档章节

puppet集中配置管理系统

benberba
 benberba
发布于 2015/08/18 23:53
字数 3582
阅读 4313
收藏 88

puppet 是一个配置管理工具典型的, puppet 是一个 C/S 结构当然,这里的 可以有很多,

,也可以说是一个星型结构所有的 puppet 客户端同一个服务器端的 puppet 通讯每个

puppet 客户端每半小时(可以设置)连接一次服务器端下载最新的配置文件,并且严格按照配

置文件来配置服务器配置完成以后,puppet 客户端可以反馈给服务器端一个消息如果出错,

也会给服务器端反馈一个消息下图展示了一个典型的 puppet 配置的数据流动情况.

稳定性puppet 与其他手工操作工具有一个最大的区别就是 puppet 的配置具有稳定性,因此你可以多次执行 puppet, 一旦你更新了你的配置文件,puppet 就会根据配置文件来更改你的机配置,通常每 30 分钟检查一次. puppet 会让你的系统状态同配置文件所要求的状态保持一致比如你配置文件里面要求 ssh 服务必须开启假如不小心 ssh 服务被关闭了,那么下一次执行 puppet 

时候,puppet 会发现这个异常,然后会开启 ssh 服务以使系统状态和配置文件保持一

.puppet 就象一个魔术师,会让你的混乱的系统收敛到 puppet 配置文件所想要的状态.

可以使用 puppet 管理服务器的整个生命周期,从初始化到退役.不同于传统的例如 sun 

Jumpstart 或者 redhat 的 Kickstart, puppet 可以长年让服务器保持最新状态.只要一开始就正

确的配置他们,然后再也不用去管他们.通常 puppet 用户只需要给机器安装好 puppet 并让他们

运行,然后剩余的工作都由 puppet 来完成.

 

puppet 的细节和原理

1. 客户端 Puppetd 向 Master 发起认证请求,或使用带签名的证书。

2. Master 告诉 Client 你是合法的。

3. 客户端 Puppetd 调用 Facter,Facter 探测出主机的一些变量,例如主机名、内存大小、IP 地址

等。Puppetd 将这些信息通过 SSL 连接发送到服务器端。

4. 服务器端的 Puppet Master 检测客户端的主机名,然后找到 manifest 对应的 node 配置,并对该部分内容进行解析。Facter 送过来的信息可以作为变量处 理,node 牵涉到的代码才解析,其他没牵涉的代码不解析。解析分为几个阶段,首先是语法检查,如果语法错误就报错;如果语法没错,就继续解析,解析的结 果生成一个中间的“伪代码”(catelog),然后把伪代码发给客户端。

5. 客户端接收到“伪代码”,并且执行。

6. 服务器端把客户端的执行结果写入日志,并发送给报告系统。

 

详细配置过程:

系统环境:rhel6.5 selinux and iptables disabled

sever: 172.25.254.1 vm1.example.com puppet master

client:172.25.254.2 vm2.example.com puppet agent

client:172.25.254.3 vm3.example.com puppet agent

重要:server 与所有 client 之间需要解析,以及时间同步,不然会验证失败。

 

server :

puppetmaster的安装:

a.如果主机能上网

# yum localinstall -y rubygems-1.3.7-1.el6.noarch.rpm

把以下条目加入 yum 仓库:

[puppet]

name=puppet

baseurl=http://yum.puppetlabs.com/el/6Server/products/x86_64/

gpgcheck=0

[ruby]

name=ruby

baseurl=http://yum.puppetlabs.com/el/6Server/dependencies/x86_64/

gpgcheck=0

# yum install puppet-server -y

 

b.如果主机不能上网

需呀下载以下安装包:

[root@vm1 update]# ls

facter-2.4.4-1.el6.x86_64.rpm             ruby-augeas-0.4.1-3.el6.x86_64.rpm

hiera-1.3.4-1.el6.noarch.rpm              rubygem-json-1.5.5-3.el6.x86_64.rpm

puppet-3.8.1-1.el6.noarch.rpm             rubygems-1.3.7-5.el6.noarch.rpm

puppet-dashboard-1.2.23-1.el6.noarch.rpm  ruby-shadow-2.2.0-2.el6.x86_64.rpm

puppet-server-3.8.1-1.el6.noarch.rpm

 

[root@vm1 update]# yum localinstall -y puppet-server-3.8.1-1.el6.noarch.rpm puppet-3.8.1-1.el6.noarch.rpm facter-2.4.4-1.el6.x86_64.rpm hiera-1.3.4-1.el6.noarch.rpm  rubygem-json-1.5.5-3.el6.x86_64.rpm ruby*

 

/etc/puppet 配置目录:

组织结构如下:

|-- puppet.conf #主配置配置文件,详细内容可执行 puppet --genconfig

|-- fileserver.conf #文件服务器配置文件

|-- auth.conf #认证配置文件

|-- autosign.conf #自动验证配置文件

|-- tagmail.conf #邮件配置文件(将错误信息发送)

|-- manifests #文件存储目录(puppet 会先读取该目录的.PP 文件<site.pp>)

    |--nodes

        | puppetclient.pp

    |-- site.pp #定义 puppet 相关的变量和默认配置。

    |-- modules.pp #加载 class 类模块文件(include syslog)

|-- modules #定义模块

    |-- syslog #以 syslog 为例

    |-- file

    |-- manifests

        |-- init.pp #class 类配置

    |-- templates #模块配置目录

        |-- syslog.erb #erb 模板

     

    puppet 的第一个执行的代码是在/etc/puppet/manifest/site.pp,因此这个文件必须存在,

    且其他的代码也要通过该文件来调用。

     

    [root@vm1 puppet]# touch /etc/puppet/manifest/site.pp #没有此文件 puppet master 无法启动,配置后面再定义

    [root@vm1 puppet]# service puppetmaster start #启动 puppet master

    [root@vm1 puppet]# netstat -antlp |grep ruby

    tcp        0      0 0.0.0.0:8140                0.0.0.0:*                   LISTEN      1863/ruby           

     

    client :

    只要安装 puppet 即可,安装方法同 server :

    a.

    # yum install puppet -y

    b.

    [root@vm2 ~]# yum localinstall -y puppet-3.8.1-1.el6.noarch.rpm puppet-3.8.1-1.el6.noarch.rpm facter-2.4.4-1.el6.x86_64.rpm hiera-1.3.4-1.el6.noarch.rpm  rubygem-json-1.5.5-3.el6.x86_64.rpm ruby*

     

    puppet 客户端连接到 puppet master:

    [root@vm2 ~]# puppet agent --server vm1.example.com --no-daemonize --verbose

    Info: Creating a new SSL key for vm2.example.com

    Info: Caching certificate for ca

    Info: Creating a new SSL certificate request for vm2.example.com

    Info: Certificate Request fingerprint (SHA256):

    5C:72:77:D8:27:DF:5A:DF:34:EF:25:97:5A:CF:25:29:9F:58:83:A2:61:57:D9:20:7B:1E:C0:36:75:9D:

    FB:FC

    client 向 master 发出证书验证请求,然后等待 master 签名并返回证书。

    参数--server 指定了需要连接的 puppet master 的名字或是地址,默认连接名为“puppet”的主机

    如要修改默认连接主机可以修改/etc/sysconfig/puppet 文件中的 PUPPET_SERVER=puppet 选项

    参数--no-daemonize 是 puppet 客户端运行在前台

    参数--verbose 使客户端输出详细的日志

     

    在 master :

    [root@vm1 puppet]# puppet cert list #显示所有等待签名的证书

    "vm2.example.com" (SHA256)

    CD:BD:13:D0:B8:46:07:F2:B7:AE:00:C4:E6:E9:E1:A4:92:F6:A4:F1:AB:F7:FF:8D:BE:B0:B7:90:E1:

    7B:A8:C0

    [root@vm1 puppet]# puppet cert sign vm2.example.com #签名证书

    Signed certificate request for vm2.example.com

    Removing file Puppet::SSL::CertificateRequest vm2.example.com at

    '/var/lib/puppet/ssl/ca/requests/vm2.example.com.pem'

    如要同时签名所有证书,执行以下命令:

    [root@vm1 puppet]# puppet cert sign --all

     

    [root@vm1 puppet]# puppet cert clean vm2.example.com #删除签名证书

     

    在对证书签名后的两分钟后,在 agent 端上可以看到如下输出:

    Info: Caching certificate for vm2.example.com

    Starting Puppet client version 3.0.0

    Info: Caching certificate_revocation_list for ca

    Info: Retrieving plugin

    Info: Caching catalog for vm2.example.com

    Info: Applying configuration version '1349536603'

    Finished catalog run in 0.13 seconds

     

    自动验证:

    在 server 编辑 puppet.conf 文件:

    [root@vm1 puppet]# vim /etc/puppet/puppet.conf

    [main]

    autosign = true

    #允许所有客户端的认证

     

    /etc/puppet 目录下创建 autosign.conf 文件,内容如下:

    # vim /etc/puppet/autosign.conf

    *.example.com #表示允许所有 example.com 域的主机

    [root@vm1 puppet]# service puppetmaster reload

     

    在 client 端只需执行:

    # puppet agent 或 # server puppet start

     

    在实际中有时会修改 client 端的主机名,这样就需要重新生成证书:

    1)在 server 端执行:puppet cert --clean vm2.example.com #你要删除的原 client 端主机名

    2)在 client 端执行:rm -fr /var/lib/puppet/ssl/*

    3)puppet agent --server vm1.example.com --no-daemonize --verbose

     

    puppet 资源定义

    以下资源均定义在/etc/puppet/manifest/site.pp 文件中,在没有指定节点的情况下,对所有

    已经经过验证的 client 都生效。

    1. 创建文件

    [root@vm1 puppet]# vim /etc/puppet/fileserver.conf 加入以下行:

    [files]

    path /etc/puppet/files

    allow *.example.com

     

    [root@vm1 puppet]# service puppetmaster reload #重启服务

     

    [root@vm1 manifests]# vim site.pp 

    file { "/mnt/testfile":   #/mnt下创建testfile文件 

            source => "puppet:///files/passwd" #来源:server/etc/puppet/files/passwd

    source => "/etc/passwd"  #来源:client/etc/passwd

    }

     

    2. 软件包定义

    package { "httpd": ensure => present;  #安装httpd

    "vsftpd": ensure => absent     #卸载vsftpd

    }

     

    3. 服务定义

    service { "httpd": ensure => running; #启动httpd

    "vsftpd": ensure => stopped #关闭vsftpd

    }

     

    4. 组定义

    group { "wonder": gid => 600 }

     

    5. 用户定义

    user { "wonder": #创建wonder用户

            uid => 600,

            gid => 600,

            home => "/home/wonder",

            shell => "/bin/bash",

            password => westos

            }

     

    file { "/home/wonder":

            owner => wonder,

            group => wonder,

            mode  => 700,

            ensure => directory

            }

     

    file { "/home/wonder/.bash_profile":

            source => "/etc/skel/.bash_profile",

            owner => wonder,

            group => wonder

            }

     

    file { "/home/wonder/.bashrc":

            source => "/etc/skel/.bashrc",

            owner => wonder,

            group => wonder

            }

     

     

    user { "test": uid => 900,  #创建test用户

    home => "/home/test",

    shell => "/bin/bash",

    provider => useradd,

    managehome => true,

    ensure => present

    }

    exec { "echo westos | passwd --stdin test":

    path => "/usr/bin:/usr/sbin:/bin",

    onlyif => "id test"

    }

     

    6. 文件系统挂载

    mount { "/mnt":  #172.25.254.252主机需要开启nfs服务

           device => "172.25.254.252:/var/ftp/pub",

           fstype => "nfs",

           options => "defaults",

           ensure => absent

    }

    自动挂载文件系统,并同步 fstab 文件,如果需要卸载,改为 absent

     

    7. crontab 任务

    cron { echo:  #2点到4点每隔10分钟,把时间导入/tmp/echo

           command => "/bin/echo `/bin/date` >> /tmp/echo",

           user => root,

           hour => ['2-4'],

           minute => '*/10'

    }

    任务会在 client /var/spool/cron 目录中生成

     

    不同节点的定义:

    1. 在 puppetmaster 上编辑 site.pp

     

    [root@vm1 puppet]# vim /etc/puppet/manifests/site.pp #写上

     import "nodes/*.pp"

    2. 建立节点文件

    [root@vm1 puppet]#vim /etc/puppet/manifests/nodes/vm2.pp

    node 'vm2' {   

    package { "httpd": ensure=>present}

    }

     

    [root@vm1 puppet]#vim /etc/puppet/manifests/nodes/vm3.pp

    node 'vm3' {

            user { "test": uid => 900,

            home => "/home/test",

            shell => "/bin/bash",

            provider => useradd,

            managehome => true,

            ensure => present

            }

            exec { "echo westos | passwd --stdin test":

            path => "/usr/bin:/usr/sbin:/bin",

            onlyif => "id test"

            }

    }

     

    编写模块:

    [root@vm1 puppet]# mkdir -p /etc/puppet/modules/httpd/{files,manifests,templates}

    [root@vm1 puppet]# cd /etc/puppet/modules/httpd/manifests

    [root@vm1 manifests]# vim install.pp 

    class httpd::install {

            package { "httpd":

            ensure => present

            }

    }

    [root@vm1 manifests]# vim config.pp 

    class httpd::config {

            file { "/etc/httpd/conf/httpd.conf":

            ensure => present,

            source => "puppet:///modules/httpd/httpd.conf",

            #实际路径在/etc/puppet/modules/httpd/files/httpd.conf

            require => Class["httpd::install"],

            notify => Class["httpd::service"]

            }

    }

    [root@vm1 manifests]# vim service.pp 

    class httpd::service {

            service { "httpd":

            ensure => running,

            require => Class["httpd::install","httpd::config"]

            }

            file { "/var/www/html/index.html":  #添加web主页

            source => "puppet:///files/index.html"

            }

    }

    [root@vm1 manifests]# vim init.pp 

    class httpd {

     

            include httpd::install,httpd::config,httpd::service

    }

     

    [root@vm1 manifests]# vim /etc/puppet/manifests/nodes/vm2.pp

    node 'vm2' {

    include httpd

    }

     

    [root@vm1 manifests]# service puppetmaster reload

     

    模板应用(添加虚拟主机配置):

    文件存放在 templates 目录中,*.erb 结尾。

     

    [root@vm1 manifests]# vim /etc/puppet/modules/httpd/manifests/init.pp  #添加以下行

    define httpd::vhost($domainname) {

    #file { "/etc/httpd/conf/httpd.conf":

    #

    content => template("httpd/httpd.conf.erb")

    #}

    file { "/etc/httpd/conf.d/${domainname}_vhost.conf":

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

    require => Class["httpd::install"],

    notify => Class["httpd::service"]

     

    }

    file { "/var/www/$domainname":

    ensure => directory

    }

    file { "/var/www/$domainname/index.html":

    content => $domainname

    }

    }

     

    [root@vm1 manifests]# vim /etc/puppet/modules/httpd/templates/httpd_vhost.conf.erb

    <VirtualHost *:80>

    ServerName <%= domainname %>

    DocumentRoot /var/www/<%= domainname %>

    ErrorLog logs/<%= domainname %>_error.log

    CustomLog logs/<%= domainname %>_access.log common

    </VirtualHost>

     

    [root@vm1 manifests]# vi /etc/puppet/manifests/nodes/vm2.pp

    node 'vm2' {

    include httpd

    httpd::vhost { 'server2.example.com':

    domainname => "server2.example.com",

    }

    }

     

    Puppet dashboard 安装 (用以 web 方式管理 puppet)

    依赖性:

    * Ruby 1.8.7

    * RubyGems

    * Rake >= 0.8.3

    * MySQL server 5.x

    * Ruby-MySQL bindings 2.7.x or 2.8.x

    所需安装包 puppet-dashboard-1.2.12-1.el6.noarch.rpm rubygem-rake-0.8.7-2.1.el6.noarch.rpm ruby-mysql-2.8.2-1.el6.x86_64.rpm

     

    [root@vm1 manifests]# yum localinstall -y puppet-dashboard-1.2.12-1.el6.noarch.rpm rubygem-rake-0.8.7-2.1.el6.noarch.rpm ruby-mysql-2.8.2-1.el6.x86_64.rpm

    [root@vm1 manifests]# yum install -y mysql mysql-server

    [root@vm1 manifests]# /etc/init.d/mysqld start

    配置 mysql 数据库:

    mysql> CREATE DATABASE dashboard_production CHARACTER SET utf8;

    Query OK, 1 row affected (0.00 sec)

    mysql> CREATE USER 'dashboard'@'localhost' IDENTIFIED BY 'westos';

    Query OK, 0 rows affected (0.01 sec)

    mysql> GRANT ALL PRIVILEGES ON dashboard_production.* TO 'dashboard'@'localhost';

    Query OK, 0 rows affected (0.00 sec)

    mysql>

     

    # cd /usr/share/puppet-dashboard/

     

    [root@vm1 puppet-dashboard]# vim config/database.yml #只留下生产环境配置

    production:

    database: dashboard_production

    username: dashboard

    password: westos

    encoding: utf8

    adapter: mysql

     

    [root@vm1 puppet-dashboard]# rake RAILS_ENV=production db:migrate

    #建立 dashboard 所需的数据库和表

     

    puppet-dashboard 默认时区不正确,需要修改:

    [root@vm1 puppet-dashboard]# vim /usr/share/puppet-dashboard/config/settings.yml

    time_zone: 'Beijing'

     

    启动服务:

    [root@vm1 puppet-dashboard]# service puppet-dashboard start

    Starting Puppet Dashboard: => Booting WEBrick

    => Rails 2.3.14 application starting on http://0.0.0.0:3000

    [ OK ]

     

    [root@vm1 puppet-dashboard]# chmod 0666 /usr/share/puppet-dashboard/log/production.log

     

    [root@vm1 puppet-dashboard]# service puppet-dashboard-workers start

     

    实时报告汇总:

    设置 server :

    root@vm1 ~]# vim /etc/puppet/puppet.conf

    [main]

    #添加以下两项

    reports = http

    reporturl = http://172.25.254.1:3000/reports

     

    root@vm1 ~]# service puppetmaster reload

     

    设置 client :

    [root@vm1 puppet-dashboard]# vim /etc/puppet/puppet.conf #添加以下行

    [agent]

    report = true

     

    [root@vm1 puppet-dashboard]# service puppet reload

     

    在客户端安装完 puppet ,并且认证完后,我们可以看到效果,那怎样让它自动与服务器同步

    ?默认多少分钟跟服务器同步呢?怎样修改同步的时间呢,这时候我们需要配置客户端:

    (1) 配置 puppet 相关参数和同步时间:

    [root@vm2 ~]# vim /etc/sysconfig/puppet

    PUPPET_SERVER=puppet.example.com #puppet master 的地址

    PUPPET_PORT=8140 #puppet 监听端口

    PUPPET_LOG=/var/log/puppet/puppet.log #puppet 本地日志

    #PUPPET_EXTRA_OPTS=--waitforcert=500 【默认同步的时间,我这里不修改这行参数】

    (2) 默认配置完毕后,客户端会半个小时跟服务器同步一次,我们可以修改这个时间。

    [root@vm2 ~]# vim /etc/puppet/puppet.conf

    [agent]

    runinterval = 60 #代表 60 秒跟服务器同步一次

    [root@vm2 ~]# service puppet reload

     对puppet的优化 通过nginx +  passenger替换掉puppet的WEBRickHTTP,来处理HTTPS请求,并实现对puppet的负载均衡。

    实验步骤:
master 端需要能够连上外网
把以下条目加入 yum 仓库:
[puppet]
name=puppet
baseurl=http://yum.puppetlabs.com/el/6Server/products/x86_64/
gpgcheck=0
[ruby]
name=ruby
baseurl=http://yum.puppetlabs.com/el/6Server/dependencies/x86_64/
gpgcheck=0

# yum install -y gcc gcc-c++ curl-devel zlib-devel openssl-devel ruby-devel

# gem install rack passenger  ##次过程需要等待一段时间

# gem list

*** LOCAL GEMS ***

json (1.5.5)
passenger (5.0.15)
rack (1.6.4)
rake (10.4.2)

# passenger-config --root
/usr/lib/ruby/gems/1.8/gems/passenger-5.0.15

# ls /usr/lib/ruby/gems/1.8/gems/passenger-5.0.15/ext/
 apache2  boost  common  libev  libuv  nginx  oxt  ruby  #nginx 等许多支持

# passenger-install-nginx-module
脚本会自动安装 nginx 支持,按提示操作,基本就是一路回车。
 
nginx 默认安装在/opt/nginx 目录:
 
# vim /opt/nginx/conf/nginx.conf
  1 #user  nobody;
  2 worker_processes  4;
  3
  4 #error_log  logs/error.log;
  5 #error_log  logs/error.log  notice;
  6 #error_log  logs/error.log  info;
  7
  8 #pid        logs/nginx.pid;
  9
 10
 11 events {
 12     use epoll;
 13     worker_connections  1024;
 14 }   
 15
 16
 17 http {
 18     passenger_root /usr/lib/ruby/gems/1.8/gems/passenger-5.0.15;
 19     passenger_ruby /usr/bin/ruby;
 20     
 21     include       mime.types;
 22     default_type  application/octet-stream;
 23
 24     #log_format  main  '$remote_addr - $remote_user [$time_local] "$request"     '
 25     #                  '$status $body_bytes_sent "$http_referer" '
 26     #                  '"$http_user_agent" "$http_x_forwarded_for"';
 27
 28     #access_log  logs/access.log  main;
 29
 30     sendfile        on;
 31     tcp_nopush     on;
 32
 33     #keepalive_timeout  0;
 34     keepalive_timeout  65;
 35
 36     #gzip  on;
 37
 38     server {
 39     listen       8140;
 40     server_name  benberba.example.com;
 41     root    /etc/puppet/rack/public;
 42     passenger_enabled   on;
 43     passenger_set_header X_CLIENT_DN $ssl_client_s_dn;
 44     passenger_set_header X_CLIENT_VERIFY $ssl_client_verify;
 45     ssl     on;
 46     ssl_session_timeout 5m;
 47     ssl_certificate /var/lib/puppet/ssl/certs/vm1.example.com.pem;
 48     ssl_certificate_key /var/lib/puppet/ssl/private_keys/vm1.example.co    m.pem;
 49     ssl_client_certificate /var/lib/puppet/ssl/ca/ca_crt.pem;
 50     ssl_crl     /var/lib/puppet/ssl/ca/ca_crl.pem;
 51     ssl_verify_client optional;
 52     ssl_ciphers SSLv2:-LOW:-EXPORT:RC4+RSA;
 53     ssl_prefer_server_ciphers on;
 54     ssl_verify_depth    1;
 55     ssl_session_cache   shared:SSL:128m;
 56     }
 57 }

# mkdir /etc/puppet/rack/{public,tmp} -p
# cp /usr/share/puppet/ext/rack/config.ru /etc/puppet/rack/
# chown puppet.puppet /etc/puppet/rack/config.ru
# chkconfig puppetmaster off
# service puppetmaster stop
# /opt/nginx/sbin/nginx -t   #检测 nginx
# /opt/nginx/sbin/nginx      #启动 nginx
puppetmaster 不需要启动 , nginx 启动时会自动调用 puppet。

测试
master端
# netstat -antpl |grep 8140
tcp        0      0 0.0.0.0:8140                0.0.0.0:*                   LISTEN      4245/nginx    
# /etc/init.d/puppetmaster status
 puppet is stopped

client端
# puppet agent --server vm1.example.com --no-daemonize --verbose
Notice: Starting Puppet client version 3.8.1
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for vm2.example.com
Info: Applying configuration version '1440218993'
Notice: Finished catalog run in 0.21 seconds

    


















© 著作权归作者所有

benberba
粉丝 2
博文 6
码字总数 9932
作品 0
西安
私信 提问
加载中

评论(2)

今秋
今秋
看着有点乱
当朝宰相
当朝宰相
good article
一步一步学会puppet(一)--工作原理与资源

简介 puppet是一种Linux、Unix、windows平台的集中配置管理系统; 使用自有的puppet描述语言,可管理配置文件、用户、cron任务、软件包、系统服务等,puppet把这些系统实体称之为资源; pupp...

xxrenzhe11
2014/05/16
0
0
PUPPET集中配置(一)

PUPPET集中配置管理系统较之于其他管理工具具有稳定性,能够管理服务器的整个管理周期,并使其配置有条不紊,会让你的系统同配置要求保持一致。本次通过 C/S 架构的配置使用Puppet 自带的语言...

亚特璐
2017/02/11
0
0
puppet集中配置管理系统

参考:http://puppet.wikidot.com puppet是一个配置管理工具, 典型的, puppet是一个C/S结构, 当然,这里的C可以有很多,因此,也可以说是一个星型结构. 所有的puppet客户端同一个服务器端的pup...

OscerSong
2013/01/08
1K
1
集中管理服务器 PUPPET(一) 部署 与 添加节点

一.FAQ Q: puppet是什么? A: puppet英语原意是木偶,在这里,pupet指的是一个开源的管理软件.用于集中管理服务器.因为该软件管理服务器的方式类似于操纵木偶,所以软件的名字叫做puppet. Q:pup...

拜仁慕尼黑
2013/11/29
1K
1
企业是如何实现批量主机管理的?puppet集中配置管理系统现在企业用的多不?

企业是如何实现批量主机管理的?puppet集中配置管理系统现在企业用的多不?

OscerSong
2012/10/19
1K
1

没有更多内容

加载失败,请刷新页面

加载更多

VMware vSphere ESXi主机的访问控制

在vShpere中,访问ESXi主机的途径很多,如下: ESXi DCUI ESXi Shell ESXi SSH ESXi Host Client vCenter --> vSphere web client / vSphere Client VMware vSphere ESXi主机的访问控制,除了......

大别阿郎
21分钟前
3
0
大神讲解CGI、FastCGI和PHP-FPM关系图解

参考资料 概念了解:CGI,FastCGI,PHP-CGI与PHP-FPM:http://www.nowamagic.net/librarys/veda/detail/1319 php中fastcgi和php-fpm是什么东西:https://www.zybuluo.com/phper/note/50231 ......

网络小虾米
30分钟前
3
0
《DNS攻击防范科普系列3》 -如何保障 DNS 操作安全

引言 前两讲我们介绍了 DNS 相关的攻击类型,以及针对 DDoS 攻击的防范措施。这些都是更底层的知识,有同学就来问能否讲讲和我们的日常操作相关的知识点,今天我们就来说说和我们日常 DNS 操...

Mr_zebra
31分钟前
2
0
zk中ServerCnxn

实现接口Stats, Watcher 内部类 DisconnectReason CloseRequestException EndOfStreamException(流关闭) 属性 方法 getSessionTimeout 获取session失效时间 sendResponse 发送回复数据 se......

writeademo
36分钟前
3
0
如何将 Redis 用于微服务通信的事件存储

来源:Redislabs 作者:Martin Forstner 翻译:Kevin (公众号:中间件小哥) 以我的经验,将某些应用拆分成更小的、松耦合的、可协同工作的独立逻辑业务服务会更易于构建和维护。这些服务(也...

中间件小哥
39分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部