`
7shao
  • 浏览: 50949 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

puppet详细安装

阅读更多
puppet详细安装
首先要确定服务器端和客户端都安装了
gcc-c++、openssl、openssl-devel
cronte -e
*/2  *    *    *    *   /usr/sbin/ntpdate clock.nc.fukuoka-u.ac.jp >/dev/null 2>&1


rpm -Uvh http://mirrors.sohu.com/fedora-epel/5Server/x86_64/epel-release-5-4.noarch.rpm
yum -y install mysql* ruby-mysql ruby ruby-devel ruby-irb ruby-rdoc ruby-ri
查看版本ruby -v
cd /usr/local/src/
wget http://puppetlabs.com/downloads/facter/facter-latest.tgz
tar -zxvf facter-latest.tgz && cd facter-1.6.6
ruby install.rb
服务器端安装puppet-server

rpm -Uvh http://mirrors.sohu.com/fedora-epel/5Server/x86_64/epel-release-5-4.noarch.rpm
yum install puppet-server
vi /etc/hosts
192.168.1.231     server.cbcv.net      server
192.168.1.232     client.cbcv.net      client
vi /etc/sysconfig/network
HOSTNAME=server.cbcv.net

service puppetmaster start
时间需要同步
/usr/sbin/ntpdate clock.nc.fukuoka-u.ac.jp



客户端
rpm –Uvh http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
yum install puppet









puppetd --server server.cbcv.net --test

服务端:
[root@server ~]# md5sum /var/lib/puppet/ssl/ca/signed/client.puppet.com.pem
f833cbbd129456d3e4df5daec0b612b8 /var/lib/puppet/ssl/ca/signed/client.puppet.com.pem
客户端:
[root@client ~]# md5sum /var/lib/puppet/ssl/certs/client.puppet.com.pem
f833cbbd129456d3e4df5daec0b612b8 /var/lib/puppet/ssl/certs/client.puppet.com.pem
上边揭黑部分的两串代码相同,说明客户端和服务端的认证签名完成。
注意:
如果想重新生成签名可以先在服务端用puppetca –clean client.puppet.com清除服务端的证书,然后在客户端删除/var/lib/puppet这个文件夹,删除之后再认证的话可以重新生成这个文件夹
在主服务器上/etc/puppet/manifests

vi /etc/puppet/manifests/site.pp
node default{
   file { "/tmp/tmp1.txt":
           content=> "hello, first puppet manifest";
}
}


然后在客户端执行:
puppetd --test --server server.cbcv.net
再查看/tmp/看是否生成tmp1.txt






1、puppet 用户管理特性
allows_duplicates: 支持同样的用户拥有同样的uid
manages_homedir: 管理用户的home目录,删除和新建
manages_passwords: 管理用户密码
manages_solaris_rbac: 管理角色和普通用户
puppet 用户资源管理参数
allowdupe: 是否允许相同的uid用户存在,可以设置的值为true或者false.
auths:  指定用户的认证方式。多个认证方式可用数组列出来
comment: 用户的描述。
ensure: 指定用户是否存在,可以设置的值为present,absent,role.
gid :用户的组ID。
groups:指定该用户属于那些组的成员.
home: 用户的主目录。
managehome: 指定用户是否管理home主目录.
provider
指定用provider,用什么命令来执行用户操作,可用的provider有:
directoryservice OS X 上面的用户管理命令,不详述,有需求请参考原文档
hpuxuseradd hp-ux 系统的用户管理命令
ldap ldap方式管理用户
pw freebsd上面的用户管理
user_role_add solaris 上面的用户管理
useradd linux上面的用户管理







puppet和facter下载地址:


http://downloads.puppetlabs.com/puppet/
ruby下载地址:

http://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7.tar.gz

环境准备:
[root@server bin]# more /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
#127.0.0.1              localhost.localdomain localhost
::1             localhost6.localdomain6 localhost6
192.168.1.231      server.cbcv.net        server
192.168.1.232      client.cbcv.net        client
[root@server bin]# more /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=server.cbcv.net

<客户端也是类似一样,略......>



tar -zxvf ruby-1.8.7.tar.gz
cd ruby-1.8.7
./configure --prefix=/usr/local/ruby
make
make install
操作系统PATH路径:
export PATH=/usr/local/ruby/bin:$PATH

查看ruby --version版本

安装facter
tar -zxvf facter-1.6.7.tar.gz
cd facter-1.6.7            
ruby install.rb

安装puppet
tar -zxvf puppet-2.7.13.tar.gz
[root@server puppet-2.7.9]# cp conf/auth.conf /etc/puppet/
[root@server puppet-2.7.9]# cp conf/namespaceauth.conf /etc/puppet/
[root@server puppet-2.7.9]# cp conf/redhat/puppet.conf /etc/puppet/
[root@server puppet-2.7.9]# cp conf/redhat/server.init /etc/init.d/puppetmaster
[root@server puppet-2.7.9]# chmod +x /etc/init.d/puppetmaster
[root@server puppet-2.7.9]# /etc/init.d/puppetmaster start
Starting puppetmaster: /bin/bash: /usr/sbin/puppetmasterd: No such file or directory
                                                           [FAILED]
  
[root@server puppet-2.7.9]# cp sbin/puppetmasterd /usr/sbin/
[root@server puppet-2.7.9]# chmod -R 777 /usr/sbin/puppetmasterd
[root@server puppet-2.7.9]# cp sbin/puppetmasterd /bin/puppetmasterd
[root@server puppet-2.7.9]# chmod -R 777 /bin/puppetmasterd
[root@server puppet-2.7.9]# /etc/init.d/puppetmaster start         
Starting puppetmaster: /usr/bin/env: ruby: No such file or directory
                                                           [FAILED]
[root@server puppet-2.7.9]# ln -s /usr/local/ruby/bin/
erb         filebucket  pi          puppetdoc   rdoc        ruby       
facter      irb         puppet      ralsh       ri          testrb     
[root@server puppet-2.7.9]# ln -s /usr/local/ruby/bin/ruby /usr/bin/
[root@server puppet-2.7.9]# /etc/init.d/puppetmaster start         
Starting puppetmaster: Could not prepare for execution: Got 6 failure(s) while initializing: change from absent to directory failed: Could not set 'directory on ensure: Could not find group puppet; change from absent to directory failed: Could not set 'directory on ensure: Could not find group puppet; change from absent to directory failed: Could not set 'directory on ensure: Could not find group puppet; change from absent to directory failed: Could not set 'directory on ensure: Could not find group puppet; change from absent to directory failed: Could not set 'directory on ensure: Could not find group puppet; change from absent to directory failed: Could not set 'directory on ensure: Could not find group puppet
                                                           [FAILED]
[root@server puppet-2.7.9]# useradd puppet
[root@server puppet-2.7.9]# /etc/init.d/puppetmaster start
Starting puppetmaster:                                     [  OK  ]

[root@server sbin]# pwd
/usr/local/src/puppet-2.7.9/sbin
cp -r * /usr/sbin/



[root@server manifests]# chkconfig --add puppetmaster
[root@server manifests]# chkconfig puppetmaster on





客户端其它安装和服务器安装相同,除了用cp conf/redhat/client.init /etc/init.d/puppet
[root@localhost puppet-2.7.9]# cp conf/auth.conf /etc/puppet/
[root@localhost puppet-2.7.9]# cp conf/namespaceauth.conf /etc/puppet/
[root@localhost puppet-2.7.9]# cp conf/redhat/puppet.conf /etc/puppet/
[root@localhost puppet-2.7.9]# cp conf/redhat/client.init /etc/init.d/puppet
[root@localhost puppet-2.7.9]# chmod +x /etc/init.d/puppet
[root@localhost puppet-2.7.9]# service puppet start
Starting puppet: /bin/bash: /usr/sbin/puppetd: No such file or directory
                                                           [FAILED]
[root@localhost puppet-2.7.9]# cp sbin/puppetd /usr/sbin/puppetd
[root@localhost puppet-2.7.9]# service puppet start            
Starting puppet: /usr/bin/env: ruby: No such file or directory
                                                           [FAILED]
[root@localhost puppet-2.7.9]# chmod +x /usr/sbin/puppetd
[root@localhost puppet-2.7.9]# service puppet start      
Starting puppet: /usr/bin/env: ruby: No such file or directory
                                                           [FAILED]
[root@localhost puppet-2.7.9]# ln -s /usr/local/ruby/bin/ruby /usr/bin/
[root@localhost puppet-2.7.9]# /etc/init.d/puppet start
Starting puppet:                                           [  OK  ]




进行测试:
在服务器端执行:
puppetca --list
应该是无
在客户端执行 puppetd --server server.cbcv.net  --test
再到服务器端执行:
puppetca –s client.cbcv.net
clinet.cbcv.net (BF:5D:58:D0:F2:06:8C:FB:5C:AA:08:80:87:DC:92:20)

如果看到了客户端的证书请求,
针对客户端请求为
puppetca –s client.cbcv.net
用下面的命令对所有证书请求签名:
puppetca -s –a

在主服务器上/etc/puppet/manifests

vi /etc/puppet/manifests/site.pp
node default{
   file { "/tmp/test.txt":
           content=> "hello, Test";
}
}

再重启一下服务器service puppetmaster restart 和客户端service puppet restart
再执行puppetd --server server.cbcv.net  --test
看/tmp下面是不是有test.txt文件了


2、文件传输








默认时间vim /etc/puppet/puppet.con
server = puppet-server #指定服务端

runinterval =1800 ###默认是30分钟,可以修改此处的值,单位为秒
在客户端修改即可!最好重启一下server puppet restart

puppet 如何全客户端自动签名
a.vim /etc/puppet/puppet.conf
[puppetmaster]
autosign=true      #增加这两行
autosing=/etc/puppet/autosign.conf 
#增加这两行添加
* 表示所有,或者添加域名,IP或者网段。举例:
b.再编辑 /etc/puppet/autosign.conf**.test.com192.168.0.1/24




错误总结<此错误是因为用了yum去安装。看到别人写的OK......>:
第一次认证的时候报下边的错误:
[root@client ~]# puppetd --server server.cbcv.net  --test
err: Could not retrieve catalog from remote server: certificate verify failed
我做测试发现的原因有三种:
第一:是hostname没有设置好,在安装前一定要把hostname设置好,设置好之后尽量重启机器。实在不行就删了重新安装。
第二:时间不同步,时间不同步也会报认证失败的错误,可以用date设置时间,只要不是差得太多就没事。
第三:是ssl的问题,在你用的这个客户端puppet已经做过其他的机器的客户端的情况下,因为已经生成的有证书,可能会和现在的冲突,把/var/lib/puppet/ssl这个文件夹删掉之后就行了。


1.3配置c/s模式的puppet的实验环境
Puppet的的客户端和服务端是靠ssl链接的,在服务端有一个自签名的根证书,在安装软件的时候自动生成。每个客户端的证书要经过根证书签名才能和服务器连接。所以首先要在客户端执行下面的命令来请求服务器签名证书。
puppetd --server server.cbcv.net --test


执行上面的命令,客户端将生成证书,并且把证书签名请求发到服务器端。登录到服务
器端,执行下面的命令查看是否有客户端的证书请求:
puppetca --list 这个查看没有签名的证书
client..cbcv.net
如果看到了客户端的证书请求,用下面的命令对所有证书请求签名:
puppetca –s client.cbcv.net
或者puppetca -s –a 这条命令是对所有为签名的请求签名。
签过名之后可以看到:
[root@server ~]# puppetca --list --all
puppetca --list --all
+ client.cbcv.net (A1:6C:15:FF:36:8C:F0:9A:89:BA:E1:2B:39:34:5C:3A)
+ server.cbcv.net  (75:66:8E:DD:F0:A4:F2:ED:6F:B0:88:74:A0:CD:C8:48)

如果出现这些就说明签名完成。



















puppet记录
1.       修改文件属性的site.pp
file { "/home/1.txt":
       owner => "root",
       group => "root",
       mode  => 644,
}
2.执行shell命令
exec { "echo111":
cwd => "/tmp",
command => " echo abcd >> /home/1.txt",
user => "root",
path => "/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin",
}

3.文件传输
需要有fileserver.conf例如
[abc]
path /etc/puppet/files/
allow *
其中 site.pp的设置如下
file { "/home/test.txt":
        source  => "puppet://puppet/abc/test.txt",
        }
此处的abc为fileserver.conf中定义模块
其前面的蓝色部分是puppet server端的名称(在hosts中解析,未使用DNS)

4.服务检查及修改
可以通过puppet对一些服务进行检查。puppet是通过service命令操作的。所以,只能针对在/etc/init.d/目录下的服务
site.pp的配置示例
service {  portmap:
ensure => "stopped",
}
ensure 还有一个参数是 running 如果服务停止,puppet会让服务启动。

puppet.conf
[puppetmasterd]
        reports = store
        hostprivkey = /etc/puppet/ssl/private_keys/sh-zj1.tele.trac.i.vmx.cn.pem
        hostcsr = /etc/puppet/ssl/csr_sh-zj1.tele.trac.i.vmx.cn.pem
        hostpubkey = /etc/puppet/ssl/public_keys/sh-zj1.tele.trac.i.vmx.cn.pem
        hostcert = /etc/puppet/ssl/certs/sh-zj1.tele.trac.i.vmx.cn.pem
        autosign = true


5.cron
cron { "test1":    #title部分,可用来作为注释。
ensure     => absent,   #删除相应的crontab
command => "( /bin/echo 123 >/home/lipengfei/abc )",   #要执行的命令
user => "root",       #添加到root用户下的crontab中
minute     => "*/3",        #即第一个星号
hour => ['2-4'],                    #即第二个星号
monthday => "21",        #即第三个星号
month     => "12",         #即第四个星号
weekday  => "2",           #即第五个星号
}
说明:absent 选项可以支持 cron中的5个时间位置,如:monthday => absent,
即把 monthday 对应该的位置至为 *



增加多个site.pp

可以先在site.pp中增加

import "test.pp"

然后再在里面执行需要操作的内容。

可用puppetd --server server.cbcv.net  --test进行测试。

如果有报错:notice: Ignoring --listen on onetime run
notice: Skipping run of Puppet configuration client; administratively disabled; use 'puppet Puppet configuration client --enable' to re-enable.

那么需要在客户端执行puppet agent --enable即可。

puppet agent --disable为关闭。







资源:
常用的资源主要有以下几个:
file:文件管理
package:软件包管理
service:系统服务管理
cron:配置定时任务
exec:运行shell命令
定义一个资源,需要指定资源的类型和title。看下例:


file { “/etc/password”: name => “/etc/passwd”, owner => root, group => root, mode => 644; } 上边代码:file是指定资源的类型,第二行的”/etc/password”是资源的title,title的作用是让puppet能唯一识别这个资源。后边的三个就不用说了。 下一个例子:

file { "/etc/ssh/sshd_config": mode => 0644, owner => root , group => root, source => puppet://$fileserver/ssh/sshd_config ", } Service { “sshd”: subscribe => File[/etc/sshd/sshdconfig], }

0
1
分享到:
评论

相关推荐

    puppet安装配置手册

    - **文档内容**:涵盖从环境准备到Puppet组件的详细安装,配置文件的编写,以及如何设置和运行Puppet Master和Agent。 - **读者对象**:适合IT系统管理员、DevOps工程师以及对Puppet感兴趣的任何人。 - **引用标准**...

    puppet服务端安装流程

    本文将详细介绍 Puppet 服务端的安装流程。 #### 二、安装必要的基础软件 在安装 Puppet 之前,首先需要确保服务器上安装了一些必要的基础软件包,包括 NTP(网络时间协议)、Cron、Wget、Vim Enhanced 和 Telnet ...

    puppet 入门,puppet 中文,puppet安装

    为了测试 Puppet 的客户端/服务器架构,需要在一台服务器上安装 Puppet Master,并在多台客户端机器上安装 Puppet Agent。配置步骤如下: 1. **安装 Puppet Master**: 在服务器上安装 Puppet Server: ```bash ...

    Puppet在集群上的安装与测试

    本文将详细解析如何在集群上安装与测试Puppet,基于给定的文件内容,我们将深入探讨每一个步骤背后的原理与实践。 ### 一、基础环境准备 #### 1. 安装NTP服务 - **命令行**:`Yum install ntp` - **启动NTP服务**...

    puppet安装配置.pdf

    接下来,我们详细讨论服务端和客户端的安装步骤: 1. **服务端安装**: - 安装Facter,它是Puppet获取客户端系统信息的组件。通过下载最新稳定版Facter源码并执行安装脚本来完成: ```bash # cd /usr/local/src ...

    Puppet 手势识别软件

    7. 帮助文档和用户指南:详细介绍如何使用 Puppet 软件,包括手势的设定和操作教程。 使用 Puppet,用户可以享受到更加自然、直观的计算机控制体验,尤其对于那些受限于传统输入设备或者有特殊需求(如身体障碍)的...

    puppet使用工具

    在介绍了Puppet的安装、配置和工作原理之后,下面详细解释各个部分的知识点。 一、Puppet入门介绍 Puppet作为自动化配置管理工具,其目的在于简化软件和硬件的配置过程。Puppet支持多种操作系统,如Linux、Windows...

    Pro.Puppet.pdf

    - **第2章:Building Hosts with Puppet**:详细介绍如何使用Puppet构建和配置主机,包括资源类型、依赖关系以及如何使用条件语句。 - **第3章:Working with Environments**:讲解Puppet如何管理不同环境下的配置,...

    puppet书籍

    Puppet的文档非常详细,为用户提供了全面的指导和支持。用户可以轻松地找到关于如何安装和使用Puppet的信息,包括各种使用经验分享、特性探讨以及Openstack部署方案分析等。即使如此,本文并不聚焦于这些内容,而是...

    puppet使用指南

    Puppet运行完成后,它会生成详细的报告,显示哪些资源已改变、成功或失败。这些报告有助于监控系统状态和故障排查。日志文件通常位于`/var/log/puppetlabs/puppetserver/puppetserver.log`和`/var/log/puppetlabs/...

    Puppet权威指南 PDF电子书下载 带书签目录 完整版

    书中详细讲解了Puppet的基础知识,包括安装与设置环境、Puppet的架构和组件、资源类型与属性、类和定义、节点分类与分发、模块化设计、Hiera数据层次化管理以及Puppet的运行周期和反馈机制。此外,还涵盖了Puppet在...

    一招教你使用puppet

    本文将详细介绍如何利用Puppet搭建一套完整的LAMP环境。 #### 二、准备工作:文件服务器的配置 在搭建LAMP环境之前,首先需要准备一个文件服务器来存放各种配置文件和软件包。具体步骤如下: 1. **配置YUM源** - ...

    ansible chef puppet saltstack介绍和比较

    - 需要在Master节点上安装Puppet Server,并在Agent节点上安装Puppet Agent。 - 可以通过官方文档中的指南进行安装。 **简单案例:** - 使用Puppet Manifests来配置Web服务器和数据库服务器。 **与Docker的关系:*...

    puppet-2.7.9

    6. **报告与日志**:Puppet提供详细的执行报告和日志,帮助管理员了解配置变更的过程和结果,以便于故障排查和审计。 7. **Facter**:Puppet自带的Facter工具用于收集系统信息,这些信息可供Puppet配置使用,如操作...

    puppet运维管理总结

    本文将详细介绍 Puppet 的运维管理工作流程、数据流向、原理,以及配置过程。 一、概述 1. 运维工作:运维是确保系统稳定运行的关键,涉及到服务器监控、性能优化、故障排查、软件更新等多个方面。手动处理这些...

    使用Puppet框架管理基础设施

    - **安装Puppet**:书中详细讲解了Puppet的安装流程,确保读者能够顺利地在自己的系统上部署Puppet环境。 - **Manifest语法**:介绍了Puppet的核心——manifest文件的编写规则,包括如何使用各种内置函数。 - **内置...

    Deploy Openstack With Puppet

    首先,要进行OpenStack的自动化部署,我们需要对Puppet的安装和使用有一定的了解。Puppet是一种基于Ruby的自动化配置管理工具,它允许系统管理员通过声明式的配置语言来定义IT基础设施的代码,从而实现系统配置的...

    puppet101:使用 puppet 从安装到生产的指南

    "puppet101:使用 puppet 从安装到生产的指南"旨在帮助初学者了解并掌握 Puppet 的基本概念、安装过程以及如何在实际生产环境中运用。在这个指南中,我们将深入探讨 Puppet 的核心特性,包括其工作原理、模块化设计、...

Global site tag (gtag.js) - Google Analytics