<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之旅 廣告
                ### 創建自定義的資源類型 該到你發揮創意的時間了。你已經知道了各種不同的 Puppet 資源類型: 包(package), 文件(file)、用戶(user),等等。 通常情況下,你既可以組合使用這些內置資源類型做你需要做的一切, 又可以通過一個自定義 define 作為一種資源(以內置資源同樣的方式)來使用 (參見第 4 章 [書寫更優質的配置清單](#chapter04) 中有關 define 的內容)。 但是,如果你需要創建自己的資源類型,Puppet 也可以很容易地實現。 原生的資源類型都是使用 Ruby 書寫的,為了創建自己的資源類型,你需要對 Ruby 有一個基本的了解。 讓我們重新回顧一下 **資源類型**(**type**)和 **提供者**(**provider**)之間的區別。 資源類型描述了一個資源和它可擁有的參數(例如,package 類型)。 提供者則告訴 Puppet 如何針對特定的平臺或情況去實現一個資源 (例如,apt/dpkg 提供者為 Debian/Ubuntu 系統實現 package 資源)。 一種類型(如:package)可以有多個提供者(如:apt、yum、fink 等等)。 如果你聲明一個資源時沒有指定提供者,Puppet 會根據環境選擇一個最合適的提供者。 在本節中,我們將看到如何創建一個管理 Git 倉庫的自定義資源類型; 在下一節,我們將編寫一個實現這種資源類型的提供者。 #### 準備工作 1. 在你的 puppet.conf 文件中啟用 pluginsync(若還未啟用): ``` [main] pluginsync = true ``` 2. 在你的 Puppet 倉庫中,為你的插件和類型創建一個自定義模塊(若還不存在): ``` # cd /etc/puppet/modules # mkdir custom ``` 3. 在這個模塊中,創建 lib/puppet/type 目錄: ``` # cd custom # mkdir -p lib/puppet/type ``` #### 操作步驟 在 type 目錄中創建一個名為 gitrepo.rb 的文件,其內容如下: ``` Puppet::Type.newtype(:gitrepo) do ensurable newparam(:source) do isnamevar end newparam(:path) end ``` #### 工作原理 第一行注冊一個名為 gitrepo 的新類型: ``` Puppet::Type.newtype(:gitrepo) do ``` ensurable 行確保自動給出該類型的屬性(與 Puppet 內置的資源類似): ``` ensurable ``` 現在,我們將給出此類型的一些參數。就目前而言,我們所需要的參數分別是: source 參數用于指定 Git 倉庫源的 URL;path 參數用于告訴 Puppet 要在文件系統中的什么位置創建倉庫。 ``` newparam(:source) do isnamevar end ``` isnamevar 聲明告訴 Puppet 參數 source 是此類型的 namevar。 因此當你聲明這個資源的實例時,你給出的任何名字將被視為 source 的值。例如: ``` gitrepo { "git://github.com/puppetlabs/puppet.git": path => "/home/john/work/puppet", } ``` 最后,我們添加 path 參數: ``` newparam(:path) ``` #### 更多用法 一旦你熟悉了創建自己的資源類型的方法,你就可以使用自定義的資源類型替換復雜的 exec 資源, 這會使你的配置清單更具可讀性。 然而,通過對自定義資源類型的代碼添加一些文檔和參數校驗使其更強壯更具可重用性是一個好主意。 ##### 文檔 我在上面故意舉了一個簡單的例子,但是當你要為生產環境開發真正的自定義類型時, 你應該加入文檔字符串描述類型及其參數的用途。例如: ``` Puppet::Type.newtype(:gitrepo) do @doc = "Manages Git repos" ensurable newparam(:source) do desc "Git source URL for the repo" isnamevar end newparam(:path) do desc "Path where the repo should be created" end end ``` ##### 校驗 當某人試圖向資源傳遞錯誤的值時,你可以使用參數校驗(validate)生成有用的錯誤信息。 例如,你可以校驗要創建倉庫的目錄是否已真實存在: ``` newparam(:path) do validate do |value| basepath = File.dirname(value) unless File.directory?(basepath) raise ArgumentError , "The path %s doesn't exist" %basepath end end end ``` 你也可以為參數指定一個允許的取值列表,例如: ``` newparam(:breakfast) do newvalues(:bacon, :eggs, :sausages) end ```
                  <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>

                              哎呀哎呀视频在线观看