author:JevonWei

版权声明:原创作品

blog:http://119.23.52.191/

master作为puppet模块的管理者,通过配置各agent节点的配置文件,使agent配置master的指定模块

环境

  1. master 172.16.252.184
  2. agent1 172.16.252.67
  3. agent2 172.16.252.207

各主机时间同步及配置主机名互相通信

  1. [root@master ~]# ntpdate 172.16.0.1
  2. [root@master ~]# vim /etc/hosts
  3. 172.16.252.184 master
  4. 172.16.252.207 agent2
  5. 172.16.252.67 agent1

master定义puppet模块

编辑Tomcat模块

  1. [root@master ~]# yum -y install puppet-server puppet
  2. [root@master ~]# cd /etc/puppet/modeles
  3. [root@master modules]# vim tomcat/manifests/init.pp
  4. class tomcat {
  5. package{'tomcat':
  6. ensure => latest,
  7. }
  8. package{'tomcat-webapps':
  9. ensure => latest,
  10. }
  11. file{'tomcat':
  12. path => '/etc/sysconfig/tomcat',
  13. source => 'puppet:///modules/tomcat/tomcat',
  14. owner => root,
  15. group => root,
  16. mode => '644',
  17. require => Package['tomcat'],
  18. }
  19. file{'server.xml':
  20. path => '/etc/tomcat/server.xml',
  21. source => 'puppet:///modules/tomcat/server.xml',
  22. owner => root,
  23. group => tomcat,
  24. mode => '644',
  25. require => Package['tomcat'],
  26. }
  27. service{'tomcat':
  28. ensure => running,
  29. enable => true,
  30. subscribe => [ File['tomcat'], File['server.xml'] ],
  31. }
  32. }
  33. [root@master modules]# vim tomcat/manifests/manager.pp
  34. class tomcat::manager inherits tomcat {
  35. package{'tomcat-admin-webapps':
  36. ensure => latest
  37. }
  38. file{'tomcat-users.xml':
  39. path => '/etc/tomcat/tomcat-users.xml',
  40. source => 'puppet:///modules/tomcat/tomcat-users.xml',
  41. owner => root,
  42. group => tomcat,
  43. mode => '640',
  44. require => Package['tomcat']
  45. }
  46. Service['tomcat']{
  47. subscribe +> File['tomcat-users.xml']
  48. }
  49. }
  50. 复制并编辑所需要的配置文件
  51. [root@master modules]# scp 172.16.252.82:/etc/sysconfig/tomcat tomcat/files/
  52. [root@master modules]# vim tomcat/files/tomcat 编辑修改tomcat的环境参数
  53. JAVA_OPTS="-Xms512m -Xmx512M" 所使用的堆内存大小
  54. [root@master modules]# scp 172.16.252.82:/etc/tomcat/{server.xml,tomcat-users.xml} tomcat/files/
  55. [root@master modules]# vim tomcat/files/tomcat-users.xml \\定义manager的管理界面
  56. <role rolename="manager-gui"/>
  57. <user username="tomcat" password="tomcat" roles="manager-gui"/>

