切斷線索:從 Puppet Enterprise 遷移到 Ansible Tower。 第1部分

透過從 Puppet Enterprise 遷移到 Ansible Tower,國家環境衛星資料資訊服務 (NESDIS) 將 Red Hat Enterprise Linux (RHEL) 的配置管理成本降低了 35%。在這段「我們是如何做到的」影片中,系統工程師 Michael Rau 解釋了此次遷移的案例,分享了從一種 SCM 遷移到另一種 SCM 的有用技巧和經驗教訓。

透過該影片您將了解到:

  • 如何向管理階層證明從 Puppet Enterprise 切換到 Ansible Tower 的可行性;
  • 使用什麼策略來使過渡盡可能順利;
  • 將 PE 清單轉碼為 Ansible Playbook 的技巧;
  • Ansible Tower 最佳安裝建議。

切斷線索:從 Puppet Enterprise 遷移到 Ansible Tower。 第1部分

大家好,我叫 Michael Rau,是 ActioNet 的高級系統工程師,為國家海洋暨大氣總署 (NOAA) NESDIS 服務工作。今天我們將討論字串修剪 - 我自己從 Puppet Enterprise 遷移到 Ansible Tower 的經歷。本次演講的主題是「看看我今年早些時候完成這項轉變後留下的傷疤」。我想分享我在這個過程中學到的東西。因此,當你承擔這樣的事情時,根據我的經驗,你可以在不需要任何額外工作的情況下完成過渡。

您可以在 Ansible Fest 的每次簡報的開頭看到與此類似的幻燈片。這張投影片概述了我公司的自動化歷史。我對此並不陌生,因為我自 2007 年以來一直在使用 Puppet/Puppet Enterprise。我於 2016 年開始使用 Ansible,和該產品的許多其他用戶一樣,我被使用命令列和簡單腳本(劇本)的「技巧」的可能性所吸引。 2017 年底,我向管理階層詢問了遷移到 Ansible Tower 的充分理由。稍後我將告訴您促使我採取這一步的原因。在得到管理層的同意後,又花了幾個月的時間來完成這個計劃,我在今年XNUMX-XNUMX月份進行了過渡。因此,我們完全放棄了 Puppet,轉而使用 Ansible,這是一件很棒的事。

切斷線索:從 Puppet Enterprise 遷移到 Ansible Tower。 第1部分

Ansible 最吸引我的是編寫和使用角色和劇本的能力。角色非常適合創建不同但相關的任務,並將與這些任務相關的所有數據放在一處。 Playbook 是一種 YAML 語法腳本文件,描述一個或多個主機的操作。我向使用者(主要是軟體開發人員)介紹這些功能。 Ansible Tower 讓您能夠說:“不,您沒有 shell 訪問權限,但我讓您能夠運行所有 Tower 進程並在需要時重新啟動服務。”我會告訴你我們的工作環境和使用的設備。

切斷線索:從 Puppet Enterprise 遷移到 Ansible Tower。 第1部分

這是一個聯邦LAN,透過雲端MPLS 連接的7 個實體網站、140 台RHEL 伺服器,其中99% 是虛擬伺服器(vSphere)、SuperMicro 硬體、NexentaStore 網路儲存、一組Cisco、Arista 和Cumulus 交換器以及Fortinet UTM 統一威脅管理每個網站上的工具。

聯邦網路意味著我必須使用法律規定的所有資訊安全措施。您應該記住,Puppet Enterprise 不支援我們使用的大多數硬體。我們被迫使用預算硬件,因為政府機構在為這項費用項目提供資金方面存在問題。這就是為什麼我們購買 SuperMicro 硬體並用單獨的零件組裝我們的設備,其維護由政府合約保證。我們使用 Linux,這是切換到 Ansible 的重要原因之一。

我們與 Puppet 的歷史如下。

切斷線索:從 Puppet Enterprise 遷移到 Ansible Tower。 第1部分

2007 年,我們有一個 20-25 個節點的小型網絡,在其中部署了 Puppet。基本上,這些節點只是 RedHat「盒子」。 2010 年,我們開始在 45 個節點上使用 Puppet Dashboard Web 介面。隨著網路的不斷擴展,我們於 2014 年遷移到 PE 3.3,透過對 75 個節點的清單重寫進行了徹底的過渡。這是必須要做的,因為 Puppet 喜歡改變遊戲規則,而在這種情況下,他們完全改變了語言。一年後,當對 Puppet Enterprise 版本 3 的支援結束時,我們被迫遷移到 PE 2015.2。我們必須為新伺服器再次重寫清單併購買保留 100 個節點的許可證,儘管當時我們只有 85 個節點。

