哈希類型
puppet語言支援hash類型.它與數組類似,都是帶索引的對象集合,與數組的差別在于作為索引步進限于數字,可以是任何對象。在puppet中哈希類型的"鍵"必須是字元串類型,但其"值"可以是任意的類型.
格式如下:
{key1 => "value",key2 => "vale",...}
示例如下:
1
2
3
<code>[root@puppet ~]</code><code># cat 4.pp </code>
<code>$myname = { name1 => lisi, name2 => 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 => 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