编辑Nginx模块

  1. [root@master modules]# vim nginx/manifests/init.pp
  2. class nginx {
  3. package{'nginx':
  4. ensure => latest
  5. } ->
  6. service{'nginx':
  7. ensure => running,
  8. enable => true
  9. }
  10. }
  11. nginxweb页面模块
  12. [root@master modules]# vim nginx/manifests/web.pp
  13. [root@master modules]# vim nginx/manifests/web.pp
  14. class nginx::web($port=8088) inherits nginx {
  15. file{'web.conf':
  16. path => '/etc/nginx/conf.d/web.conf',
  17. content => template('nginx/web.conf.erb')
  18. }
  19. file{'/ngxdata/html':
  20. ensure => directory
  21. }
  22. file{'index.html':
  23. ensure => file,
  24. path => '/ngxdata/html/index.html',
  25. source => 'puppet:///modules/nginx/index.html',
  26. require => File['/ngxdata/html']
  27. }
  28. Service['nginx'] {
  29. subscribe => File['web.conf']
  30. }
  31. }
  32. nginxproxy模块
  33. [root@master modules]# vim nginx/manifests/proxy.pp
  34. class nginx::proxy($proxy_port=8088) inherits nginx {
  35. file{'proxy.conf':
  36. path => '/etc/nginx/conf.d/proxy.conf',
  37. content => template('nginx/proxy.conf.erb'),
  38. }
  39. Service['nginx'] {
  40. subscribe => File['proxy.conf']
  41. }
  42. }
  43. 编辑Nginx web应用的配置文件的模板文件
  44. [root@master modules]# vim nginx/templates/web.conf.erb
  45. server {
  46. listen <%= @port %>;
  47. server_name <%= @fqdn %>;
  48. location /
  49. root /ngxdata/html;
  50. }
  51. }
  52. 编辑web的测试页
  53. [root@master modules]# vim nginx/files/index.html
  54. <h1> Nginx ok </h1>
  55. 编辑Nginx proxy应用的配置文件的模板文件
  56. [root@master modules]# vim nginx/templates/proxy.conf.erb
  57. server {
  58. listen <%= @proxy_port %>;
  59. server_name <%= @fqdn %>;
  60. location / {
  61. proxy_pass http://172.16.252.184:8080/;
  62. }
  63. }

配置redis模块

  1. [root@master modules]# mkdir redis/{manifests,files,templates} -pv
  2. [root@master modules]# vim redis/manifests/init.pp
  3. class redis {
  4. package{'redis':
  5. ensure => latest,
  6. }
  7. service{'redis':
  8. ensure => running,
  9. enable => true
  10. }
  11. }

单环境配置

agent2安装jdk tomcat:manager模块

启动puppetmaster

  1. 以非守护进程运行master程序(可查看详细的启动过程)
  2. [root@master ~]# puppet master --no-daemonize -d -v
  3. systemctl启动master进程
  4. [root@master ~]# systemctl start puppetmaster.service
  5. [root@master ~]# ss -ntl 查看8140端口是否监听

agent2启动puppetagent

  1. [root@agent2 ~]# puppet agent --server master.danran.com --no-daemonize -v 非守护进程运行agent程序,安装jdktomcat::manager模块
  2. \\--server指定master server服务端,也可修改配置文件puppet config set server master.danran.com
  3. systemcal start puppetagent.service 启动agent进程
  4. [root@agent2 ~]# systemctl start puppetagent.service

master签署证书和配置agent2节点

  1. 列出所有的带签署证书
  2. [root@master ~]# puppet cert list
  3. agent2签署证书
  4. [root@master ~]# puppet cert sign agent2.danran.com
  5. Notice: Signed certificate request for agent2.danran.com
  6. Notice: Removing file Puppet::SSL::CertificateRequest agent2.danran.com at '/var/lib/puppet/ssl/ca/requests/agent2.danran.com.pem'
  7. [root@master ~]# puppet cert sign agent1.danran.com
  8. Notice: Signed certificate request for agent1.danran.com
  9. Notice: Removing file Puppet::SSL::CertificateRequest agent1.danran.com at '/var/lib/puppet/ssl/ca/requests/agent1.danran.com.pem'
  10. 定义agent2节点的配置
  11. [root@master ~]# cd /etc/puppet/manifests/
  12. [root@master manifests]# vim site.pp
  13. node 'agent2.danran.com' {
  14. include jdk
  15. include tomcat::manager
  16. }
  17. 因为agent2puppet的身份去读取server.xml配置文件,故需要添加puppet用户读取server.xml的权限
  18. [root@master files]# cd /etc/puppet/modules/tomcat/
  19. [root@master files]# chmod o+r tomcat-users.xml

