puppet 配置 4 条件语法

作用

puppet 与其他语言一样, 可以通过正则匹配, 通过判断, 循环, case 等语法进行管理
本文会对 puppet 一些条件语法进行介绍

比较

在 puppet 中, 有下面几种常见的比较方法, 参考下面表格

表达式 作用 例子
! if ( ! $myvar )
and if ( $myvar > 10 and $osfamily == ‘RedHat’ )
or if ( $myvar > 10 or $osfamily == ‘RedHat’ )
in 包含 if ( $var in $array )
* 与 / 数学运算 3 * 4 / 2
- 与 + 数学运算 4 + 3 - 5
<< 与 >> 左右位移 NULL
== 与 != 相等不等比较 if ( $osfamily == ‘RedHat’ )
>= <= > < 大小比较 if ( $myvar > 10 )
=~ 正则匹配 if ( $::operatingsystemrelease =~ /^5/ )

判断

puppet 支持“if””unless””case” “selectors” 等语法

if

参考 if 判断语法

1.  直接判断变量,
2.  判断 true, false
3.  判断函数返回结果
4.  可以结合  and,  or 使用
5.  配合正则使用

范例

if $is_virtual == 'true' {
    warning('Tried to include class ntp on virtual machine; this node may be misclassified.')
}
elsif $operatingsystem == 'Darwin' {
    warning('This NTP module does not yet work on our Mac laptops.')
}
else {
    include ntp
}

参考正则判断语法

if $hostname =~ /^www(\d+)\./ {
      notice("Welcome to web server number $1")
}

unless

参考 unless 语法

1.  直接判断变量,
2.  判断 true, false
3.  判断函数返回结果
4.  不支持  and,  or 使用
5.  可以配合正则使用
6.  unless 与 if 语法类似, 但没有 else,  elsif 等多重判断
7.  只有当判断为 false 时候才会执行进行代码块中内容
8.  不匹配任何条件, 则执行 default 部分代码

范例:

unless $memorysize > 1024 {
    $maxclient = 500
}

case

参考 case 语法

case $operatingsystem {
    'Solaris':          { include role::solaris }
    'RedHat', 'CentOS': { include role::redhat  }
    /^(Debian|Ubuntu)$/:{ include role::debian  }
    default:            { include role::generic }
}

selector

参考 selector 语法

1.  类似 case 语法, 但只会返回结果, 而没有代码直接执行功能
2.  selector 执行后的结果是返回值
3.  返回值可以用于作为变量赋值
4.  返回值可以作为资源属性
5.  返回值可以作为函数参数
6.  返回值可以用于资源 titile

范例:

$rootgroup = $osfamily ? {
        'Solaris'          => 'wheel',
        /(Darwin|FreeBSD)/ => 'wheel',
        default            => 'root',
}

file { '/etc/passwd':
      ensure => file,
      owner  => 'root',
      group  => $rootgroup,
}
时间: 2024-09-24 21:00:24

puppet 配置 4 条件语法的相关文章

puppet 配置 3. 资源

概念 资源是 puppet 配置的独立单元 资源包含有 (package, service, file, user, mount, exec ...) 常见资源包含有 title, arguments 两部分组成 arguments 可包含 0 ~ 多个 资源例子: type { 'title': argument => value, other_arg => value, } 资源语法: file { 'motd': path => '/etc/motd', content =>

《深入理解Nginx:模块开发与架构解析》一2.2 Nginx配置的通用语法

2.2 Nginx配置的通用语法 Nginx的配置文件其实是一个普通的文本文件.下面来看一个简单的例子. user nobody; worker_processes 8; error_log /var/log/nginx/error.log error; #pid logs/nginx.pid; events { use epoll; worker_connections 50000; } http { include mime.types; default_type application/o

puppet 配置 3.5 参数

作用 介绍 puppet 中 facter 用法, 介绍自参数定义, 参数传递, 参数使用的常见例子 facter facter 是 puppet 的一个依赖软件, 当安装了 puppet 软件, 都可以通过 facter 命令查询 puppet 内建变量 查询内建函数 直接调用命令 facter 查询所有内建变量 通过命令 facter + 需要查询的变量名称, 可以返回变量值 facter 返回的变量可以直接在 puppet 模板中调用, 不需要重新进行定义 facter 变量主要依赖当前

puppet 配置 3.4 文件管理与自定义模块

作用 利用 puppet 对文件, 配置文件等进行管理 常见管理办法 1. 新增文件并定义文件中内容 2. 修改已经存在的文件中的配置 3. 通过模板管理方式进行配置文件定义 模块 这里介绍 puppet 自带的 file 模块及第三方模块 stdlib stdlib 模块下载地址 使用方法 下载 stdlib.tar.gz 软件包并解压至 /etc/puppet/modules/stdlib 文件结构 [root@terry-test-uq2pu ~]# ls /etc/puppet/modu

puppet 配置 5 常见例子

变量复用 说明: 变量定义后可以直接调用变量名称使用 范例: $etcd_controller1='10.100.84.22' $etcd_controller2='10.100.84.23' $etcd_controller3='10.100.84.24' $etcd_host1='gx-yun-084022.vclound.com' $etcd_host2='gx-yun-084023.vclound.com' $etcd_host3='gx-yun-084024.vclound.com'

Linux网卡配置ifconfig调用语法详解

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;   Ifconfig命令使LINUX核心知道软件回送和网卡这样一些网络接口,这样Linux就可以使用它们.除了上面介绍的这些用法之外,ifconfig命令用来监控和改变网络接口的状态,并且还可以带上很多命令行参数.下面是一个ifconfig的通用调用语法: #ifconfig interface [[-net|-host] address [parameters]]

puppet 配置 3.1 管理 sysct.conf

辅助模块 https://github.com/duritong/puppet-sysctl 下载方法 利用上面网站, 通过连接 clone or download 利用 download zip 按钮进行下载 把下载的 zip 文件直接解压到服务器端 /etc/puppet/modules/sysctl/ 目录下 文件结构 如下 [root@terry-test-uq2pu ~]# ls /etc/puppet/modules/sysctl/ Gemfile lib manifests Mod

puppet 配置 3.2 管理 hosts

作用 利用 puppet 对客户端 /etc/hosts 文件进行管理 辅助模块 https://forge.puppet.com/chrekh/hosts 下载方法 点击网页中 download latest tar.gz 直接下载 把下载的文件 解压至 puppet server 中 /etc/puppet/modules/hosts 目录中 文件结构 参考 [root@terry-test-uq2pu hosts]# pwd /etc/puppet/modules/hosts [root@

puppet 配置 2 模块

概念 模块是 puppet 中最基本的功能单位 模块常常存放在 /etc/puppet/modules 下 每个模块都是独立的, 模块命名不可以重复, 否则会导致重命名错误 模块主要供客户端进行调用 模块常见有下载及自定义两种 获取 可以从网络中获得模板 https://forge.puppet.com/ http://www.example42.com 命令行管理 Linux 下使用命令行获得模块方法 查询模块 (默认会从 https://forge.puppet.com/ 获取 ) [roo