Puppet apply 指令參數介紹
之前說過puppet的兩種運作方式,第一種:c/s結構,第二種:單機運作。apply就是單獨執行本地*.pp檔案的代碼工具,通常用于本地測試調試puppet代碼.
puppet apply常用參數:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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
75
76
77
78
79
80
81
82
83
84
<code>[root@sh-proxy2 ~]</code><code># puppet apply -h</code>
<code>puppet-apply(8) -- Apply Puppet manifests locally</code>
<code>========</code>
<code>SYNOPSIS</code>
<code>--------</code>
<code>Applies a standalone Puppet manifest to the </code><code>local</code> <code>system.</code>
<code>USAGE</code>
<code>-----</code>
<code>puppet apply [-h|--help] [-V|--version] [-d|--debug] [-</code><code>v</code><code>|--verbose]</code>
<code> </code><code>[-e|--execute] [--detailed-exitcodes] [-L|--loadclasses]</code>
<code> </code><code>[-l|--logdest syslog|eventlog|<FILE>|console] [--noop]</code>
<code> </code><code>[--catalog <catalog>] [--write-catalog-summary] <</code><code>file</code><code>></code>
<code>DESCRIPTION</code>
<code>-----------</code>
<code>This is the standalone puppet execution tool; use it to apply</code>
<code>individual manifests.</code>
<code>When provided with a modulepath, via </code><code>command</code> <code>line or config </code><code>file</code><code>, puppet</code>
<code>apply can effectively mimic the catalog that would be served by puppet</code>
<code>master with access to the same modules, although there are some subtle</code>
<code>differences. When combined with scheduling and an automated system </code><code>for</code>
<code>pushing manifests, this can be used to implement a serverless Puppet</code>
<code>site.</code>
<code>Most </code><code>users</code> <code>should use </code><code>'puppet agent'</code> <code>and </code><code>'puppet master'</code> <code>for</code> <code>site-wide</code>
<code>manifests.</code>
<code>OPTIONS</code>
<code>-------</code>
<code>Note that any setting that's valid </code><code>in</code> <code>the configuration</code>
<code>file</code> <code>is also a valid long argument. For example, </code><code>'tags'</code> <code>is a</code>
<code>valid setting, so you can specify </code><code>'--tags <class>,<tag>'</code>
<code>as an argument.</code>
<code>See the configuration </code><code>file</code> <code>documentation at</code>
<code>http:</code><code>//docs</code><code>.puppetlabs.com</code><code>/references/stable/configuration</code><code>.html </code><code>for</code> <code>the</code>
<code>full list of acceptable parameters. A commented list of all</code>
<code>configuration options can also be generated by running puppet with</code>
<code>'--genconfig'</code><code>.</code>
<code>* --debug: </code><code>#調試模式,輸出執行過程的調試資訊</code>
<code> </code><code>Enable full debugging.</code>
<code>* --detailed-exitcodes:</code><code>#提供退出代碼的資訊,2表示代碼有變化,4表示失敗,6兩者都有.</code>
<code> </code><code>Provide transaction information via </code><code>exit</code> <code>codes. If this is enabled, an </code><code>exit</code>
<code> </code><code>code of </code><code>'2'</code> <code>means there were changes, an </code><code>exit</code> <code>code of </code><code>'4'</code> <code>means there were</code>
<code> </code><code>failures during the transaction, and an </code><code>exit</code> <code>code of </code><code>'6'</code> <code>means there were both</code>
<code> </code><code>changes and failures.</code>
<code>* --help:</code>
<code> </code><code>Print this help message</code>
<code>* --loadclasses: </code><code>#加載任何存儲的類,通常puppet agent類配置緩存在/etc/puppet/classes.txt,設定這個參數導緻所有選擇的類将設定在puppet 清單中.</code>
<code> </code><code>Load any stored classes. </code><code>'puppet agent'</code> <code>caches configured classes</code>
<code> </code><code>(usually at </code><code>/etc/puppet/classes</code><code>.txt), and setting this option causes</code>
<code> </code><code>all of those classes to be </code><code>set</code> <code>in</code> <code>your puppet manifest.</code>
<code>* --logdest: </code><code>#日志路徑</code>
<code> </code><code>Where to send log messages. Choose between </code><code>'syslog'</code> <code>(the POSIX syslog</code>
<code> </code><code>service), </code><code>'eventlog'</code> <code>(the Windows Event Log), </code><code>'console'</code><code>, or the path to a log</code>
<code> </code><code>file</code><code>. Defaults to </code><code>'console'</code><code>.</code>
<code> </code><code>A path ending with </code><code>'.json'</code> <code>will receive structured output </code><code>in</code> <code>JSON </code><code>format</code><code>. The</code>
<code> </code><code>log </code><code>file</code> <code>will not have an ending </code><code>']'</code> <code>automatically written to it due to the</code>
<code> </code><code>appending nature of logging. It must be appended manually to </code><code>make</code> <code>the content</code>
<code> </code><code>valid JSON.</code>
<code>* --noop: </code><code>#隻運作代碼,不應用catalog</code>
<code> </code><code>Use </code><code>'noop'</code> <code>mode where Puppet runs </code><code>in</code> <code>a no-</code><code>op</code> <code>or dry-run mode. This</code>
<code> </code><code>is useful </code><code>for</code> <code>seeing what changes Puppet will </code><code>make</code> <code>without actually</code>
<code> </code><code>executing the changes.</code>
<code>* --execute: </code><code>#執行一段puppet代碼</code>
<code> </code><code>Execute a specific piece of Puppet code</code>
<code>* --</code><code>test</code><code>: </code><code>#啟用測試</code>
<code> </code><code>Enable the most common options used </code><code>for</code> <code>testing. These are </code><code>'verbose'</code><code>,</code>
<code> </code><code>'detailed-exitcodes'</code> <code>and </code><code>'show_diff'</code><code>.</code>
<code>* --verbose: </code><code>#列印詳細執行過程</code>
<code> </code><code>Print extra information.</code>
<code>* --catalog:</code><code>#catalog</code>
<code> </code><code>Apply a JSON catalog (such as one generated with </code><code>'puppet master --compile'</code><code>). You can</code>
<code> </code><code>either specify a JSON </code><code>file</code> <code>or pipe </code><code>in</code> <code>JSON from standard input.</code>
<code>* --write-catalog-summary </code><code>#編譯完catalog後,将資源清單和類清單儲存到節點。</code>
<code> </code><code>After compiling the catalog saves the resource list and classes list to the node</code>
<code> </code><code>in</code> <code>the state directory named classes.txt and resources.txt</code>
<code>EXAMPLE</code>
<code> </code><code>$ puppet apply -l </code><code>/tmp/manifest</code><code>.log manifest.pp</code>
<code> </code><code>$ puppet apply --modulepath=</code><code>/root/dev/modules</code> <code>-e </code><code>"include ntpd::server"</code>
<code> </code><code>$ puppet apply --catalog catalog.json</code>
<code>AUTHOR</code>
<code>------</code>
<code>Luke Kanies</code>
<code>COPYRIGHT</code>
<code>---------</code>
<code>Copyright (c) 2011 Puppet Labs, LLC Licensed under the Apache 2.0 License</code>
舉例:
本地使用puppet 安裝apache.
<code>[root@sh-proxy2 ~]</code><code># rpm -qa httpd</code>
<code>[root@sh-proxy2 ~]</code><code># vim httpd.pp</code>
<code>[root@sh-proxy2 ~]</code><code># cat httpd.pp </code>
<code>package {</code><code>"httpd"</code><code>:</code>
<code>ensure => </code><code>true</code><code>,</code>
<code>}</code>
<code>#應用本地httpd.pp代碼檔案</code>
<code>[root@sh-proxy2 ~]</code><code># puppet apply httpd.pp </code>
<code>Notice: Compiled catalog </code><code>for</code> <code>sh-proxy2.localdomain </code><code>in</code> <code>environment production </code><code>in</code> <code>0.18 seconds</code>
<code>Notice: </code><code>/Stage</code><code>[main]</code><code>/Main/Package</code><code>[httpd]</code><code>/ensure</code><code>: created</code>
<code>Notice: Finished catalog run </code><code>in</code> <code>12.67 seconds</code>
<code>#确認已經安裝</code>
<code>httpd-2.2.15-60.el6.centos.5.x86_64</code>
--verbose參數:
<code>[root@sh-proxy2 ~]</code><code># puppet apply httpd.pp --verbose</code>
<code>Notice: Compiled catalog </code><code>for</code> <code>sh-proxy2.localdomain </code><code>in</code> <code>environment production </code><code>in</code> <code>0.12 seconds</code>
<code>Info: Applying configuration version </code><code>'1504671755'</code>
<code>Notice: Finished catalog run </code><code>in</code> <code>3.51 seconds</code>
--execute參數:
<code>#test子產品下test類.</code>
<code>[root@sh-proxy2 manifests]</code><code># pwd</code>
<code>/etc/puppet/modules/test/manifests</code>
<code>[root@sh-proxy2 manifests]</code><code># ls</code>
<code>init.pp</code>
<code>#子產品下必須有init.pp檔案聲明一個和子產品同名的類.</code>
<code>[root@sh-proxy2 manifests]</code><code># cat init.pp </code>
<code>class </code><code>test</code> <code>{</code>
<code> </code><code>package {</code><code>"httpd"</code><code>:</code>
<code> </code><code>ensure => </code><code>true</code><code>,</code>
<code> </code><code>}</code>
-e等同于--execute參數參數,類要想使用必須聲明類使用include.
<code>[root@sh-proxy2 manifests]</code><code># puppet apply -e "include test"</code>
<code>Notice: Compiled catalog </code><code>for</code> <code>sh-proxy2.localdomain </code><code>in</code> <code>environment production </code><code>in</code> <code>0.15 seconds</code>
<code>Notice: </code><code>/Stage</code><code>[main]</code><code>/Test/Package</code><code>[httpd]</code><code>/ensure</code><code>: created</code>
<code>Notice: Finished catalog run </code><code>in</code> <code>3.11 seconds</code>
<code>[root@sh-proxy2 manifests]</code><code># rpm -qa httpd</code>
舉例2:
notify 資源輸出指令.
注意:puppet中的notify指令和shell中的echo相似,都是将代碼執行結果通過螢幕終端列印出來.
<code>[root@sh-proxy2 ~]</code><code># cat test.pp </code>
<code>notify {</code><code>"hello world"</code><code>:}</code>
<code>[root@sh-proxy2 ~]</code><code># puppet apply test.pp </code>
<code>Notice: Compiled catalog </code><code>for</code> <code>sh-proxy2.localdomain </code><code>in</code> <code>environment production </code><code>in</code> <code>0.02 seconds</code>
<code>Notice: hello world</code>
<code>Notice: </code><code>/Stage</code><code>[main]</code><code>/Main/Notify</code><code>[hello world]</code><code>/message</code><code>: defined </code><code>'message'</code> <code>as </code><code>'hello world'</code>
<code>Notice: Finished catalog run </code><code>in</code> <code>0.01 seconds</code>
本文轉自青衫解衣 51CTO部落格,原文連結:http://blog.51cto.com/215687833/1963705