设为首页 收藏本站
查看: 1017|回复: 0

[经验分享] puppet环境搭建及测试

[复制链接]

尚未签到

发表于 2018-8-2 09:55:15 | 显示全部楼层 |阅读模式
  Puppet 是什么?
  Puppet 是一款为 IT 系统管理员和顾问们设计的自动化软件,你可以用它自动化地完成诸如安装应用程序和服务、补丁管理和部署等工作。所有资源的相关配置都以“manifests”的方式保存,单台机器或者多台机器都可以使用。如果你想了解更多内容,Puppet 实验室的网站上有关于 Puppet 及其工作原理的更详细的介绍。
准备工作
  由于 Puppet 不是 CentOS 或 RHEL 发行版的基本仓库,所以我们得手动添加 Puppet 实验室提供的自定义仓库。在所有你想使用 Puppet 的地方执行以下命令安装这个仓库(版本不同,对应的 RPM 文件名可能略有不同)。
  对于CentOS/RHEL 6.5:
  # rpm -ivhhttps://yum.puppetlabs.com/el/6.5/products/x86_64/puppetlabs-release-6-10.noarch.rpm
  对于CentOS/RHEL 7:
  #rpm -ivh https://yum.puppetlabs.com/el/7/products/x86_64/puppetlabs-release-7-10.noarch.rpm
