利用puppet自动给客户端安装httpd

本文参考了刘宇的《puppet实战》,并得到他的指导。在此,感谢刘宇。

前一篇文章提到,利用Puppet来给客户端自动生成在服务端定义好的文件。

我们这里继续引申,来从服务端定义客户端需要安装的软件。

这里我们以安装httpd举例。

在服务端,需要定义模块,我们定义一个httpd模块,名字就叫httpd。

目录结构如下:

puppet/
|-- auth.conf
|-- environments
|   `-- example_env
|       |-- README.environment
|       |-- manifests
|       `-- modules
|-- fileserver.conf
|-- manifests
|   |-- nodes
|   |   `-- cahou.linux.net.pp
|   `-- site.pp
|-- modules
|   |-- httpd
|   |   |-- files
|   |   |-- mainfests
|   |   |   `-- init.pp
|   |   `-- templates
|   `-- test
|       |-- files
|       |-- manifests
|       |   `-- init.pp
|       `-- templates
|           `-- test.erb
`-- puppet.conf

15 directories, 9 files

我们这样来建立目录和所需的配置文件:

来看看puppet客户端和服务端的交互过程:

  1. puppet客户端将节点名称和facts信息发送给master
  2. puppet服务端master通过分类判断请求的客户端是谁,它要做什么?这个判断依赖于site.pp中包含的node.pp配置文件完成
  3. puppet服务端将客户端所学的class信息编译到catalog里面去,并把它发送给客户端
  4. 客户端对catalog进行验证并执行
  5. 客户端通过api把执行结果回报给master

site.pp这个文件是指引去哪里寻找并加载所有主机相关的配置。

这个文件默认放在 /etc/puppet/mainfests中,在这个文件里面我们会定义一些全局变量。

而在site.pp里面可以引用其他模块定义的*.pp文件,以让文件结构显得清晰。

需要提供给客户端的配置信息可以任意定义,只要在site.pp里面import对应的配置文件即可。

我们采用的目录结构配置是:

/etc/puppet/manifests/nodes

/etc/puppet/modules

#下面我们建立了一个叫做test的模块和叫做cahou.linux.net的节点
mkdir  -p  /etc/puppet/manifests/nodes
mkdir  -p  /etc/puppet/modules/test/{mainfests,templates,files}
vi  /etc/puppet/modules/test/manifests/init.pp
class test
{
    file {  "/tmp/$hostname.txt": content =>  "hello,world 1234567890!\n"; }
}

#在上面的模块中配置了一个变量,叫做$hostname,这个变量需要传给ERB文件,这个文件就放在test类这个目录下的templates目录中,文件名与类名一致。

cat /etc/puppet/modules/test/templatest/test.erb 
hostname <% fqdn  %>

在上面的步骤里,我们已经创建了模块test,现在我们需要创建测试节点

cat /etc/puppet/manifests/nodes/cahou.linux.net.pp
node ‘cahou.linux.net‘ {
    include test
}

到此,节点信息、模块信息均已创建。

前面讲过,puppet会首先读取site.pp,我们需要让site.pp能导入节点信息和模块信息

vi  /etc/puppet/manifests/site.pp
cat site.pp 
Package {provider => "yum"}
node default { file { "/tmp/puppettest1.txt": content  =>  "hello,first puppet test1234567890!\n";}}
import "/etc/puppet/modules/httpd/mainfests/init.pp"
import  "/etc/puppet/manifests/nodes/*.pp"

至此,客户端可以来向服务端取信息了,我们可以采用模拟执行的方式,这样,可以看到是否能执行(但并不真正执行)

puppet agent  --server cahoa.linux.net  --test --verbose  --no-daemonize --noop
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for cahou.linux.net
Warning: The package type‘s allow_virtual parameter will be changing its default value from false to true in a future release. If you do not want to allow virtual packages, please explicitly set allow_virtual to false.
   (at /usr/lib/ruby/site_ruby/1.8/puppet/type/package.rb:430:in `default‘)
Info: Applying configuration version ‘1413640549‘
Notice: Finished catalog run in 0.38 seconds

上面的warning信息,我们暂且不理会,可以看到,已经取到配置信息了。

下面我们给它加个功能,让服务端给客户端安装httpd。

为此,我们要添加一个模块,

mkdir  -p  /etc/puppet/modules/httpd/{mainfests,templates,files}

编辑httpd模块文件,在里面指定yum源

cat /etc/puppet/modules/httpd/mainfests/init.pp 
class httpd {
yumrepo  
            { "reposohu":
                     descr    =>  "sohu repo",
                     baseurl  =>  "http://mirrors.sohu.com/centos/5.11/os/i386/",
                     gpgcheck =>  "0",
                     enabled  =>  "1";
             }

     package 
             {
                    "httpd":
                     ensure  =>   installed,
                     require =>   Yumrepo["reposohu"];
              }
}

修改节点信息,添加引用httpd模块:

cat /etc/puppet/manifests/nodes/cahou.linux.net.pp 
node ‘cahou.linux.net‘ {
    include test
    include httpd
}

至此,客户端可以通过向服务端同步信息来安装httpd了。

