天天看点

Puppet数据类型中哈希类型和布尔类型(十五)

哈希类型

        puppet语言支持hash类型.它与数组类似,都是带索引的对象集合,与数组的区别在于作为索引步进限于数字,可以是任何对象。在puppet中哈希类型的"键"必须是字符串类型,但其"值"可以是任意的类型.

格式如下:

{key1 => "value",key2 => "vale",...}

示例如下:

1

2

3

<code>[root@puppet ~]</code><code># cat 4.pp </code>

<code>$myname = { name1 =&gt; lisi, name2 =&gt; zhangsan }</code>

<code>notice ($myname[name1])</code>

 agent端应用:

4

<code>[root@puppet ~]</code><code># puppet apply 4.pp </code>

<code>Notice: Scope(Class[main]): lisi</code>

<code>Notice: Compiled catalog </code><code>for</code> <code>puppet.localdomain </code><code>in</code> <code>environment production </code><code>in</code> <code>0.05 seconds</code>

<code>Notice: Finished catalog run </code><code>in</code> <code>0.01 seconds</code>

布尔类型

puppet支持布尔类型,布尔型经常用于函数的返回状态,布尔型只有两个值true(真)或者false(假).在通过布尔型赋值变量时,需要注意不要加双引号("")或者单引号('')。

正确的赋值方法:

<code>$switch = </code><code>true</code>

<code>$switch = </code><code>false</code>

错误的赋值方法:

<code>$switch = </code><code>"true"</code>

<code>$switch = </code><code>'true'</code>

安装puppetlabs-stdlib模块库.

5

6

<code>[root@puppet ~]</code><code># puppet module install puppetlabs-stdlib</code>

<code>Notice: Preparing to </code><code>install</code> <code>into </code><code>/etc/puppet/modules</code> <code>...</code>

<code>Notice: Downloading from https:</code><code>//forgeapi</code><code>.puppetlabs.com ...</code>

<code>Notice: Installing -- </code><code>do</code> <code>not interrupt ...</code>

<code>/etc/puppet/modules</code>

<code>└── puppetlabs-stdlib (v4.20.0)</code>

master端的puppet代码文件.

<code>node base {</code>

<code>include admin</code>

<code>}</code>

7

8

9

10

11

12

13

14

15

16

17

