博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Puppet 条件判断语句(十六)
阅读量:6485 次
发布时间:2019-06-23

本文共 2356 字,大约阅读时间需要 7 分钟。

目前puppet2.7以上版本都支持if...elif ...else...、selecter和case语句.它们的条件判断分为两类:一类为条件执行(if...elif ...else...、selecter)通过逻辑判断来选择要执行的特定代码或加载代码;另一类(case)是循环执行类,依照代码规则来执行代码或加载代码.

if条件判断语句:

示例一:

if判断系统发行版本安装apache软件包:

[root@sh-web1 ~]# cat apache.pp if $operatingsystem == 'CentOS' {    $packages = 'httpd'} elsif $operatingsystem == 'Redhat' {    $packages = 'httpd'} else {    $packages = 'apache2'}    package {"$packages":    ensure=> "present",}

本地应用puppet代码:

[root@sh-web1 ~]# puppet apply apache.pp Notice: Compiled catalog for sh-web1.localdomain in environment production in 0.04 secondsNotice: /Stage[main]/Main/Package[httpd]/ensure: createdNotice: Finished catalog run in 1.78 seconds

注意:"=="是等于的意思,完完全全匹配到对应的.

示例二:

if匹配hostname主机载入相应的puppet模块.(if在node.pp文件中匹配主机很少用,几乎都是用case.)

node base {    include admin}node /sh-(proxy|web)\d+/  inherits base {    if $hostname =~ /sh-proxy\d+/ {        include apache    } elsif $hostname =~ /sh-web\d+/ {        include php    } else {        include nginx::nginxconf    }}

agent端更新puppet代码.

[root@sh-proxy2 ~]# puppet agent -tInfo: Retrieving pluginfactsInfo: Retrieving pluginInfo: Loading factsInfo: Caching catalog for sh-proxy2.localdomainInfo: Applying configuration version '1506450177'Notice: /Stage[main]/Admin/Exec[selinux]/returns: executed successfullyNotice: /Stage[main]/Install/Package[httpd]/ensure: createdNotice: /Stage[main]/Service/Service[httpd]/ensure: ensure changed 'stopped' to 'running'Info: /Service[httpd]: Unscheduling refresh on Service[httpd]Notice: Finished catalog run in 20.24 seconds

agent端更新puppet代码.

[root@sh-web1 ~]# puppet agent -tNotice: Ignoring --listen on onetime runInfo: Retrieving pluginfactsInfo: Retrieving pluginInfo: Loading factsInfo: Caching catalog for sh-web1.localdomainInfo: Applying configuration version '1506450177'Notice: /Stage[main]/Admin/Exec[selinux]/returns: executed successfullyNotice: /Stage[main]/Php/Package[php]/ensure: createdNotice: /Stage[main]/Php/Package[php-devel]/ensure: createdNotice: Finished catalog run in 4.01 seconds

注意:"=~"是匹配的意思,只要匹配到就行.

case语句应用:

示例:(之前文章一直都在用的匹配方法case)

node base {include admin}node /sh-(proxy|web)\d+/  inherits base {  case $::hostname {    /sh-proxy\d+/: {         include apache      }     "sh-web1": {            include nginx::nginxconf            include php         }     }}

agent端更新就不演示了,上面的case语句博客开始就是这样写的.

转载地址:http://zenuo.baihongyu.com/

你可能感兴趣的文章
es6 includes(), startsWith(), endsWith()
查看>>
关于azkaban上传job压缩包报错问题的解决方案
查看>>
JS版日期格式化和解析工具类,毫秒级
查看>>
百度人脸对比
查看>>
Linux内存管理 一个进程究竟占用多少空间?-VSS/RSS/PSS/USS
查看>>
苹果AppStore如何申请加急审核
查看>>
SpringBoot 使用Swagger2打造在线接口文档(附汉化教程)
查看>>
Mysql一个表编码的坑,mark一下
查看>>
JS动态事件绑定问题
查看>>
在WPF应用程序中利用IEditableObject接口实现可撤销编辑的对象
查看>>
android 8 wifi wifi 扫描过程
查看>>
phalcon的save方法保存失败?
查看>>
获取任意链接文章正文 API 功能简介
查看>>
线程类的常见方法介绍
查看>>
Spring连接数据库的几种常用的方式
查看>>
MS CRM 2011 Schedule Report & Email Subscription
查看>>
Linux2.6内核驱动移植参考
查看>>
去哪儿搜索引擎QSearch设计与实现
查看>>
POJ 2255 Tree Recovery (二叉树)
查看>>
HDU 1026 Ignatius and the Princess I
查看>>