[[email protected] ~]# puppet agent  --server cahoa.linux.net  --test --no-daemonize
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for cahou.linux.net
Warning: The package type‘s allow_virtual parameter will be changing its default value from false to true in a future release. If you do not want to allow virtual packages, please explicitly set allow_virtual to false.
   (at /usr/lib/ruby/site_ruby/1.8/puppet/type/package.rb:430:in `default‘)
Info: Applying configuration version ‘1413640549‘
Notice: /Stage[main]/Httpd/Package[httpd]/ensure: created
Notice: Finished catalog run in 61.91 seconds
[[email protected] ~]# rpm -q httpd
[[email protected] ~]# ll -c  /etc/httpd/conf/httpd.conf 
-rw-r--r-- 1 root root 33726 Oct 18 23:54 /etc/httpd/conf/httpd.conf

#从上面的httpd.conf的ctime信息,我们可以看到,这正是刚刚安装的httpd。
时间: 2024-10-13 01:47:30

利用puppet自动给客户端安装httpd的相关文章

linux 利用pxe自动安装预设系统

PXE工作原理  第一步:PXE Client向DHCP发送请求首先,将支持PXE的网络接口卡(NIC)的客户端的BIOS设置成为网络启动,通过PXE BootROM(自启动芯片)会以UDP(简单用户数据报协议)发送一个广播请求,向网络中的DHCP服务器索取IP地址等信息. 第二步:DHCP服务器提供信息DHCP服务器收到客户端的请求,验证是否来至合法的PXE Client的请求,验证通过它将给客户端一个"提供"响应,这个"提供"响应中包含了为客户端分配的IP地址.

Puppet下部署相关服务(httpd)

一.Puppet概述 Puppet是开源的基于Ruby的系统配置管理工具,基于C/S的部署架构.是一个为实现数据中心自动化管理而设计的配置管理软件,它使用跨平台语言规范,管理配置文件.用户.软件包.系统服务等.客户端默认每隔半小时会和服务器通信一次,确认是否有更新.当然也可以配置主动触发来强制客户端更新.这样就把日常的系统管理任务代码化了,代码化的好处是可以分享,保存,避免重复劳动,也可以快速恢复以及快速的大规模部署服务器. 二.Puppet构架 puppet的服务器端保存着所有的对客户端服务器

利用Puppet全自动部署tomcat

上一篇聊了puppet的安装部署方法,如果你还没有安装puppet,请点击下方链接查看具体安装方法: <搭建Puppet自动化部署环境> 这篇来看一下如何利用Puppet全自动部署tomcat,在Puppet中有很多资源,其中比较常用的包括: package    通过程序安装软件 service    启动或停止服务 file      文件传输 exec      执行命令 由于tomcat用源码包安装的居多,所有下面主要用到file和exec资源 一.打开文件传输功能 1.vim /et

利用Powershell自动部署asp.net mvc网站项目 (一)

这一篇中我们会写一些关于自动化部署的代码.我们会使用 Powershell 书写这类代码. 你将发现这篇文章中涉及的东西非常具体,有的要求甚至相当苛刻且可能不具有通用性.这是因为部署从来都是跟环境打交道,部署过程中协作的组建太多,相互之间的交集不可能太大.可能唯一能够通用的是自动化部署的基本原则(只是这篇文章的基本原则): 每一次自动化部署结束之后,应用程序都会有相同的初始状态. 自动化部署的机器非常干净,只有相应的 Windows Server 系统和 .NET Framework.尤其是,不

CentOS 6.5下编译安装httpd+mysql+php+phpMyAdmin

CentOS 6.5下编译安装httpd+mysql+php+phpMyAdmin+cacti+nagios 一.安装环境 Linux系统:CentOS 6.5 Apache版本:http-2.4.12 MySQL版本:MySQL 5.6.24 PHP版本:PHP-5.6.8 基本的安装顺序为:先安装httpd,然后安装mysql,最后安装PHP. 软件包: [[email protected] httpdbao]# ll total 334908 -rwxrw-rw-. 1 root root

Symantec Backup Exec2012 系列二:客户端安装

1.在BE服务器安装目录中默认有客户端的安装程序,将整个目录COPY到客户端机器中. 2.根据系统位数X64\X86进入对应的文件夹,双击Setupaax64.cmd程序 3.显示个黑色DOS窗口.不需要人工交换,默认在后台安装.当DOS窗口自动关闭,表示BE客户端安装完成. 4.安装完成后开始菜单中可以看到be utility程序.我们需要利用BE UTILITY工具发布客户端到备份服务器. 5.点击更改设置 6.点击添加BE服务器,输入BE服务器IP地址和用户密码. 7.BE服务器添加成功.

Oracle 客户端安装 + pl/sql工具安装配置

Oracle 客户端安装 +  pl/sql工具安装配置 下载oracle客户端,并在本地安装. 11g下载地址为: http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html 10g下载地址为: http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html 根据自己机器或者oracle服

SVN1.6服务端和客户端安装配置指导

本节向大家描述SVN1.6服务端和客户端安装配置步骤,随着SVN的快速发展,版本也进行了升级更新,本节就和大家一起学习一下SVN1.6服务端和客户端安装配置步骤,欢迎大家一起来学习.下面是具体介绍.1.软件下载下载SVN1.6服务器程序.http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91[注意]如果之前已经安装了TortoiseSVN客户端,必须选择与之配套的SVN服务端版本,否则会出现各种问题,可以从Tor

Git 服务器搭建与客户端安装

大纲: 一.前言 二.搭建Git服务器 yum安装Git服务器 创建一个git用户,用来运行git服务 创建客户端登录证书 初始化Git仓库 禁用shell登录 克隆远程仓库 三.安装客户端 Windows 客户端 Linux 客户端 四.总结 注,测试机 CentOS 5.5 x86_64,Git 服务器版本:git version 1.8.2.1,客户端版本:git version 1.9.2.msysgit.0.所有软件请到这里下载:http://msysgit.github.io/. 一