<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>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # Chef Server Rest API Chef11 中的核心api用erlang重寫了,我們這里暫時不去深入探究erlang的代碼,但是我們應該知道,erlang是性能的保證。erlang天生就是處理高并發的高手,chef server使用erlang來開發核心Api,我們幾乎不用擔心Chef Server的性能問題了。 Chef Server還使用了Rabbitmq來提供消息隊列,來處理search服務,更是為了性能所考慮,消息隊列有諸多好處,增加請求吞吐量、保證健壯性請求不易丟失等。 我們舉個例子來說明下Chef Server Rest API: ![res-api](https://box.kancloud.cn/2015-08-23_55d9d7af05034.png) ![res-api](https://box.kancloud.cn/2015-08-23_55d9d7af20023.png) 我們可以看得出來, chef server rest api,跟我們Rails基礎中講過的restful概念,是一樣的。 ### 調用 Chef 命令 為了實現上層系統調用 Chef 的完全自動化,有時候需要自動化 Chef Client 的配置。將一個非 Chef Client 的普通機器自動注冊成 Chef Client,能提高整個系統的自動化程度。Chef 的 REST API 沒有提供注冊 Chef Client 的功能,而 Chef 的 bootstrap 命令是用來完成這個工作的。所以上層系統需要使用某些機制(如使用 JSch)來在 Chef Workstation 上運行 bootstrap 命令。 通常我們用如下命令來將一個普通機器注冊成 Chef Node: ~~~ knife bootstrap client_IP -x username -P password ~~~ 如果客戶端已經安裝了 chef-client軟件,此命令會直接將這個客戶端注冊成一個 Chef Node;如果客戶端沒有安裝 chef-client軟件,此命令會試圖從網絡上直接下載安裝包去安裝 chef-client 然后注冊。 對于沒有外部網絡連接的客戶端,又沒有安裝 chef-client軟件,我們可以自定義 bootstrap 所用的模板,讓其不從網絡下載chef-client,而直接從本地服務器下載 chef-client 進行安裝(前提是配置一個本地服務器如 HTTP 服務器,將 chef-client 軟件預先放到服務器上)。 如果是默認安裝,bootstrap 所用的模板位于 Workstation 的/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.10.4/lib/chef/knife/bootstrap/目錄下。我們可以在此目錄下新建一個模板,命名為 ubuntu12.04-gems-mine,在原有的 ubuntu12.04-gems 模板基礎上進行修改,如將安裝 chef-client 軟件的部分自定義: ~~~ if [ ! -f /usr/bin/chef-client ]; then mkdir -p /tmp/chef-installer cd /tmp/chef-installer #Copy chef client rpm from HTTP file server wget http://http_server_ip/chef/chef-11.12.2-1.el6.x86_64.rpm rpm -ivh chef-*.rpm rm -rf /tmp/chef-installer fi ~~~ 然后我們使用自定義的模板來運行 bootstrap 命令: ~~~ # knife bootstrap client_ip -x username -P password –d ubuntu12.04-gems-mine ~~~ 這樣在 bootstrap 一個普通的沒有安裝 chef-client 的機器時,Chef 就會從本地的服務器上下載 chef-client 軟件(無需外部網絡連接),安裝在客戶機上,然后注冊成 Chef Node。可見,對于沒有提供 Chef REST API 的一些特殊 Chef 功能,可以通過調用 Chef 的命令行來完成。 ### 結語 Chef Rest API, 和Rails的restful架構是一樣的概念,我們通過調用 Chef 的 REST API,就可以完成對 Chef 資源的管理。而對于Rest Api并沒有提供的功能,我們可以直接使用knife來調用chef命令來完成我們的工作。
                  <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>

                              哎呀哎呀视频在线观看