僅僅兩年過去了,我們再次需要做大量的工作來遷移到新版本PE 2。我們購買了 2016.4 個節點的許可證,但實際上只有 300 個節點。我們再次必須對清單進行重大更改,因為新版本的語言與 130 年版本的語言具有不同的語法。結果,我們的SCM從SVN版本控制切換到Bitbucket(Git)。這就是我們與 Puppet 的「關係」。

因此,我必須使用以下論點向管理層解釋為什麼我們需要轉移到不同的 SCM。首先是服務價格高。我與 RedHat 的人員交談,他們說使用 Ansible Tower 運行 300 個節點網路的成本是 Puppet Enterprise 成本的一半。如果您也購買 Ansible Engine,成本將大致相同,但您將獲得比 PE 更多的功能。由於我們是一家由聯邦預算資助的國有公司,因此這是一個非常強大的論點。

切斷線索:從 Puppet Enterprise 遷移到 Ansible Tower。 第1部分

第二個論點是多功能性。 Puppet 僅支援具有 Puppet 代理程式的硬體。這意味著所有交換器上都必須安裝代理,並且必須是最新版本。如果您的某些交換器支援一個版本,而有些則支援另一個版本,則需要在它們上安裝新版本的 PE 代理,以便它們都可以在同一個 SCM 系統中運作。

Ansible Tower 系統的工作方式有所不同,因為它沒有任何代理,但它具有支援 Cisco 交換器和所有其他交換器的模組。此SCM支援Qubes OS、Linux和4.NET UTM。 Ansible Tower 也支援基於 Illumos 核心(基於 Unix 的開源作業系統)的 NexentaStore 網路儲存控制器。雖然支援很少,但 Ansible Tower 仍然做到了。

第三個論點對我和我們的政府來說都非常重要,那就是易用性。我花了 10 年的時間來掌握 Puppet 模組和清單程式碼,但我在一週內就學會了 Ansible,因為這個 SCM 比較容易使用。當然,如果您運行可執行文件,除非您不必要地這樣做,否則智慧且響應迅速的處理程序將使用它們。基於 YAML 的 playbook 易於學習且易於使用。那些以前從未聽說過 YAML 的人可以簡單地閱讀腳本並輕鬆理解它是如何工作的。

老實說,Puppet 讓開發人員的工作變得更加困難,因為它是基於使用 Puppet Master。它是唯一允許與 Puppet 代理程式通訊的機器。如果您對清單進行了任何變更並想要測試您的程式碼,則必須重寫 Puppet Master 的程式碼,即設定 Puppet Master /etc/hosts 檔案以連接所有用戶端並啟動 Puppet Server 服務。這樣你才能在一台主機上測試網路設備的運作。這是一個相當痛苦的過程。
Ansible 中的一切都變得更簡單。您所需要做的就是為可以透過 SSH 與被測主機進行通訊的機器開發程式碼。這更容易使用。

Ansible Tower 的下一個重大優勢是能夠利用您現有的支援系統並維護現有的硬體配置。此 SCM 使用有關您的基礎架構和硬體、虛擬機器、伺服器等的所有可用信息,無需任何其他步驟。它可以與您的 RH 衛星伺服器(如果您有的話)進行通信,並為您提供 Puppet 永遠無法實現的整合。

還有一個重要的事情就是細節的控制。您知道 Puppet 是一個模組化系統,它是一個客戶端-伺服器應用程序,因此您必須在一個長清單中定義所有電腦的現有方面。在這種情況下,必須每半小時測試系統每個單獨元素的狀態 - 這是預設週期。這就是 Puppet 的工作原理。

Tower 可以幫助您避免這種情況。您可以不受限制地在各種設備上運行各種進程;您可以執行基本工作、運行其他重要進程、設定安全系統以及使用資料庫。在 Puppet Enterprise 中你可以做所有困難的事。因此,如果您在一台主機上進行了配置,則更改需要一段時間才能在其餘主機上生效。在 Ansible 中,所有變更同時生效。

最後,我們來看看安全模組。 Ansible Tower 的實作非常簡單,非常精確且細心。您可以授予使用者對特定服務或特定主機的存取權限。我對習慣在 Windows 上工作的員工這樣做,限制他們對 Linux shell 的存取。我確保他們有權訪問 Tower,以便他們只能完成工作並僅運行與他們相關的服務。

切斷線索:從 Puppet Enterprise 遷移到 Ansible Tower。 第1部分

