- Puppet 3 Cookbook
- John Arundel
- 385字
- 2021-04-09 23:52:28
Writing powerful conditional statements
Puppet's if
statement allows you to change the manifest based on the value of a variable or an expression. With it, you can apply different resources or parameter values depending on certain facts about the node, for example, the operating system, or the memory size. You can also set variables within the manifest which can change the behavior of included classes. For example, nodes in data center A might need to use different DNS servers than nodes in data center B, or you might need to include one set of classes for an Ubuntu system, and a different set for other systems.
How to do it…
Here's an example of a useful conditional statement:
- Add the following code to your manifest:
if $::operatingsystem == 'Ubuntu' { notify { 'Running on Ubuntu': } } else { notify { 'Non-Ubuntu system detected. Please upgrade to Ubuntu immediately.': } }
How it works…
Puppet treats whatever follows an if
keyword as an expression and evaluates it. If the expression evaluates to true
, Puppet will execute the code within the curly braces.
Optionally, you can add an else
branch, which will be executed if the expression evaluates to false
.
There's more…
Here are some more tips on using if
statements.
You can add further tests using the elsif
keyword, as follows:
if $::operatingsystem == 'Ubuntu' { notify { 'Running on Ubuntu': } } elsif $::operatingsystem == 'Debian' { notify { 'Close enough...': } } else { notify { 'Non-Ubuntu system detected. Please upgrade to Ubuntu immediately.': } }
You can check if two values are equal using the ==
syntax, as in our example:
if $::operatingsystem == 'Ubuntu' { … }
Or, you can check if they are not equal using !=
:
if $::operatingsystem != 'CentOS' { }
You can also compare numeric values using < and >
:
if $::uptime_days > 365 { notify { 'Time to upgrade your kernel!': } }
To test if a value is greater (or less) than or equal to another value, use <=
or >=
:
if $::lsbmajdistrelease <= 12 { }
You can put together the kind of simple expressions described previously into more complex logical expressions, using and
, or
, and not
:
if ($::uptime_days > 365) and ($::operatingsystem == 'Ubuntu') { } if ($role == 'webserver') and ( ($datacenter == 'A') or ($datacenter == 'B') ) { }
See also
- Using the in operator, in this chapter
- Using selectors and case statements, in this chapter
- 突破平面Photoshop UI界面設計與制作剖析
- Getting Started with Microsoft Application Virtualization 4.6
- 人臉識別算法與案例分析
- Liferay User Interface Development
- 碼上學會:中文版Creo 3.0機械設計全能一本通(雙色版)
- Java EE 6 with GlassFish 3 Application Server
- UG NX 9中文版從入門到精通
- 中文版Photoshop CS6從新手到高手(超值版)
- AutoCAD入門教程全掌握
- 新印象Premiere短視頻拍攝+剪輯+特效關鍵技術
- 數碼攝影后期密碼Photoshop CC調色秘籍(第2版)
- 24小時學會Word-Excel-PowerPoint 2010三合一
- Excel數據處理與分析:數據思維+分析方法+場景應用
- Cinema 4D R20完全學習手冊
- 從零開始:Dreamweaver CS6中文版基礎培訓教程