天天看點

Puppet apply指令參數介紹(五)

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|&lt;FILE&gt;|console] [--noop]</code>

<code>  </code><code>[--catalog &lt;catalog&gt;] [--write-catalog-summary] &lt;</code><code>file</code><code>&gt;</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 &lt;class&gt;,&lt;tag&gt;'</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 =&gt; </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 =&gt; </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

繼續閱讀