讓我們看看您需要提前做哪些事情,以便更輕鬆地過渡到 Ansible Tower。首先,你需要準備好你的設備。如果基礎架構的某些元素尚未存在於資料庫中,則需要將它們新增至資料庫。有些系統不會改變其特性,因此不在 Puppet 資料庫中,但如果您在遷移到 Tower 之前不將它們添加到其中,您將失去許多優勢。這可能是一個「髒」的初步資料庫,但它應該包含有關您擁有的所有設備的資訊。因此,您應該編寫動態硬體腳本,自動將所有基礎架構變更推送到資料庫中,然後 Ansible 將知道新系統上應該存在哪些主機。您不需要告訴該 SCM 您新增了哪些主機以及哪些主機不再存在,因為它會自動知道所有這些。資料庫中的資料越多,Ansible 就越有用和靈活。它的工作原理就好像它只是從資料庫中讀取硬體狀態條碼一樣。

花點時間熟悉 Ansible 中的命令列。運行一些自訂命令來測試硬體腳本,編寫並運行一些簡單但有用的劇本腳本,在適當的情況下使用 Jinja2 模板。嘗試使用常見的硬體配置為複雜的多步驟過程編寫角色和腳本。玩這些東西,測試它是如何工作的。透過這種方式,您將學習如何使用 Tower 中使用的庫建立工具。我已經說過,我花了大約3個月的時間來準備過渡。我認為根據我的經驗,您將能夠更快地做到這一點。不要認為這時間是浪費,因為稍後您將體驗到所做工作的所有好處。

接下來,您需要確定您對 Ansible Tower 的期望,該系統到底應該為您做什麼。

切斷線索:從 Puppet Enterprise 遷移到 Ansible Tower。 第1部分

您需要將系統部署在裸硬體、裸虛擬機器上嗎?或者您想保持現有設備的原始運作條件和設定?對於上市公司來說,這是一個非常重要的方面,因此您需要確保能夠在現有配置上遷移和部署 Ansible。確定您想要自動化的日常管理流程。了解您是否需要在新系統上部署特定的應用程式和服務。列出你想做的事情並確定優先順序。

然後開始編寫腳本程式碼和角色來實現您計劃完成的任務。將它們組合成項目,即相關劇本的邏輯集合。每個專案將屬於一個單獨的 Git 儲存庫或不同的儲存庫,具體取決於您使用的程式碼管理器。您可以透過手動將playbook 腳本和playbook 目錄放置在Tower 伺服器上的專案基本路徑中,或將playbook 放置在Tower 支援的任何原始程式碼管理(SCM) 系統(包括Git、Subversion、Mercurial 和Red Hat)中來管理playbook 腳本和playbook 目錄見解。在一個專案中,您可以根據需要放置任意數量的腳本。例如,我創建了一個基本項目,其中放置了一個用於 RedHat 核心元素的腳本、一個用於 Linux 核心的腳本以及用於其餘基線的腳本。因此,在一個專案中,有多種角色和場景是透過一個 Git 儲存庫進行管理的。

透過命令列運行所有這些東西是測試其功能的好方法。這將為您安裝 Tower 做好準備。

讓我們來談談對 Puppet 清單進行轉碼,因為我在這方面花了很多時間,直到弄清楚實際需要做什麼。

切斷線索:從 Puppet Enterprise 遷移到 Ansible Tower。 第1部分

正如我之前所說,Puppet 將所有設定和硬體選項儲存在一個長清單中,而該清單儲存了該 SCM 應該執行的所有操作。進行轉換時,您不需要將所有任務都塞進一個清單中;相反,請考慮新系統的結構:角色、腳本、標籤、群組以及應該放在哪裡的內容。一些自治網路元素應該被分組為可以為其建立腳本的群組。涉及大量資源(包括獨立類別)的更複雜的基礎設施元素可以組合成角色。在遷移之前,您需要對此做出決定。如果您要建立不適合在一個螢幕上顯示的大型角色或場景,您應該使用標籤來擷取基礎架構的特定部分。

18:00

切斷線索:從 Puppet Enterprise 遷移到 Ansible Tower。 第2部分

一些廣告🙂

感謝您與我們在一起。 你喜歡我們的文章嗎? 想看更多有趣的內容? 通過下訂單或推薦給朋友來支持我們, 面向開發人員的雲 VPS,4.99 美元起, 我們為您發明的入門級服務器的獨特模擬: VPS (KVM) E5-2697 v3(6 核)10​​4GB DDR480 1GB SSD 19Gbps XNUMX 美元或如何共享服務器的全部真相? (適用於 RAID1 和 RAID10,最多 24 個內核和最多 40GB DDR4)。

Dell R730xd 在阿姆斯特丹的 Equinix Tier IV 數據中心便宜 2 倍? 只有這裡 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 電視低至 199 美元 在荷蘭! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - 99 美元起! 閱讀 如何建設基礎設施公司同級使用價值730歐元的Dell R5xd E2650-4 v9000服務器一分錢?

來源: www.habr.com

添加評論