《Puppet实战手册》——导读

简介: IT运维领域正在进行一场革命。新一代的配置管理工具可以在几秒内完成大量服务器的构建(配置)和整个网络自动化。为了充分利用云计算的强大功能,并且建立可靠、可扩展、安全、高性能的系统,拥有Puppet这样的工具是必不可少的。


7f5232e80473058aa6ef1cb1470bc6df94fe51b1

**

前言
**
IT运维领域正在进行一场革命。新一代的配置管理工具可以在几秒内完成大量服务器的构建(配置)和整个网络自动化。为了充分利用云计算的强大功能,并且建立可靠、可扩展、安全、高性能的系统,拥有Puppet这样的工具是必不可少的。

本书不仅讲解了Puppet的基础知识,而且深入探讨了Puppet的所有强大功能,详细展示了如何解决现实中的各种问题和应用场景。每一步操作都完整地展示了需要录入的命令,并且每一个技巧都有完整的代码示例。

本书带领读者从Puppet的基本知识开始,完整、专业地讲解Puppet的最新和最先进的功能、社区的最佳实践、优秀的配置清单(manifest)的编写、扩展性和性能,以及通过添加定制的提供者(provider)和资源(resource)来扩展Puppet的方法。

本书还包含来自生产系统环境的真实示例,以及一些世界上最大的Puppet用户群所使用的技巧。书中会展示利用Puppet来做事的不同方法,并指出这些方法的优点和缺点。

本书的组织结构使读者在任何时候都可以深入到某个技巧进行尝试,而无须通读全书。每个主题都有提供更多信息的链接和参考阅读,读者可以根据自己的需要进一步自己探索。无论读者的Pupept经验水平如何,从简单的工作流程提示到更高级的高性能Puppet架构,这里都有合适的内容。

作为一名DevOps顾问,我极力去编写这种对我日常工作有帮助的书。我希望它能激励每一名读者去学习、去尝试,并将自己最新的创意快速运用到这个令人激动和快速发展的领域中。
第1章展示了第一次安装Puppet的方法,包括安装Puppet的指令、创建第一个清单、配合Puppet使用版本控制、基于Git构建分布式Puppet架构、编写脚本让Puppet清单生效、自动运行Puppet、用Rake来引导机器和部署变更,以及使用Git钩子(hook)实现清单的自动语法检查。

第2章涵盖了编写优秀的Puppet代码的方方面面,包括如何使用Puppet社区风格、通过puppet-lint检查清单、用模块的方式组织清单、采用标准的命名和风格规范、使用内联模板、使用选择器和case语句、字符串操作,以及采用迭代器、条件语句和正则表达式。

第3章深入探讨Puppet,提高代码质量和可用性的特殊功能细节,包括数组和定义、根据依赖关系排序资源、继承节点和类、传递参数给类、覆盖参数、从环境变量中读取信息、编写可复用的清单、使用标签(tag)和运行阶段。

第4章处理一些系统管理员最常见的任务,包括管理配置文件、使用Augeas、从代码片段和模板生成文件、管理第三方软件仓库、使用GnuPG加密Puppet中的机密数据,以及从源代码构建软件包。

第5章阐释了什么是虚拟资源,以及它们如何帮助用户管理不同机器上的用户和软件包的不同组合,并展示了如何使用Puppet的资源调度和审计功能。

第6章专注于可能需要Puppet管理的某些特定的应用程序,包括Apache和Nginx、MySQL及Ruby的完整技巧。

第7章通过Vagrant和EC2实例扩展Puppet的能力(在云上的虚拟机和在桌面系统上)来管理虚拟机。此外,还展示了如何用HAProxy设置负载均衡,如何利用iptables设置防火墙,如何利用NFS设置网络文件系统,如何利用Heartbeat设置高可用服务。

第8章着眼于Puppet周边已经成熟的工具,包括Hiera、Facter和rspec-puppet,还介绍了一些高级主题,包括编写自己的资源类型、提供者和外部节点分类器(ENC)。

第9章涵盖了Puppet报告自己做了些什么的信息和系统的状态的方法,包含报告、日志、调试消息、依赖关系图、测试和空运行(dry-running)清单,以及Puppet常见错误消息的排查指南。

目录

