前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【3】puppet笔记 - 变量、if、

【3】puppet笔记 - 变量、if、

作者头像
py3study
发布2020-01-09 12:38:46
4830
发布2020-01-09 12:38:46
举报
文章被收录于专栏:python3python3

变量:http://docs.puppetlabs.com/facter/latest/core_facts.html

http://docs.puppetlabs.com/puppet/latest/reference/lang_variables.html

语句:http://docs.puppetlabs.com/puppet/latest/reference/lang_conditional.html

http://docs.puppetlabs.com/puppet/latest/reference/lang_expressions.html

1、变量

定义变量:以$开头,如:$system、$flag

赋值:=  ,如:$one = "first one"

引用变量:有三种方法如下

代码语言:javascript
复制
$var = "Hello World!"
notice "1.$var"
notice "2.${var}"
notice "3.$::var"

输出:

代码语言:javascript
复制
[root@pclient test]# puppet apply 3.pp
Notice: Scope(Class[main]): 1.Hello World!
Notice: Scope(Class[main]): 2.Hello World!
Notice: Scope(Class[main]): 3.Hello World!
Notice: Compiled catalog for pclient.onepc.com in environment production in 0.06 seconds
Notice: Finished catalog run in 0.05 seconds

puppet代码中可以直接使用的变量:

http://docs.puppetlabs.com/facter/latest/core_facts.html

代码语言:javascript
复制
Summary
architecture
augeasversion
blockdevice_{devicename}_size
blockdevice_{devicename}_vendor
blockdevice_{devicename}_model
blockdevices
boardmanufacturer
boardproductname
boardserialnumber
cfkey
domain
ec2_{EC2 INSTANCE DATA}
ec2_userdata
facterversion
filesystems
ldom
fqdn
gid
hardwareisa
hardwaremodel
hostname
id
interfaces
ipaddress
ipaddress_{NETWORK INTERFACE}
ipaddress6
ipaddress6_{NETWORK INTERFACE}
iphostnumber
is_virtual
kernel
kernelmajversion
kernelrelease
kernelversion
lsbdistcodename
lsbdistdescription
lsbdistid
lsbdistrelease
lsbmajdistrelease
lsbminordistrelease
lsbrelease
macaddress
macaddress_{NETWORK INTERFACE}
macosx_buildversion
macosx_productname
macosx_productversion
macosx_productversion_major
macosx_productversion_minor
manufacturer
memoryfree
memorysize
netmask
netmask_{NETWORK INTERFACE}
network_{NETWORK INTERFACE}
operatingsystem
operatingsystemmajrelease
operatingsystemrelease
osfamily
path
physicalprocessorcount
processor
processor{NUMBER}
processorcount
productname
ps
puppetversion
rubysitedir
rubyversion
selinux
selinux_config_mode
selinux_config_policy
selinux_current_mode
selinux_enforced
selinux_policyversion
serialnumber
sp_{SYSTEM PROFILER DATA}
sshdsakey
sshecdsakey
sshrsakey
swapencrypted
swapfree
swapsize
timezone
type
uniqueid
uptime
uptime_days
uptime_hours
uptime_seconds
uuid
virtual
vlans
xendomains
zfs_version
zonename
zones
zpool_version

2、if语句

if 条件 {

 语句

}

条件:是true执行语句,是false则跳过语句

代码语言:javascript
复制
$varif = 20
if $varif > 10 {
  notice "$varif > 10"
} else {
  notice "$varif < 10"
}
代码语言:javascript
复制
注意:elsif 不是 elseif
if $varif == 30 {
  notice "varif=30" } elsif $varif > 30 {notice "varif>30" }
else { notice "varif < 30" }

3、unless语句

unless 条件 {

语句

}

条件:当false时,执行语句。当true时跳过。

代码语言:javascript
复制
$varless = 100
unless $varless > 1000 {
  notice "$varless > 1000 is false"
}
代码语言:javascript
复制
Notice: Scope(Class[main]): 100 > 1000 is false

4、case语句

case 变量/表达式 {

值1 :{语句1}

值2 : {语句2}

default : {不是上面的值时,执行这条语句}

}

代码语言:javascript
复制
$varcase = 100
case $varcase {
   10: {notice "varcase = 10"}
   20: {notice "varcase = 20"}
   100: {notice "varcase = 100"}
   default: {notice "varcase is match"}
}
代码语言:javascript
复制
Notice: Scope(Class[main]): varcase = 100

5、selectors语句

未知变量 = 可知变量 ? {

值1 => 赋值1,

值2 => 赋值2,

default => 赋值3,

}

可以用于系统版本之类的判断

代码语言:javascript
复制
$varselectors = "puppet"
$varsel = $varselectors ? {
 "centos" => "this is centos",
 "puppet" => "this is puppet",
 default => "this is default",
}
notice "varsel is value = \"$varsel\""
代码语言:javascript
复制
Notice: Scope(Class[main]): varsel is value = "this is puppet"

官网例子:

代码语言:javascript
复制
$rootgroup = $osfamily ? {
    'Solaris'          => 'wheel',
    /(Darwin|FreeBSD)/ => 'wheel',
    default            => 'root',
}
file { '/etc/passwd':
  ensure => file,
  owner  => 'root',
  group  => $rootgroup,
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-09-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档