puppet运维自动化配置安装学习

简介:

1.Puppet简介
Puppet
是一个开源的自动化配置和部署工具,puppet是基于C/S架构的,服务端被称为Puppet master,客户端软件被称为Puppet agent,Puppet master服务器端保存着所有对客户端服务器的配置代码,Puppet agent则通过一个使用标准SSL协议进行加密和验证的链接与Puppet master进行通信。



2.Puppet工作原理
1
)客户端Puppetd向Master发起认证请求。
2
)客户端puppet调用Facter,Factert探测出主机的变量信息,Puppetd将这些信息通过SSL连接发送到服务器端。
3
)服务器端的Puppet Master检测客户端的主机名,然后找到manifest对应的node配置,并对该内容进行解析,并将伪代码发送给客户端。
5
)客户端接收到伪代码并执行,将执行结果返回给服务器。
6
)服务器把客户端的执行结果写入日志。


3.物理环境


角色

OS

IP

hostname

master

Centos6.4_64

192.168.1.191

master.puppet.net

slave

Centos6.4_64

192.168.1.192

slave.puppet.net


4.获取puppet软件包


puppet的官方网站(https://puppetlabs.com)下载最新的安装版本puppet-3.1.1.tar.gz


也可以在Linux终端用wget下载。

wgethttp://puppetlabs.com/downloads/puppet/puppet-3.1.1.tar.gz --no-check-certificate

wgethttp://puppetlabs.com/downloads/facter/facter-1.6.18.tar.gz--no-check-certificate



5.puppet安装配置


5.1配置主机名,Puppet是通过主机名(FQDN)通信的,在masteragent/etc/hosts文件里面添加下面两行。

192.168.1.191master.puppet.net

192.168.1.192slave.puppet.net


wKiom1LFPbHhXCUzAAAfAMvmtVY754.jpg


5.2Puppet master端的安装。


1)Puppet是用ruby语言开发的,因此在安装puppet之前先安装ruby。

yum –y install ruby



2)安装facter。

tar –zxvf facter-1.6.18.tar.gz

cd facter-1.6.18

ruby install.rb



3)安装puppet。


先添加puppet用户。

useradd –M –s /sbin/nologinpuppet

tar –zxvf puppet-3.1.1.tar.gz

cd puppet-3.1.1

ruby install.rb


4)启动puppet master进程。

puppet master


#查看帮忙文档

puppet help


puppet master第一次启动的时候,会创建本地认证中心,给自己签发证书和key,可以在/etc/puppet/ssl里面看到。


wKioL1LFPbLxAe1cAABcE1C9o4k084.jpg


#查看puppet的进程。

ps –aux | grep –v “grep” | grep “puppet”


wKiom1LFPcmjyGDTAAB-L-A_mgY680.jpg




5.3Puppet slave端的安装。


1)Puppet是用ruby语言开发的,因此在安装puppet之前先安装ruby。


yum –y install ruby


2)安装facter。

tar –zxvf facter-1.6.18.tar.gz

cd facter-1.6.18

ruby install.rb



3)安装puppet。

先添加puppet用户。

useradd –M –s /sbin/nologinpuppet

tar –zxvf puppet-3.1.1.tar.gz

cd puppet-3.1.1

ruby install.rb




6.puppet agent 证书申请流程。


agent第一次连接master的时候会向master申请证书.如下


1)puppet agent --server master.puppet.net--waitforcert 60 –test


2)在master端查看客户端的证书申请请求.

puppet cert --list


3)在master端给客户端签发证书.

puppet cert --sign slave.puppet.net


4)当证书签发成功后,agent可以和master之间建立连接.


puppet agent --servermaster.puppet.net --waitforcert 60 --test

wKioL1LFPcqg6QwyAAA98-9YAhI487.jpg




7.Puppet master-slave客户端测试。


1)master端修改配置文件vim/etc/puppet/manifests/site.pp


node default {

file{"/tmp/magme.txt":

content => "hello,magme!,This is puppet master test file!!!";

}


}


2)agent端测试.

puppet agent --servermaster.puppet.net --test


wKiom1LFPeTylwE0AABSJqQXNRA938.jpg


3)在agent端的/tmp目录中会出现magme.txt文件,说明puppet安装配置成功.

cat /tmp/magme.txt

wKioL1LFPezQnNrqAAAfOzwOneo448.jpg




8.puppet单机测试.


在任意目录中,新建vim test1.pp


notify {'notice':

message => 'hello puppet' ,

}


应用该文件.

puppet apply test1.pp

