了解如何通過這些 Ansible 模塊實現幾乎任何事情。
- 來源:https://linux.cn/article-12304-1.html
- 作者:Mark Phillips
- 譯者:Xingyu.Wang
了解如何通過這些 Ansible 模塊實現幾乎任何事情。
在我成長的時候,我爺爺在他的花園里有一個棚子。他經常會花幾個小時在那里制作和修復東西。這是在我們有互聯網之前的事情,所以我花了很多時間看他在那個棚子里創造東西。雖然棚子里有很多工具,從鉆頭到車床到電器配件,還有很多東西我至今都無法辨認,但他使用的只是他手頭的一小部分。然而,他能做到的事情似乎永遠沒有極限。
我之所以告訴你這個故事,是因為我覺得我的職業生涯是在一個隱喻的棚子里度過的。計算機也是如此多的工具,都在一個狹?。ㄌ摂M?)的空間里。而工具棚中又有工具棚 —— 我最喜歡的是 Ansible。最近的 2.9 版本有 3,681 個模塊! **3,681 個??!**當我在 2013 年夏天第一次開始使用 Ansible 時,1.2.1 版本只有 113 個模塊,然而,正如 我當時寫的 ,我仍然可以實現任何我想象到的東西。
模塊是 Ansible 的支柱,是讓重任輕裝上陣的齒輪。它們被設計為做好一項工作,從而實現了 Unix 哲學 。我們就是這樣來把這么多的模塊捆綁在一起,作為樂團的指揮,Ansible 現在有很多樂器可以聽從它的指揮。
回顧一下我多年來的 Ansible 劇本和角色的 Git 倉庫,我發現我只用了 35 個模塊。這個小的子集被用來構建大型基礎設施。不過,我想知道如果用一個更小的子集可以實現什么?當我回顧這 35 個模塊時,我在思考,我能否只用 5 個模塊就能達到同樣的效果。因此,以下是我最喜歡的五個模塊,順序無關。
5. authorized_key
SSH 是 Ansible 的核心,至少對于除了 windows 以外的幾乎所有其他功能都是如此。在 Ansible 中高效使用 SSH 的關鍵(沒有雙關語)是…… 密鑰 !順便提一下,你可以用 SSH 密鑰為安全性做很多非常酷的事情。值得仔細閱讀 sshd 手冊頁 中的 “authorized_keys” 部分。如果你需要精細的用戶訪問控制,管理 SSH 密鑰可能會變得很費力,盡管我可以用接下來的兩個我最愛的模塊中的任何一個,但我更喜歡使用 authorized_key 這個模塊,因為它 可以通過變量輕松管理 。
4. file
除了顯而易見的將文件放置在某個地方的功能外, file 模塊還可以設置所有權和權限。我想說的是,這樣一個模塊就能帶來很多的好處。很大一部分安全問題也與設置權限有關,所以 file 模塊和 authorized_key 可以很好地配合在一起使用。
3. template
操作文件內容的方法太多了,我看到很多人都在使用 lineinfile 。我自己也用它做過小任務。但是, template 模塊就清晰多了,因為你維護了整個文件的上下文。我更喜歡以任何人都可以輕松理解的方式編寫 Ansible 的內容 —— 對我而言,這意味著容易理解正在發生的事情。 template 的使用意味著能夠看到你正在放置內容的整個文件、全部你正在改變的變量。
2. uri
當前發布版中的許多模塊利用 Ansible 作為編排工具。它們與另一個服務對話,而不是做一些具體的事情,比如把一個文件放到一個地方。通常,這種對話也是通過 HTTP 進行的。在許多這樣的模塊出現之前,你可以直接使用 uri 模塊對 API 進行編程。它是一個強大的訪問工具,可以使你能夠做很多事情。在我的 Ansible 虛擬棚子里,我不會少了它。
1. shell
這是我們工具包里的王牌、瑞士軍刀。如果你為如何控制其他東西而非常苦惱,別說,說就是 shell 。有人會說,我們這樣說是讓 Ansible 成為了 Bash 腳本 —— 但是,我想說的是,這還是有點好處的,因為可以在你的劇本和角色中使用 name 參數記錄下每一步。對我來說,這就像一個很大的獎勵一樣。早在我還在做咨詢的時候,我曾經幫助一個數據庫管理員(DBA)遷移到 Ansible。這位 DBA 并不喜歡改變,對改變工作方法也是推三阻四。于是,為了簡化遷移到 Ansible 方式,我們在 Ansible 中使用 shell 模塊調用了一些現有的數據庫管理腳本。并在任務中附帶了翔實的 name 聲明。
通過這五個模塊,你可以實現很多事情。是的,為完成特定任務而設計的模塊會讓你的生活更加輕松。但是,借助簡單的工程設計,你幾乎可以事半功倍。Ansible 開發者 Brian Coca 是這方面的大師, 他的技巧和竅門講座 總是值得一看。
你覺得我喜歡的五大模塊怎么樣?如果你也必須限制在這么多模塊,你會選擇哪五個,為什么?在下面的評論中告訴我吧!
via: https://opensource.com/article/19/11/ansible-modules
作者: Mark Phillips 選題: lujun9972 譯者: wxy 校對: wxy
本文由 LCTT 原創編譯, Linux中國 榮譽推出