agent2查看模块安装结果

  1. [root@agent2 ~]# ss -ntl 查看tomcat-manager8080端口已监听

测试agent2的manager页面

浏览器输入http://172.16.252.207:8080/manager

agent1节点安装jdk nginx:proxy模块

master

master修改nginx的配置文件

  1. [root@master ~]# cd /etc/puppet/modules/nginx/
  2. [root@master nginx]# vim templates/proxy.conf.erb
  3. server {
  4. listen <%= @proxy_port %>;
  5. server_name <%= @fqdn %>;
  6. location / {
  7. proxy_pass http://agent2.danran.com:8080/;
  8. }
  9. }

master编辑site.pp节点配置文件

  1. [root@master manifests]# vim site.pp
  2. node 'agent2.danran.com' {
  3. include jdk
  4. include tomcat::manager
  5. }
  6. node 'agent1.danran.com' {
  7. include nginx::proxy
  8. }

agent1

agent1安装配置nginx::proxy模块

  1. [root@agent1 ~]# yum -y install puppet
  2. [root@agent1 ~]# systemctl start puppetagent 启动puppetagent程序

master签署证书

  1. [root@master manifests]# puppet cert sign -a 签署所有的证书

agent1启动puppetagent

  1. [root@agent1 ~]# systemctl restart puppetagent
  2. [root@agent1 ~]# ps -aux 查看nginx服务是否启动

测试

浏览器访问http://172.16.252.67:8088测试代理是否正常

agent1 agent3安装redis模块

master

  1. [root@master manifests]# vim /etc/puppet/manifests/site.pp
  2. node '/agent[13]\.danran\.com/' { \\agent1.danran.comagent3.danran.com节点安装此配置
  3. include jdk
  4. include tomcat::manager
  5. }
  6. node 'agent2.danran.com' {
  7. include nginx::proxy
  8. include redis
  9. }

agent1/3

  1. [root@agent1 ~]# systemctl restart puppetagent
  2. [root@agent1 ~]# ss -ntl 查看redis的端口6379是否监听

agent3继承agent1模块

  • 配置agent3继承agent1的配置

master

  1. [root@master manifests]# vim /etc/puppet/manifests/site.pp
  2. #node 'base' { \\基本配置,各node都会配置
  3. # include chrony
  4. #}
  5. node 'agent1.danran.com' { \\agent1.danran.comagent3.danran.com节点安装此配置
  6. include jdk
  7. include tomcat::manager
  8. }
  9. node 'agent2.danran.com' {
  10. include nginx::proxy
  11. include redis
  12. }
  13. node 'agent3.danran.com' inherits 'agent1.danran.com' {
  14. include redis
  15. }

agent3

  1. [root@agent3 ~]# systemctl restart puppetagent

agent修改server指向

agent2修改配置文件中的master服务端为master.danran.com

  1. [root@agent2 ~]# puppet config set server master.danran.com
  2. [root@agent2 ~]# puppet config print | grep server
  3. ssl_server_ca_auth =
  4. server_datadir = /var/lib/puppet/server_data
  5. fileserverconfig = /etc/puppet/fileserver.conf
  6. server = master.danran.com
  7. ca_server = master.danran.com
  8. report_server = master.danran.com
  9. inventory_server = master.danran.com
  10. archive_file_server = master.danran.com
  11. smtpserver = none
  12. dbserver = localhost
  13. ldapserver = ldap
  14. [root@agent2 ~]# cat /etc/puppet/puppet.conf
  15. server = master.danran.com

多环境配置

  1. [root@master ~]# mkdir /etc/puppet/enviroments \\设置多环境的路径为/etc/puppet/enviroments
  2. [root@master ~]# puppet config set environmentpath '$confdir'/enviroments/
  3. [root@master ~]# puppet config print --section master | grep environ
  4. environment = production
  5. environmentpath = /etc/puppet/enviroments
  6. environment_timeout = 0
  7. [root@master ~]# cat /etc/puppet/puppet.conf
  8. [main]
  9. environmentpath = $confdir/enviroments/
  10. [root@master ~]# systemctl restart puppetmaster \\重启生效