<code>node </code><code>/sh-</code><code>(proxy|web)\d+/  inherits base {</code>

<code>  </code><code>case</code> <code>$::</code><code>hostname</code> <code>{</code>

<code>    </code><code>/sh-proxy</code><code>\d+/: {</code>

<code>         </code><code>include apache</code>

<code>         </code><code>user {</code><code>"test1"</code><code>:</code>

<code>            </code><code>ensure =&gt; present,</code>

<code>            </code><code>}</code>

<code>      </code><code>}</code>

<code>     </code><code>"sh-web1"</code><code>: {</code>

<code>            </code><code>include nginx::nginxconf</code>

<code>            </code><code>include php</code>

<code>            </code><code>if</code> <code>str2bool ($is_virtual) {</code><code>#返回值为true就include apache类.</code>

<code>            </code><code>include apache</code>

<code>         </code><code>} </code>

<code>    </code><code>}</code>

agent端更新,初次安装模块更新可能输出信息会比较多.

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

<code>[root@sh-web1 ~]</code><code># puppet agent -t</code>

<code>Notice: Ignoring --listen on onetime run</code>

<code>Info: Retrieving pluginfacts</code>

<code>Info: Retrieving plugin</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/puppet/parser/functions/keys</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}c10485a3d6c53b6d57a891b9852898de'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/puppet/parser/functions/dig44</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}3078b97ee941c261944857373d400ed6'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/puppet/parser/functions/uriescape</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}ba78def2cd0e60bdc4412df6c7b891ec'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/puppet/parser/functions/validate_ipv4_address</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}593e8f832469cb6a48c5f16ee66c3b2d'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/puppet/parser/functions/validate_ipv6_address</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}48d3733012818993eae662839183d139'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/puppet/parser/functions/glob</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}c4106d2aff24f4b5a32b54bf4cd452a2'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/puppet/parser/functions/validate_integer</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}65aa35f7450794aaadb6ad2c2e114df7'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/puppet/functions/validate_re</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}42092f592ebf89b8a504b10c900230d8'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/puppet/provider/file_line/ruby</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}1cf38c2e1e23f0218ff1b0df4517dd0f'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/puppet/type</code><code>]</code><code>/ensure</code><code>: created</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/puppet/type/anchor</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}bbd36bb49c3b554f8602d8d3df366c0c'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/puppet/parser/functions/validate_numeric</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}0e36d370262b8bdef2f88f0a3cb5b30e'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/facter</code><code>]</code><code>/ensure</code><code>: created</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/facter/puppet_settings</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}9438c0839ae28dc52fffb8348ae5124f'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/facter/service_provider</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}66cc42526eae631e306b397391f1f01c'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/facter/util</code><code>]</code><code>/ensure</code><code>: created</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/facter/util/puppet_settings</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}9f1d2593d0ae56bfca89d4b9266aeee1'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/facter/facter_dot_d</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}d71e93183a680ac78bc0389fd50470a0'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/facter/root_home</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}35702ae0c7410ec4d2101113e2f697fa'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/facter/package_provider</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}539766a71dfb2f65e94a7c91bf413fcf'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/puppet/parser/functions/delete_values</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}b410f5618b4a6158a921acb7b2dc628d'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/puppet/parser/functions/reject</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}689f6a7c961a55fe9dcd240921f4c7f9'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/puppet/parser/functions/range</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}ab19430b6b9737cf56263eb65d80cba1'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/puppet/parser/functions/validate_slength</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}6cbcfe15378ca4a780bac786223aacac'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/puppet/functions/validate_array</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}9052b0026da174636c276a2512cf5acc'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/facter/pe_version</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}60d47406026c8201e51394227ddf780d'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/puppet/parser/functions/pick_default</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}ad3ea60262de408767786d37a54d45dc'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/puppet/functions/is_a</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}9dad7f8c9b75348cd97aca986ac0b29a'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/puppet/parser/functions/join</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}2ed4f56d296a4535da142e01b11a126d'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/puppet/functions/validate_ipv4_address</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}4a5039b99ac97cc0447faa343b9f7416'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/puppet/parser/functions/strip</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}da0ce253cb63a4863f15f9d145217db5'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/puppet/parser/functions/upcase</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}e875fc4f03adec1ff3b42d22f177441e'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/puppet/functions/is_float</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}af3bd6bb56878bac8cc4fe4f7564e4f9'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/puppet/type/file_line</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}7486754fca55fe98d40f268b032b7e6a'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/puppet/parser/functions/time</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}cd96d1f039f8875af083091e3637190b'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/puppet/parser/functions/is_bool</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}b8800ff7a11b4e8c03616041e218225f'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/puppet/parser/functions/deprecation</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}4323210434d36e37977251f906a232b8'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/puppet/parser/functions/validate_string</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}8afa7b0dcfe17bfbbb5704ad54664cc2'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/puppet/functions/is_string</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}230e9eabc5c9e1d8d5fb7b3c6c12b300'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/puppet/parser/functions/reverse</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}209e7ef512963251571c515e2d0aee10'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/puppet/parser/functions/type</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}4709f7ab8a8aad62d77a3c5d91a3aa08'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/puppet/parser/functions/zip</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}133f3d4c54640844e656e2e6e790318e'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/puppet/parser/functions/ensure_resource</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}de703fe63392b939fc2b4392975263de'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/puppet/parser/functions/validate_re</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}d5963c404e3ac1670553f306221c2655'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/puppet/parser/functions/shell_join</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}b99a23d5e62e2e1b98accde5c22e45c9'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/puppet/functions/validate_ip_address</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}65a12af9a2c2a9c70d820d04d19ec891'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/puppet/parser/functions/is_function_available</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}f13934d6b41561ef54d88cf0da86231b'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/puppet/parser/functions/str2saltedsha512</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}457ab12e4329494ae6276cfa4f20eb23'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/puppet/parser/functions/delete_undef_values</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}52beef9ee37f84ed2278a69ec4383125'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/puppet/parser/functions/fqdn_rotate</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}2483d17df4e6cb25d92b4e8520f30957'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/puppet/parser/functions/validate_ip_address</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}b23c3d5ce6839e32d0186411147a6a44'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/puppet/parser/functions/is_email_address</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}1eb786779743e93a7bb9fe8087b38b8d'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/puppet/parser/functions/values_at</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}f7e6ad2a1126acd4fb5f7fcf9bfc2e2b'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/puppet/functions/to_json</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}bb6893a3e9eb6c48064c5a3c0bd4a41a'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/puppet/parser/functions/getvar</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}0c8c5cef7e158e232a8cf6e42c10d0ff'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/puppet/parser/functions/strftime</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}8f15e2e3732b6d1d357a1fa1826800d4'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/puppet/parser/functions/chop</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}3beb80906fa3c759945a2664fe510b20'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/puppet/parser/functions/ensure_resources</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}c92d8b69d6354eda24aa3a13d88177b2'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/puppet/parser/functions/is_float</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}6257620b98c5099293be7aa4088b88ce'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/puppet/parser/functions/parsejson</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}15165fd3807d9f3d657697fa854d643d'</code>