安装服务器端
  在你打算用作 master 的服务器上安装"puppet-server" 包。
  yum –y install puppet-server
  安装完成后,设置 Puppet 服务器开机自动启动,然后启动它。
  chkconfig puppetmaster on
  service puppetmaster start
  现在服务器已经运行起来了,我们试试看我们的网络能不能访问到它。
  对于使用 iptables 当做防火墙的 CentOS/RHEL 6,在 /etc/sysconfig/iptables 文件的 OUTPUT ACCEPT 小节里添加下面这一行。
  Iptables -A INPUT -m state --state NEW -m tcp -p tcp--dport 8140 -j ACCEPT
  重新启动 iptables 服务让刚才的修改生效: serviceiptables restart
  在安装了防火墙的 CentOS/RHEL 7 上,我们这么做:
  # firewall-cmd --permanent--zone=public --add-port=8140/tcp
  # firewall-cmd --reload
  安装客户端
  执行下面的命令,在客户端节点安装 Puppet 客户端。
  # yum install puppet
  安装完成后,确保 Puppet 会随开机自动启动。
  # chkconfig puppet on
  Puppet 客户端需要知道 Puppet master 服务器的地址。最佳方案是使用 DNS 服务器解析 Puppet master 服务器地址。如果你没有 DNS 服务器,在 /etc/hosts 里添加类似下面这几行也可以:
  1.2.3.4 server.your.domain
  2.3.4.5 client-node.your.domain
  1.2.3.4 对应你的 Puppet master 服务器 IP 地址,“server.your.domain”是你的 master 服务器域名(默认通常是服务器的 hostname),“client-node.your.domain”是你的客户端节点。包括 Puppet master 和客户端,所有相关的服务器都要在 hosts 文件里配置。
  完成这些设置之后,我们要让 Puppet 客户端知道它的 master 是谁。默认情况下,Puppet 会查找名为“puppet”的服务器,但通常这并不符合你网络环境的真实情况,所以我们要改成 Pupper master 服务器的完整域名。打开文件 /etc/sysconfig/puppet,把 PUPPET_SERVER 变量的值改成你在 /etc/hosts 文件里指定的 Puppet master 服务器的域名。
  PUPPET_SERVER=server.your.domain
  master 服务器名也要在/etc/puppet/puppet.conf 文件的“[agent]”小节里事先定义好。
  server=server.your.domain
  现在可以启动 Puppet 客户端了:
  service puppet start
  强制我们的客户端在 Puppet master 服务器上登记:
  puppet agent --test
  你会看到类似于下面的输出。别怕,这是正常现象,因为服务器还没有在 Puppet master 服务器上验证过。
  Exiting; no certificate found andwaitforcert is disabled
  返回 Puppet master 服务器,检查证书验证请求:
  puppet cert list
  你应该能看到一个列出了所有向 Puppet master 服务器发起证书签名请求的服务器。找到你客户端服务器的 hostname 然后使用下面的命令签名(client-node 是你客户端节点的域名):
  puppet cert signclient-node
  到此为止 Puppet 客户端和服务器都正常工作了。恭喜你!但是,现在 Puppet master 没有任何要客户端做的事儿。好吧,我们来创建一些基本的 manifest 文件然后让我们的客户端节点安装一些基本工具。
  回到你的 Puppet 服务器,确保目录 /etc/puppet/manifests 存在。
  mkdir -p/etc/puppet/manifests
  创建 manifest 文件 /etc/puppet/manifests/site.pp,内容如下
  1.  node 'client-node' {
  2.         include custom_utils
  3.  }
  4.

  5. >  6.  package { ["nmap","telnet","vim-enhanced","traceroute"]:
  7.  ensure => latest,
  8.  allow_virtual => false,
  9.  }
  10.}
  然后重新启动 puppetmaster 服务。
  service puppetmaster restart
  客户端默认每 30 分钟更新一次配置,如果你希望你的修改能强制生效,就在客户端执行如下命令:
  puppet agent -t
  如果你需要修改客户端的默认刷新时间,编辑客户端节点的/etc/puppet/puppet.conf 文件中“[agent]”小节,增加下面这一行:
  runinterval =
  这个选项的值可以是秒(格式比如 30 或者 30s),分钟(30m),小时(6h),天(2d)以及年(5y)。值得注意的是,0 意味着立即执行而不是从不执行
  提示和技巧
  1. 调试
  你免不了会提交错误的配置,然后不得不通过调试判断问题出现在哪儿。一般来说,你要么通过查看日志文件 /var/log/puppet 着手解决问题,要么手动执行查看输出:
  # puppet agent -t
  使用“-t”选项,你可以看到 Puppet 的详细输出。这条命令还有额外的选项可以帮你定位问题。首先要介绍的选项是:
  # puppet agent -t --debug
  debug 选项会显示 Puppet 本次运行时的差不多每一个步骤,这在调试非常复杂的问题时很有用。另一个很有用的选项是:
  # puppet agent -t --noop
  这个选项让 puppet 工作在 dry-run(译注:空转模式,不会对真实环境产生影响)模式下,不会应用任何修改。Puppet 只会把其工作内容输出到屏幕上,不会写到磁盘里去。
  2. 模块
  有时候你需要更复杂的 manifest 文件,在你着手编写它们之前,你有必要花点儿时间浏览一下 https://forge.puppetlabs.com。Forge 是一个集合了 Puppet 模块的社区,你的问题很可能已经有人解答过了,你能在那儿找到解决问题的模块。如果找不到,那就自己写一个然后提交上去,其他人也能从中获益。
  现在,假设你已经找到了一个模块能解决你的问题。怎么把它安装到你的系统中去呢?非常简单,因为 Puppet 已经有了可以直接下载模块的用户界面,只需要执行下面的命令:
  # puppet module install<module_name> --version 0.0.0
  <module_name> 是你选择的模块的名字,版本号可选(如果没有指定版本号,默认使用最新的版本)。如果你不记得想安装的模块的名字了,试试下面的命令搜索模块:
  # puppet module search<search_string>
  你会得到一个包含 search_string 的列表。
  # puppet module search apache
  1.  Notice: Searching https://forgeapi.puppetlabs.com ...
  2.  NAME                   DESCRIPTION                        AUTHOR          KEYWORDS
  3.  example42-apache       Puppetmodulefor apache           @example42     example42, apache
  4.  puppetlabs-apache      PuppetmoduleforApache          @puppetlabs    apache web httpd centos rhel ssl wsgi proxy
  5.  theforeman-apache      Apache HTTP serverconfiguration   @theforeman    foreman apache httpd DEPRECATED
  如果你想查看已经安装了哪些模块,键入:
  # puppet module list
  Puppet 实验室正在试着维护一个质量上乘的项目文档,所以如果你想学点儿关于 Puppet 相关的配置,我强烈推荐你访问 Puppet 项目的主页 http://docs.puppetlabs.com。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-545153-1-1.html 上篇帖子: puppet安装配置及测试 下篇帖子: puppet配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表