创建production环境配置文件

  1. [root@master ~]# cd /etc/puppet/enviroments/
  2. [root@master enviroments]# mkdir production/{manifests,modules} -pv
  3. [root@master enviroments]# cp -r /etc/puppet/modules/redis/ production/modules/
  4. [root@master enviroments]# vim production/manifests/site.pp
  5. node 'agent2.danran.com' {
  6. include redis
  7. }
  8. [root@master enviroments]# tree
  9. .
  10. └── production
  11. ├── manifests
  12.    └── site.pp
  13. └── modules
  14. └── redis
  15. ├── files
  16. ├── manifests
  17.    └── init.pp
  18. └── templates

创建testing环境配置文件

  1. [root@master enviroments]# mkdir testing/{manifests,modules} -pv
  2. mkdir: created directory testing
  3. mkdir: created directory testing/manifests
  4. mkdir: created directory testing/modules
  5. [root@master enviroments]# cp -r /etc/puppet/modules/jdk/ testing/modules/
  6. [root@master enviroments]# vim testing/manifests/site.pp
  7. node 'agent2.danran.com' {
  8. jdk
  9. }

agent

  1. 非守护进程方式运行
  2. [root@agent1 ~]# puppet agent -v --noop --no-daemonize --environment=testing \\指定使用的环境配置为testing

  3. [root@agent1 ~]# puppet config set environment testing --section=agent 修改配置文件中的环境指向配置
  4. 默认的为main
  5. [root@agent1 ~]# puppet config print environment
  6. production
  7. agent环境为testing
  8. [root@agent1 ~]# puppet config print environment --section=agent
  9. testing
  10. [root@agent1 ~]# cat /etc/puppet/puppet.conf
  11. [agent]
  12. environment = testing
  13. 启动puppetagent程序
  14. [root@agent1 ~]# systemctl start puppetagent

puppet kick

  • 通知推送机制

agent

  1. [root@agent1 ~]# puppet config set listen true
  2. [root@agent1 ~]# puppet config print listen
  3. true
  4. [root@agent1 ~]# systemctl start puppetagent.service
  5. [root@agent1 ~]# ss -ntl \\查看8139端口是否监听
  6. [root@agent1 ~]# vim /etc/puppet/auth.conf
  7. path /run
  8. method save
  9. auth any
  10. allow master.danran.com
  11. \\以上配置放在此默认配置之前
  12. path /
  13. auth any
  14. [root@agent1 ~]# systemctl restart puppetagent.service

master推送通知

master为agent1先配置一个模块,agent1收到通知则立即安装新模块

  1. [root@master puppet]# cd /etc/puppet/enviroments/testing/
  2. [root@master testing]# cp /etc/puppet/modules/redis/ modules/ -r
  3. [root@master testing]# vim manifests/site.pp
  4. node 'agent2.danran.com' {
  5. jdk
  6. redis
  7. }
  8. puppet kick agent1.danran.com agent1的配置推送给agent1.danrana.com节点

agent查看模块是否安装