**[第1章 Puppet基础设施
1.1 简介](https://yq.aliyun.com/articles/92961)**
1.2 安装Puppet
1.3 创建一个配置清单
1.4 利用Git管理配置清单
1.5 创建去中心化Puppet架构
1.6 编写papply脚本
1.7 使用cron运行Puppet
1.8 利用Rake部署变更
1.9 利用Rake引导Puppet运行
1.10 利用Git钩子自动进行语法检查
**[第2章 Puppet语言和风格
2.1 简介](https://yq.aliyun.com/articles/93041)**
2.2 使用社区推荐的Puppet风格
2.3 使用puppet-lint检查配置清单
2.4 使用模块
2.5 使用标准的命名约定
2.6 使用内联模板
2.7 数组中多个元素的遍历
2.8 编写功能强大的条件语句
2.9 在if语句中使用正则表达式
2.10 使用选择器和case语句
2.11 使用in运算符
2.12 使用正则表达式进行替换

相关文章
|
Ruby
《Puppet实战手册》——2.12 使用正则表达式进行替换
Puppet通过regsubst函数提供了一种简单的方式来处理文本,在字符串中进行搜索和替换,或者从字符串中提取所需模式(子串)。人们经常需要用它来处理来自fact或来自外部程序的数据。
2032 0
|
Linux Spring Java
《Puppet实战手册》——2.11 使用in运算符
本节书摘来自异步社区《Puppet实战手册》一书中的第2章,第2.11节,作者:【英】John Arundel著,更多章节内容可以访问云栖社区“异步社区”公众号查看
1515 0
|
Ubuntu Linux Ruby
《Puppet实战手册》——2.10 使用选择器和case语句
Puppet会比较$::operatingsystem和每个所提供的可能的值:Ubuntu、Debian等。这些值可以是正则表达式(例如,部分字符串匹配或通配符匹配),但在此例中,只使用文字字符串(或全字符匹配)。
1351 0
|
存储
《Puppet实战手册》——2.9 在if语句中使用正则表达式
正则表达式非常强大,但是很难理解和调试。如果感觉正在用的正则表达式太复杂,不能一眼看明白它在做什么,最好简化设计,使其更加简单化。但是,正则表达式捕获模式是个非常有用的功能。
2256 0
|
Ubuntu 数据中心 网络协议
《Puppet实战手册》——2.8 编写功能强大的条件语句
此外,也可以通过在清单内设置变量来调整引入的类的行为。例如,在数据中心A的服务器可能需要使用与在数据中心B不同的DNS服务器,或者可能需要为Ubuntu系统使用一组类,而其他系统使用另一组不同的类。
1699 0
|
存储
《Puppet实战手册》——2.7 数组中多个元素的遍历
当Puppet遇到数组作为一个资源的名称时,它会为数组中每个元素的创建一个资源。在这个例子中,$packages数组中的每一个软件包都会被Puppet创建一个新的package资源,并且使用相同的参数(ensure => installed)。这是一种简化相似资源书写的方式。
1959 0
|
Ruby 调度
《Puppet实战手册》——2.6 使用内联模板
任何传递给inline_template函数的字符串的内容都会被当作ERB模板来执行。也就是说,任何在<%=和%>分隔符之间的内容都将作为Ruby代码而执行,而其余的部分将被视为字符串。
1628 0
|
网络安全 Apache Ruby
《Puppet实战手册》——2.5 使用标准的命名约定
本节书摘来自异步社区《Puppet实战手册》一书中的第2章,第2.5节,作者:【英】John Arundel著,更多章节内容可以访问云栖社区“异步社区”公众号查看
1493 0
|
Apache 缓存
《Puppet实战手册》——2.4 使用模块
模块是将相关的事物进行组合的一种简单方式。例如,一个webserver模块应该包括让一台机器作为Web服务器所必需的一切:Apache的配置文件、虚拟主机模板和一些必要的用来部署它们(Apache的配置文件、虚拟主机模板)的Puppet代码。
1595 0
|
JavaScript 前端开发
《Puppet实战手册》——2.3 使用puppet-lint检查配置清单
使用一些风格约定是很有必要的,特别是代码编写工作存在协同的情况下。除非彼此能够在空格、跳格(Tab)、引用、对齐等方面达成一致的标准,否则,代码将会被认为非常丑陋并且难以阅读和维护。
2025 0