零基础学习Puppet自动化配置管理系列文档

在Foreman上可以根据业务逻辑设置多个主机组(Host Groups),并且可以将不同的节点加入到不同的主机组,这样在每次操作“puppet run”的时候,只需要在搜索按钮里搜索对应的主机组即可找到里面包含的所有节点,如下图所示

Foreman安装

但是,foreman目前在puppet run上对mcollective的集成度很低,基本就是只能运行一条命令。那么如果要在shell终端上通过mco命令去对这些自定义的Host Groups进行操作应该如何做呢。答案是转换为facter。

自定义facter有四种方式,如下:http://kisspuppet.com/2014/03/30/puppet_learning_base10/

这里介绍第三种方式将Foreman上设置的主机组(Host Groups)转换为每个节点自己的facter

1、首先创建主机组

Foreman安装

2、查看节点的主机组信息

其实相当于自定义了一个外部变量,变量名叫hostgroup,值为节点加入的组名称

Foreman安装

Foreman安装

3、编写一个fact模块

模块的功能就是将Foreman上的变量“hostgroup”落地到每个节点的/etc/facter/facts.d/${hostname}.txt文件中,内容为fact的标准格式。

#模块结构
[root@puppetmaster162 modules]# tree fact
fact
├── files
├── manifests
│   ├── config.pp
│   ├── fact.pp
│   ├── init.pp
│   └── params.pp
└── templates└── hostgroup.erb
3 directories, 5 files
#模块主配置文件init.pp
[root@puppetmaster162 modules]# cat fact/manifests/init.pp
class fact {tag("puppet_env")require fact::params$hostgroup_erb = $fact::params::hostgroup_erbinclude fact::configinclude fact::facter
}#创建目录以及文件
[root@puppetmaster162 modules]# cat fact/manifests/config.pp
class fact::config{file { '/etc/facter' :ensure  => directory,owner   => 'root',group   => 'root',mode    => '0644',}file { '/etc/facter/facts.d' :ensure  => directory,owner   => 'root',group   => 'root',mode    => '0644',require => File['/etc/facter']}file{ "/etc/facter/facts.d/$hostname.txt":owner   => "root",group   => "root",mode    => 0400,content => template($fact::hostgroup_erb),require => File['/etc/facter/facts.d'],}
}#定义变量
[root@puppetmaster162 modules]# cat fact/manifests/params.pp
class fact::params{$hostgroup_erb = 'fact/hostgroup.erb'
}#定义fact模板(原因可参考http://kisspuppet.com/2013/11/10/mcollective-middleware/)
[root@puppetmaster162 manifests]# cat fact.pp
class fact::facter{
file{"/etc/mcollective/facts.yaml":owner    => root,group    => root,mode     => 0440,loglevel => debug, # reduce noise in Puppet reportscontent  => inline_template('<%= scope.to_hash.reject { |k,v| k.to_s =~ /(uptime.*|path|timestamp|free|.*password.*|.*psk.*|.*key)/ }.to_yaml %>'),}
}#设置文件模板
[root@puppetmaster162 modules]# cat fact/templates/hostgroup.erb
hostgroup=<%= @hostgroup %>
foreman_env=<%= @foreman_env %>

4、Foreman上管理主机组和模块fact

先导入类,然后在主机组里进行关联即可,由于fact模块是针对所有主机的,建议关联到1级主机组,加入的节点会自动继承。关联完成后的效果如下

Foreman安装

Foreman安装

5、在Foreman上对两个节点执行“puppet run”操作

Foreman安装

6、查看facter信息是否生成

[root@foreman163 ~]# facter hostgroup
prd
[root@puppetmaster162 ~]# facter hostgroup
prd/kisspuppet

7、通过mco命令结合fact进行过滤查看

[root@puppetmaster162 ~]# mco ping  -F hostgroup=prd
foreman163.kisspuppet.com                time=98.55 ms
---- ping statistics ----
1 replies max: 98.55 min: 98.55 avg: 98.55
[root@puppetmaster162 ~]# mco ping  -F hostgroup=prd/kisspuppet
puppetmaster162.kisspuppet.com           time=94.14 ms
---- ping statistics ----
1 replies max: 94.14 min: 94.14 avg: 94.14
[root@puppetmaster162 ~]# mco puppet -v runonce -F hostgroup=prd/kisspuppet
Discovering hosts using the mc method for 2 second(s) .... 1* [ ============================================================> ] 1 / 1
puppetmaster162.kisspuppet.com          : OK{:summary=>      "Started a Puppet run using the 'puppet agent --test --color=false --splay --splaylimit 30' command"}
---- rpc stats ----Nodes: 1 / 1Pass / Fail: 1 / 0Start Time: Thu Dec 18 15:13:09 +0800 2014Discovery Time: 2004.07msAgent Time: 85.19msTotal Time: 2089.26ms

注:以上方式只是提供了一种思路,更多的方式还需要根据具体的实际环境而改变,总之一点,fact很强大,看你怎么用。

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

foreman架构的引入10-hostgroup如何转换为本地的fact相关推荐