puppet实战之master-agent的更多相关文章

  1. puppet(5)-master/agent模式

    master/agent模式的工作流程 agent每隔固定时长会向master端发送nodename(自己的节点名,节点名至关重要)和 facts ,并且向服务器端请求自己的catalog. mast ...

  2. 部署puppet master/agent模型

    自己画的一个简单的架构图 agent端每隔30分钟到master端请求与自己相关的catalog. 各节点时间要同步. 依赖DNS,各节点能通过主机名能解析. 1.同步时间 # yum install ...

  3. Puppet基于Master/Agent模式实现LNMP平台部署

    前言 随着IT行业的迅猛发展,传统的运维方式靠大量人力比较吃力,运维人员面对日益增长的服务器和运维工作,不得不把很多重复的.繁琐的工作利用自动化处理.前期我们介绍了运维自动化工具ansible的简单应 ...

  4. puppet master/agent

    puppet master/agent 配置 安装 master: yum install puppet-server agent: yum install puppet 自动签名 puppet的ma ...

  5. 自动化运维工具之Puppet master/agent模型、站点清单和puppet多环境设定

    前文我们了解了puppe中模块的使用,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14086315.html:今天我来了解下puppet的master/age ...

  6. Puppet master/agent installation on RHEL7

    ==================================================================================================== ...

  7. CentOS7:Puppet推送Zabbix Agent

    创建zabbix模块目录: $ mkdir -p /etc/puppet/modules/zabbix/{manifests,templates} 创建init.pp清单: $ cat /etc/pu ...

  8. puppet实现主从部署各种软件实战参考模型

    puppet实现主从部署各种软件实战参考模型   实验要求:     1.我将准备三个节点 node2 , node3 , node4 2.我们想让节点node3部署ntp,nginx ;节点node ...

  9. 自动化运维工具——puppet详解(二)

    一.class 类 1)什么是类? 类是puppet中命名的代码模块,常用于定义一组通用目标的资源,可在puppet全局调用: 类可以被继承,也可以包含子类: 具体定义的语法如下: class NAM ...

随机推荐

  1. file - 确定文件类型

    总览 file [ -bcnsvzL ] [ -f 命名文件 ] [ -m 幻数文件 ] file ... 描述 本手册页说明了3.27版本 file 命令的使用. File 命令试图检查每个参数以判 ...

  2. ubuntu安装R时候增加软件源到sources.list,sudo apt-get update不能更新

    http://forum.ubuntu.org.cn/viewtopic.php?t=401717 ubuntu安装R时候增加软件源到sources.list,sudo apt-get update不 ...

  3. 初尝微信小程序1-特点

    微信小程序特点:1.不需要下载安装即可使用 2.用户用完即走,不用关心是否安装太多应用 3.应用将无处不在,随时可用 适合开发的小程序类型:1.简单的用完即走的应用 2.低频的应用 3.性能要求不高的 ...

  4. 1061: [Noi2008]志愿者招募

    Time Limit: 20 Sec  Memory Limit: 162 MBSubmit: 5742  Solved: 3449[Submit][Status][Discuss] Descript ...

  5. cf550D. Regular Bridge(构造)

    题意 给出一个$k$,构造一个无向图,使得每个点的度数为$k$,且存在一个桥 Sol 神仙题 一篇写的非常好的博客:http://www.cnblogs.com/mangoyang/p/9302269 ...

  6. python 实现剪刀石头布(三局两胜)

    # -*- coding:utf-8 -*- import random # best of three def finger_guess(): rule = {1:'rock', 2:'paper' ...

  7. UC浏览器打开首页显示:显示此网页时出了点问题

    使用UC浏览器打开网页的时候显示出错,如下图所示.但是用其他浏览器都很正常 我自己用的解决方法:最近刚下载了驱动精灵,听同学的把驱动精灵卸载了就恢复正常了

  8. Python基础学习总结__Day1

    一.Python是一门什么类型语言 1.解释型:一边编译一边执行,劣势是运行速度慢,但通过运用PyPy交互解释器(JIT技术)会让python程序执行速度快很多.优势是可移植性强. 2.强类型:即类型 ...

  9. 使用python3下载网易云音乐歌单歌曲,附源代码

    """ 用selenium+PhantomJS配合,不需要进行逆向工程 python 3下的selenium不能默认安装,需要指定版本2.48.0 "" ...

  10. POJ3436------ACM Computer Factory

    题目链接 ACM Computer Factory Description As you know, all the computers used for ACM contests must be i ...