wKiom1LGIoPTsC54AAA63KavJpM923.jpg






9.实用案例:


文件分发:
通过puppet可以向被管理机上推送文件,方法是使用file类型的source属性
1:修改/etc/puppet/fileserver.conf
2:修改/etc/puppet/manifests/site.pp
实例:要把server服务器上/opt目录下的mysql-5.1.49-linux-i686-icc-glibc23.tar.gz传输至client服务器的/opt目录下,文件名不变。
第一步:Vi /etc/puppet/fileserver.conf
[files]
path /opt/
allow 192.168.133.0/24

第二步:vi/etc/puppet/manifests/site.pp
file
{ "/opt/mysql-5.1.49-linux-i686-icc-glibc23.tar.gz":
source =>"puppet://$puppetserver/files/mysql-5.1.49-linux-i686-icc-glibc23.tar.gz",
}

第三步:
在client客户端执行更新命令
puppetd --test --server testsns

此处“$puppetserver”是puppet Server端的名称,即hostname,网上教程都是在hosts里指定,生产环境下用内部的DNS上作解析,像我公司一个www平台就有70台linux服务器,一个个添加hosts,不搞死人去。

修改文件属性:
实例:把/tmp/dd142/ puppet-2.6.13.tar.gz文件的权限改为puppet用户,并设置权限为666。
第一步:编辑Server端的site.pp
vi /etc/puppet/manifests/site.pp
---内容如下
file
{ "/tmp/dd142/puppet-2.6.13.tar.gz":
owner => "puppet",
group => "puppet",
mode => 666,
}
----
第二步:在client端执行命令
puppetd --test --server testsns

执行SHELL命令或shell脚本:
实例:通过puppet分发执行shell脚本,在客户端的opt目录下新建一目录shelldir。
第一步:编辑Server端的site.pp
vi /etc/puppet/manifests/site.pp

exec {"exec-mkdir":
cwd => "/opt",
command => "sh /opt/lgh.sh",
user => "root",
path =>"/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin",
}
第二步:在client端编辑一shell脚本


第三步:在client端执行命令
puppetd --test --server testsns
在/opt目录下查看shelldir有没有建立。

服务检查及修改:
可以通过puppet对一些服务进行检查。puppet是通过service命令操作的。所以,只能针对在/etc/init.d/目录下的服务
实例:把客户端的防火墙起来(原来是关闭的)
vi /etc/puppet/manifests/site.pp //清空site.pp,再新建

service
{ iptables:
ensure => "running",
}

cron计划任务:
接上面的shell程序实例,在17:30执行/opt/lgh.sh。
cron { "cron-shell": #title部分,可用来作为注释。
command => "sh /opt/lgh.sh" #要执行的命令
user => "root", #添加到root用户下的crontab中
minute => "30", #即第一个星号
hour => "17" #即第二个星号
}
登录客户端查看效果


wKioL1LFPfqAz0xyAAA-3IvlvrI838.jpg




10.遇到的问题??


.Could notretrieve information from environment production source(s)puppet://server.puppet.com/plugins


解决方法:网上说把两端/etc/puppet.conf里pluginsync=true ,改成pluginsync=false,并重启puppetmaster即可解决。


新版本puppet3.1.1中根本没有这个选项,那么只需要在master中,执行mkdir /etc/puppet/modules,然后错误就没有了。




总结:

1.Puppet是管理系统配置的工具,包括软件的安装,文件的配置,系统服务,文件的管理,用户的添加/删除,定时计划配置等。在puppet中,将上述列出的管理任务称为资源。

2.生成配置文件,3.1.1源码包的conf里面没有puppet的配置文件,可以用下面的方式生成配置文件。

puppet master--genconfig > /etc/puppet/puppet.conf 生成master配置文件

puppet agent--genconfig > /etc/puppet/puppet.conf 生成agent配置文件



本文转自pizibaidu 51CTO博客,原文链接:http://blog.51cto.com/pizibaidu/1347800,如需转载请自行联系原作者