  1. foreman架构的引入1-foreman作为自动化运维工具为什么会如此强大

    零基础学习Puppet自动化配置管理系列文档 在引入foreman之前,笔者曾经大幅度测试过puppet的另外一个生态圈前端软件,那就是KermIT(kermit.fr需要墙).说实话基于KermIT ...

  2. foreman架构的引入3-安装Foreman1.5.3架构(all-in-one)

    零基础学习Puppet自动化配置管理系列文档 注意:本实验是在离线情况下安装的,所以需要在本地创建自己的yum仓库,创建方法可参考<如何根据版本制作属于自己的puppet yum源>,如何 ...

  3. foreman架构的引入2-安装前环境准备

    零基础学习Puppet自动化配置管理系列文档 Foreman官网提供了每个版本非常完善的安装步骤,无论是源码安装还是rpm包安装都变得非常方便.而且Foreman通过puppet模块对安装步骤进行了封 ...

  4. foreman架构的引入6-整合puppetmaster

    零基础学习Puppet自动化配置管理系列文档 注:以下内容是在foreman1.6.3+puppet2.6.2环境下进行操作.更多配置请参考官网http://theforeman.org/manual ...

  5. foreman架构的引入7-Foreman结合mcollective完成push动作

    在foreman-proxy的1.6.3版本,至少提供了以下五种触发puppet agent命令的工具,默认使用的是puppetrun,不过已经过时,这里介绍如何使用mcollective进行触发,下 ...

  6. 实现10进制转换为2进制

    代码(实现10进制转换为2进制) 实现10进制转换为2进制 #!/bin/bash # BIcon= declare -i i j x i=${i:-254} mask="128 64 32 ...

  7. python 16进制转换为10进制,10进制转换为16进制。

    例子用的python2.7 16进制转换为10进制. 输入 0xaa 0XAB 返回 170 171 方法一,使用字典,自己写方法处理 #!/usr/bin/python #-*- coding:ut ...

  8. 关于进制转换问题,10进制转换为26进制;

    目前有一个数N,想用AZ组合表示出来,即 1 = A,2 = B,3 = C,26 = Z,27 = AA,28 = AB,等等. 首先考虑二进制,二进制由0和1组成,10进制转换为二进制时候,用除以 ...

  9. Python进制转换10进制转换为16进制,不使用hex函数

    笔试中遇到的问题 Python进制转换10进制转换为16进制,不使用hex函数 给定一个整数,编写一个算法将这个数转换为十六进制数.对于负整数,我们通常使用 补码运算 方法. 注意: 十六进制中所有字 ...

最新文章

  1. 免费教材丨第47期:业界大牛中文教学视频《深度学习:进阶》第21-24讲
  2. RHEL6 下安装tmux
  3. android从放弃到精通 第七天 tomorrow
  4. Fiddler抓包使用教程-乱码处理 Decode
  5. mac 雪豹 10.6 五国
  6. 浅谈Time Elastic Band
  7. maven指定配置文件
  8. android学习资料免费下载
  9. linux下编译libyuv,Android ndk cmake编译libyuv
  10. 中国管道内检测市场现状调研与投资预测分析报告2022-2028年
  11. 汽车“缺芯”的挑战与机遇
  12. Eclipse:Build not configured correctly问题
  13. 网络安全-江湖高手专用的“隐身术”:图片隐写技术
  14. vue-hotkey组件——v-hotkey:Vue 2.x指令,用于将热键绑定到组件 v-hotkey=keymap和computed结合使用
  15. Fresher玩深沉
  16. 使用python+selenium发送QQ邮件
  17. Ubuntu18.04通过apt安装libssl1.1因依赖问题导致失败的解决办法
  18. 2022杭电多校八 1011-Stormwind(贪心)
  19. 两顶白帽子和一顶红帽子_自我发展:我如何不戴两顶帽子并找到第三顶帽子
  20. 我的涨分日记(二)——BestCoder Round #59

热门文章

  1. GMT时间和普通时间互转
  2. Docker远程API未授权访问导致的Docker逃逸
  3. JAVA程序设计:祖玛游戏(LeetCode:488)
  4. 树莓派控制固态继电器的使用
  5. php点击特效,WordPress鼠标点击特效和粒子插件
  6. 一文懂高频交易程序化交易和量化交易的别
  7. python-turtle
  8. 用不到1000美元攒一台深度学习用的超快的电脑:继续深度学习和便宜硬件的探奇!...
  9. 2017.01.05回顾 ORM例子解读
  10. div盒子与浮动(float)