操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    2016 年末開始的 ,現在已經擁有一個 API 和一個成長中的社區。-- Clint

    本文導航? 是一個庫09%?深入了解命令行11%?配置文件17%?工作空間20%?初始化 ( init)23%?配給 ( up)29%?庫存生成43%?卸載 ( )48%? 的 API54%?%?使用 %?認證的驅動程序76%?配置78%?簡化89%?社區的成長90%編譯自|

    作者|Clint

    譯者|qhwdw

    2016 年末開始的 ,現在已經擁有一個 API 和一個成長中的社區。

    去年,我的團隊公布了[1][2],這是一個使用 的混合云編配工具。配給云資源從來沒有這么容易便捷過。借助 強力支持, 專注于簡化,使云資源讓用戶可以觸手可及。在這篇文章中,我將介紹 ,并且去看看過去的 10 個月該項目是如何逐漸成熟。

    (LCTT 譯注:關于 應該翻譯成慣例的“編排”還是“編配”,有個 @ 提出的建議[3],歡迎大家參與討論。)

    剛出現的時候,使用-命令去運行 ,雖然可以完成,但是還是很復雜的, 現在有一個前端命令行用戶界面(CLI),它是用Click[4]寫的,而且它使 比以前更簡化。

    沒有止步于 CLI, 現在還有一個[5]API,它可以用于管理資源,比如, EC2 和 實例、網絡、存儲、安全組等等。這個 API文檔[6]可以在你想去嘗試 的 API 時幫助你。

    是一個庫

    因為 的核心是 [7],其角色、模塊、過濾器,以及任何被稱為 模塊的東西都被移進 庫中,這意味著我們雖然可以直接調用 ,但它不是資源管理的首選機制。可執行文件事實上已經成為該命令行的前端。

    深入了解命令行

    讓我們深入了解命令行:

    1. $ linchpin

    2. Usage: linchpin [OPTIONS] COMMAND [ARGS]...

    3. ?linchpin: hybrid cloud orchestration

    4. Options:

    5. ?-c, --config PATH ? ? ? Path to config file

    6. ?-w, --workspace PATH ? ?Use the specified workspace if the familiar Jenkins

    7. ? ? ? ? ? ? ? ? ? ? ? ? ?$WORKSPACE environment variable is not set

    8. ?-v, --verbose ? ? ? ? ? Enable verbose output

    9. ?--version ? ? ? ? ? ? ? Prints the version and exits

    10. ?--creds-path PATH ? ? ? Use the specified credentials path if WORKSPACE

    11. ? ? ? ? ? ? ? ? ? ? ? ? ?environment variable is not set

    12. ?-h, --help ? ? ? ? ? ? ?Show this message and exit.

    13. Commands:

    14. ?init ? ? Initializes a linchpin project.

    15. ?up ? ? ? Provisions nodes from the given target(s) in...

    16. ?destroy ?Destroys nodes from the given target(s) in...

    你可以立即看到一個簡單的描述,以及命令的選項和參數。這個幫助的最下面的三個命令是本文的重點內容。

    配置文件

    之前有個名為.yml的文件。但現在這個文件沒有了,替換它的是一個 ini 形式的配置文件,稱為.conf。雖然這個文件可以被修改或放到別的地方,它可以放置在配置文件容易找到的庫路徑中。在多數情況下,.conf文件是不需要去修改的。

    工作空間

    工作空間是一個定義好的文件系統路徑,它是一個邏輯上的資源組。一個工作空間可以認為是一個特定環境、服務組、或其它邏輯組的一個單點。它也可以是一個所有可管理資源的大的存儲容器。

    工作空間可以在命令行上使用--(-w)選項去指定,隨后是工作空間路徑。它也可以使用環境變量指定(比如,bash 中的$)。默認工作空間是當前目錄。

    初始化 ( init)

    運行 init將生成一個需要的目錄結構,以及一個、、和文件的示例:

    1. $ export WORKSPACE=/tmp/workspace

    2. $ linchpin init

    3. PinFile and file structure created at /tmp/workspace

    4. $ cd /tmp/workspace/

    5. $ tree

    6. .

    7. ├── credentials

    8. ├── hooks

    9. ├── inventories

    10. ├── layouts

    11. ?? └── example-layout.yml

    12. ├── PinFile

    13. ├── resources

    14. └── topologies

    15. ? ?└── example-topology.yml

    在這個時候,可以執行 up,然后提供一個虛擬機,和一個名為-的網絡。會生成一個庫存,并放在/.目錄中。它可以通過讀取/-.yml和的值了解它。

    配給( up)

    一旦有了一個 、拓撲、和一個可選的布局,就可以配給了。

    我們使用 dummy (模擬)工具,因為用它來配給非常簡單;它不需要任何額外的東西(認證、網絡、等等)。dummy 配給程序會創建一個臨時文件,它表示所配給的主機。如果臨時文件沒有任何數據,說明主機沒有被配給,或者它已經被銷毀了。

    dummy 配給程序的目錄樹大致如下:

    1. $ tree

    2. .

    3. ├── hooks

    4. ├── inventories

    5. ├── layouts

    6. ?? └── dummy-layout.yml

    7. ├── PinFile

    8. ├── resources

    9. └── topologies

    10. ? ?└── dummy-cluster.yml

    也很簡單;它指定了它的拓撲,并且為目標提供一個可選的布局:

    1. ---

    2. dummy1:

    3. ?topology: dummy-cluster.yml

    4. ?layout: dummy-layout.yml

    dummy-.yml拓撲文件是一個引用,指向到配給的三個類型的資源:

    1. ---

    2. topology_name: "dummy_cluster" # topology name

    3. resource_groups:

    4. ?-

    5. ? ?resource_group_name: "dummy"

    6. ? ?resource_group_type: "dummy"

    7. ? ?resource_definitions:

    8. ? ? ?-

    9. ? ? ? ?name: "web"

    10. ? ? ? ?type: "dummy_node"

    11. ? ? ? ?count: 3

    執行命令 up將基于上面的(在這個案例中是)生成和文件。

    1. $ linchpin up

    2. target: dummy1, action: up

    3. $ ls {resources,inventories}/dummy*

    4. inventories/dummy_cluster.inventory ?resources/dummy_cluster.output

    要驗證 dummy 集群的資源,可以檢查/tmp/dummy.hosts:

    1. $ cat /tmp/dummy.hosts

    2. web-0.example.net

    3. web-1.example.net

    4. web-2.example.net

    Dummy 模塊為假定的(或模擬的)配給提供了一個基本工具。關于在 、AWS EC2、 Cloud 上和 的更多詳細情況,可以去看示例[8]。

    庫存生成

    作為上面提到的 的一部分,可以指定一個。如果這個文件被指定,并且放在一個正確的位置上,就會為配給的資源自動生成一個用于 的靜態庫存文件:

    1. ---

    2. inventory_layout:

    3. ?vars:

    4. ? ?hostname: __IP__

    5. ?hosts:

    6. ? ?example-node:

    7. ? ? ?count: 3

    8. ? ? ?host_groups:

    9. ? ? ? ?- example

    當 up運行完成,資源文件將提供一個很有用的詳細信息。特別是,插入到靜態庫存的 IP 地址或主機名:

    1. [example]

    2. web-2.example.net hostname=web-2.example.net

    3. web-1.example.net hostname=web-1.example.net

    4. web-0.example.net hostname=web-0.example.net

    5. [all]

    6. web-2.example.net hostname=web-2.example.net

    7. web-1.example.net hostname=web-1.example.net

    8. web-0.example.net hostname=web-0.example.net

    卸載 ( )

    也可以執行資源卸載。卸載動作一般認為該資源是已經配給好的;然而,因為 是冪等的, 將僅檢查確認該資源是啟用的。如果這個資源已經是啟用的,它將去卸載它。

    命令 也將使用資源和/或拓撲文件去決定合適的卸載過程。

    角色不使用資源,卸載期間僅有拓撲:

    1. $ linchpin destroy

    2. target: dummy1, action: destroy

    3. $ cat /tmp/dummy.hosts

    4. -- EMPTY FILE --

    針對暫時的資源,卸載功能有一些限制,像網絡、存儲、等等。網絡資源可以被用于多個云實例。在這種情況下,執行一個 某些資源就不能卸載。這取決于每個供應商的實現。查看每個供應商[9]的具體實現。

    的 API

    在命令行中實現的功能大多數都是用 API 寫的。這個 API,雖然不完整,但它已經成為 工具的至關重要的組件。

    這個 API 由下面的三個包組成:

    ??.cli?.api

    該命令行工具是基于包來管理的。它導入了.cli模塊和類,該類是.api的子類。這樣做的目的是為了允許使用.api來做其它的 實現,比如像計劃中的 API。

    更多信息,去查看 API on Read the Docs[6]。

    Hook

    1.0 的其中一個大的變化是轉向 hook。hook 的目標是在運行期間的特定狀態下,允許配置使用更多外部資源。目前的狀態有:

    ?preup: 在配給拓撲資源之前運行?: 在配給拓撲資源之后運行,并且生成可選的庫存?: 卸載拓撲資源之前運行?: 卸載拓撲資源之后運行

    在每種狀態下必須使用角色管理工具安裝或配置 2.0,這些 hooks 允許運行外部腳本。存在幾種類型的 hook,包括一個定制的叫做 。這是一個內置的 的列表:

    ?shell: 允許任何的內聯的 shell 命令,或者一個可運行的 shell 腳本?: 運行一個 腳本?: 運行一個 ,允許傳遞一個和作為 字典?: 運行一個 Node.js 腳本?ruby: 運行一個 Ruby 腳本

    hook 被綁定到一個特定的目標,并且每個目標使用時必須重新聲明。將來,hook 將可能是全局的,然后它們在每個目標的hooks節下命名會更簡單。

    使用 hook

    hook 描述起來非常簡單,但理解它們強大的功能卻并不簡單。這個特性的存在是為了給用戶靈活提供那些 開發者所沒有考慮到的功能。這個概念可能會帶來 ping 一套系統的簡單方式,舉個實例,比如在運行另一個 hook 之前。

    更仔細地去研究工作空間,你可能會注意到hooks目錄,讓我們看一下這個目錄的結構:

    1. $ tree hooks/

    2. hooks/

    3. ├── ansible

    4. ? ├── ping

    5. ? ?? └── dummy_ping.yaml

    6. └── shell

    7. ? ?└── database

    8. ?? ? ? ├── init_db.sh

    9. ?? ? ? └── setup_db.sh

    在任何情況下,hook 都可以用在中,展示如下:

    1. ---

    2. dummy1:

    3. ?topology: dummy-cluster.yml

    4. ?layout: dummy-layout.yml

    5. ?hooks:

    6. ? ?postup:

    7. ? ? ?- name: ping

    8. ? ? ? ?type: ansible

    9. ? ? ? ?actions:

    10. ? ? ? ? ?- dummy_ping.yaml

    11. ? ? ?- name: database

    12. ? ? ? ?type: shell

    13. ? ? ? ?actions:

    14. ? ? ? ? ?- setup_db.sh

    15. ? ? ? ? ?- init_db.sh

    基本概念是有三個 動作要完成。Hook 是從上到下運行的,因此,任務將首先運行,緊接著是兩個 shell 任務,.sh和.sh。假設 hook 運行成功。將發生一個系統的 ping,然后,一個數據庫被安裝和初始化。

    認證的驅動程序

    在 的最初設計中,開發者決定在 中管理認證;然而必須使用角色管理工具安裝或配置 2.0,逐漸有更多的 API 和命令行驅動的工具后,意味著認證將被置于 庫之外,并且還可以根據需要去傳遞認證值。

    配置

    讓用戶使用驅動程序提供的認證方法去完成這個任務。舉個實例,如果對于 調用的拓撲,標準方法是使用一個 yaml 文件,或者類似于OS_前綴的環境變量。.yaml文件是一個 文件的組成部分,它有一個auth節:

    1. clouds:

    2. ?default:

    3. ? ?auth:

    4. ? ? ?auth_url: http://stack.example.com:5000/v2.0/

    5. ? ? ?project_name: factory2

    6. ? ? ?username: factory-user

    7. ? ? ?password: password-is-not-a-good-password

    更多詳細信息在 [10]。

    這個.yaml或者任何其它認證文件位于path(比如,~/./)中,并在拓撲中引用:

    1. ---

    2. topology_name: openstack-test

    3. resource_groups:

    4. ?-

    5. ? ?resource_group_name: linchpin

    6. ? ?resource_group_type: openstack

    7. ? ?resource_definitions:

    8. ? ? ?- name: resource

    9. ? ? ? ?type: os_server

    10. ? ? ? ?flavor: m1.small

    11. ? ? ? ?image: rhel-7.2-server-x86_64-released

    12. ? ? ? ?count: 1

    13. ? ? ? ?keypair: test-key

    14. ? ? ? ?networks:

    15. ? ? ? ? ?- test-net2

    16. ? ? ? ?fip_pool: 10.0.72.0/24

    17. ? ?credentials:

    18. ? ? ?filename: clouds.yaml

    19. ? ? ?profile: default

    path可以通過修改.conf改變。

    拓撲在底部包含一個新的節。使用、ec2、和模塊,也可以去指定類似的憑據。認證驅動程序將查看給定的名為.yaml的文件,并搜索名為的配置。

    假設認證被找到并被加載,配給將正常繼續。

    簡化

    雖然 可以完成復雜的拓撲、庫存布局、hooks、和認證管理,但是,終極目標是簡化。通過使用一個命令行界面的簡化,除了提升已經完成的 1.0 版的開發者體驗外, 將持續去展示復雜的配置可以很簡單地去管理。

    社區的成長

    在過去的一年中, 的社區現在已經有了郵件列表[11]和一個 IRC 頻道(# on ,而且在[12]中我們很努力地管理它。

    在過去的一年里,社區成員已經從 2 位核心開發者增加到大約 10 位貢獻者。更多的人持續參與到項目中。如果你對 感興趣,可以給我們寫信、在 上提問,加入 IRC,或者給我們發郵件。

    這篇文章是基于 Clint 在 上的演講 : cloud using [13]整理的。[14]將在 2017 年 7 月 12-15 日在鹽城湖市舉行。

    作者簡介:

    Clint - 工作于 Red Hat 是一位負責原子項目( )的高級軟件工程師。他的工作是為 、、和 Red Hat Linux(RHEL)提供自動原子服務器構建。

    via:

    作者:Clint [16]譯者:qhwdw校對:wxy

    本文由LCTT原創編譯,Linux中國榮譽推出

    LCTT 譯者

    qhwdw 共計翻譯:34篇貢獻時間:46 天

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有