<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ### 使用 define 資源 > Girl number twenty unable to define a horse!" said Mr. Gradgrind.?—?Charles Dickens. > > — Hard Times 除非你知道如何定義你想要什么,不然不會得到預期的結果。 在上一節的示例中,我們看到了如何將同類資源組合成數組從而減少冗余代碼。 然而,這種技術有一個限制,那就是所有的資源必須使用相同的參數。 當你有一組資源擁有一些公用的參數而其中一些資源確有不同的參數時, 就需要使用 define 資源將它們組合在一起。 #### 操作步驟 1. 在配置清單中添加如下代碼: ``` define tmpfile() { file { "/tmp/$name": content =&gt; "Hello, world", } } tmpfile { ["a", "b", "c"]: } ``` 2. 運行 Puppet: ``` notice: /Stage[main]//Node[cookbook]/Tmpfile[a]/File[/tmp/a]/ ensure: defined content as '{md5}bc6e6f16b8a077ef5fbc8d59d0b931b9' notice: /Stage[main]//Node[cookbook]/Tmpfile[b]/File[/tmp/b]/ ensure: defined content as '{md5}bc6e6f16b8a077ef5fbc8d59d0b931b9' notice: /Stage[main]//Node[cookbook]/Tmpfile[c]/File[/tmp/c]/ ensure: defined content as '{md5}bc6e6f16b8a077ef5fbc8d59d0b931b9' ``` #### 工作原理 你可以認為 **define** 就像是一個餅干切割器。它描述了一種模式,Puppet 可以用它創建許多類似的資源。任何時候你都可以在你的配置清單中聲明 tmpfile 實例,Puppet 將會插入包含在 tmpfile 定義中的所有資源。 在我們的例子中,名為 tmpfile 的 define 包含了一個 file 資源, 其 content 為 "Hello, world";其 path 為 "/tmp/$name"。 如果你用名字 foo 聲明了一個 tmpfile 實例,如下所示: ``` tmpfile { "foo": } ``` 會被 Puppet 要創建的實例名字所代替。這就像是我們創建了一個新的資源類型: tmpfile,它包含一個參數(即其名字)。 與常規資源一樣,我們不僅可以為其傳遞一個字符串的名字,我們還可以傳遞一個數組名, Puppet 會對每一個數組元素創建一個 tmpfile 實例,就像上面的例子那樣。 #### 更多用法 在上面的例子中,我們定義的 define 僅有一個名字參數,不同實例的名字不同。 但是我們可以為其添加任何我們想要的參數,只要我們在 define 中聲明這些參數即可: ``` define tmpfile( $greeting ) { file { "/tmp/$name": content => $greeting, } } ``` 當我們聲明一個資源的實例時,可以為其傳遞參數值,例如: ``` tmpfile{ "foo": greeting => "Hello, world" } ``` 你可以使用逗號間隔的列表同時聲明多個參數: ``` define webapp( $domain, $path, $platform ) { ... } webapp { "mywizzoapp": domain => "mywizzoapp.com", path => "/var/www/apps/mywizzoapp", platform => "Rails", } ``` 這是對某些常見的資源進行抽象的一項強大的技術,抽象出資源之間的共性并保存在一個地方, 你就**不必每次都做重復勞動**(**Don’t Repeat Yourself**)。 在上面的例子中,webapp 里或許有許多獨立的資源:軟件包(packages)、配置文件(config files)、 源碼檢出(source code checkouts)、虛擬主機(virtual hosts)等等, 但是除了我們為 webapp 提供的參數不同之外,所有實例要執行的工作都相同。 這些可能會在模板中引用,例如:為一個虛擬主機設置域名。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看