<code>Notice: </code><code>/File</code><code>[</code><code>/var/lib/puppet/lib/puppet/parser/functions/validate_cmd</code><code>.rb]</code><code>/ensure</code><code>: defined content as </code><code>'{md5}7df12370db442eddddcf4dd7a5364b5e'</code>

<code>Info: Loading facts</code>

<code>Info: Caching catalog </code><code>for</code> <code>sh-web1.localdomain</code>

<code>Info: Applying configuration version </code><code>'1506348730'</code>

<code>Notice: </code><code>/Stage</code><code>[main]</code><code>/Admin/Exec</code><code>[selinux]</code><code>/returns</code><code>: executed successfully</code>

<code>Notice: </code><code>/Stage</code><code>[main]</code><code>/Php/Package</code><code>[php]</code><code>/ensure</code><code>: created</code>

<code>Notice: </code><code>/Stage</code><code>[main]</code><code>/Php/Package</code><code>[php-devel]</code><code>/ensure</code><code>: created</code>

<code>Notice: </code><code>/Stage</code><code>[main]</code><code>/Service/Service</code><code>[httpd]</code><code>/ensure</code><code>: ensure changed </code><code>'stopped'</code> <code>to </code><code>'running'</code>

<code>Info: </code><code>/Service</code><code>[httpd]: Unscheduling refresh on Service[httpd]</code>

<code>Notice: Finished catalog run </code><code>in</code> <code>11.61 seconds</code>

扩展:

        puppet-stdlib模块包含2个函数,str2bool和num2boole,str2bool可以将字符串转换为布尔型,numboole可以将数值转换为布尔型.

str2bool

Converts certain strings to a Boolean. This attempts to convert strings that contain the values '1', 'true', 't', 'y', or 'yes' to true. Strings that contain values '0', 'false', 'f', 'n', or 'no', or that are an empty string or undefined are converted to false. Any other value causes an error. These checks are case insensitive.

注释:返回值包含'1', 'true', 't', 'y', or 'yes'判断为true,'0', 'false', 'f', 'n', or 'no'判断为false.

本文转自青衫解衣 51CTO博客,原文链接:http://blog.51cto.com/215687833/1968903