相关文章
|
1月前
|
运维 Linux Apache
Puppet 作为一款强大的自动化运维工具,被广泛应用于配置管理领域。通过定义资源的状态和关系,Puppet 能够确保系统始终处于期望的配置状态。
Puppet 作为一款强大的自动化运维工具,被广泛应用于配置管理领域。通过定义资源的状态和关系,Puppet 能够确保系统始终处于期望的配置状态。
59 3
|
1月前
|
运维 Linux Apache
,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具
【10月更文挑战第7天】随着云计算和容器化技术的发展,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具,通过定义资源状态和关系,确保系统始终处于期望配置状态。本文介绍Puppet的基本概念、安装配置及使用示例,帮助读者快速掌握Puppet,实现高效自动化运维。
54 4
|
1月前
|
运维 Linux Apache
Puppet这一强大的自动化运维工具,涵盖其基本概念、安装配置及使用示例
【10月更文挑战第8天】本文介绍了Puppet这一强大的自动化运维工具,涵盖其基本概念、安装配置及使用示例。Puppet通过定义资源状态和关系,确保系统配置始终如一,支持高效管理基础设施。文章详细讲解了Puppet的安装步骤、配置方法及DSL语言示例,帮助读者快速掌握Puppet的使用技巧。
65 2
|
1月前
|
Linux 应用服务中间件 Shell
利用 ACME 实现SSL证书自动化配置更新
【10月更文挑战第11天】多项式承诺原理是密码学中的重要工具,允许证明者向验证者承诺一个多项式并证明其某些性质。Kate多项式承诺是一种知名方案,基于有限域上的多项式表示,通过生成和验证简洁的证明来确保多项式的正确性和隐私。其安全性基于离散对数假设。应用场景包括区块链中的零知识证明和可验证计算,以及多方计算和身份认证协议。在区块链中,Kate多项式承诺可用于保护隐私币和智能合约中的敏感信息。
|
2月前
|
运维 Linux 网络安全
自动化运维的利器:Ansible、Puppet和Chef详解
自动化运维的利器:Ansible、Puppet和Chef详解
98 5
|
3月前
|
持续交付 jenkins Devops
WPF与DevOps的完美邂逅:从Jenkins配置到自动化部署,全流程解析持续集成与持续交付的最佳实践
【8月更文挑战第31天】WPF与DevOps的结合开启了软件生命周期管理的新篇章。通过Jenkins等CI/CD工具,实现从代码提交到自动构建、测试及部署的全流程自动化。本文详细介绍了如何配置Jenkins来管理WPF项目的构建任务,确保每次代码提交都能触发自动化流程,提升开发效率和代码质量。这一方法不仅简化了开发流程,还加强了团队协作,是WPF开发者拥抱DevOps文化的理想指南。
87 1
|
3月前
|
持续交付 jenkins C#
“WPF与DevOps深度融合:从Jenkins配置到自动化部署全流程解析,助你实现持续集成与持续交付的无缝衔接”
【8月更文挑战第31天】本文详细介绍如何在Windows Presentation Foundation(WPF)项目中应用DevOps实践,实现自动化部署与持续集成。通过具体代码示例和步骤指导,介绍选择Jenkins作为CI/CD工具,结合Git进行源码管理,配置构建任务、触发器、环境、构建步骤、测试及部署等环节,显著提升开发效率和代码质量。
77 0
|
3月前
|
Java Spring 开发者
解锁 Spring Boot 自动化配置的黑科技:带你走进一键配置的高效开发新时代,再也不怕繁琐设置!
【8月更文挑战第31天】Spring Boot 的自动化配置机制极大简化了开发流程,使开发者能专注业务逻辑。通过 `@SpringBootApplication` 注解组合,特别是 `@EnableAutoConfiguration`,Spring Boot 可自动激活所需配置。例如,添加 JPA 依赖后,只需在 `application.properties` 配置数据库信息,即可自动完成 JPA 和数据源设置。这一机制基于多种条件注解(如 `@ConditionalOnClass`)实现智能配置。深入理解该机制有助于提升开发效率并更好地解决问题。
72 0
|
1月前
|
机器学习/深度学习 人工智能 运维
构建高效运维体系:从自动化到智能化的演进
本文探讨了如何通过自动化和智能化手段,提升IT运维效率与质量。首先介绍了自动化在简化操作、减少错误中的作用;然后阐述了智能化技术如AI在预测故障、优化资源中的应用;最后讨论了如何构建一个既自动化又智能的运维体系,以实现高效、稳定和安全的IT环境。
67 4
|
9天前
|
机器学习/深度学习 数据采集 人工智能
智能运维:从自动化到AIOps的演进与实践####
本文探讨了智能运维(AIOps)的兴起背景、核心组件及其在现代IT运维中的应用。通过对比传统运维模式,阐述了AIOps如何利用机器学习、大数据分析等技术,实现故障预测、根因分析、自动化修复等功能,从而提升系统稳定性和运维效率。文章还深入分析了实施AIOps面临的挑战与解决方案,并展望了其未来发展趋势。 ####