2019 DevOps 必備面試題——配置管理篇
- 2019 年 10 月 3 日
- 筆記
原文地址:https://medium.com/edureka/devops-interview-questions-e91a4e6ecbf3
原文作者:Saurabh Kulshrestha
翻譯君:CODING 戴維奧普斯
現在讓我們來看看您對配置管理的了解程度。
Q1、配置管理流程的目標是什麼?
配置管理(CM)的目的是通過使開發或部署過程可控且可重複,來確保產品或系統在其整個生命周期中的完整性,從而創建更高品質的產品或系統。CM 流程允許有序管理系統資訊和系統更改,以便:
- 調整能力
- 提高性能
- 提升可靠性或可維護性
- 延長壽命
- 降低成本
- 降低風險
- 及時糾正缺陷
Q2、IT 資產管理和配置管理有什麼區別?IT 資產和配置有什麼區別?
以下是資產管理和配置管理之間的一些差異:
接下來解釋資產。它具有財務價值以及附加的折舊率。IT 資產只是它的一個子集。任何具有成本的組織都將其用於資產價值計算和稅收計算中的相關收益歸屬於資產管理,此類項目稱為資產。
另一方面,配置項可能有也可能沒有分配給它的財務值,它不會有任何與之相關的折舊,因此它的生命不依賴於其財務價值,而是取決於該項目對該組織的過時時間。
現在,可以舉例說明兩者之間的相似性和差異:
1)相似性:
伺服器 – 它既是資產又是配置項。
2)差異:
建築 – 這是一種資產,但不是配置項。
文檔 – 它是配置項但不是資產
Q3、您對「基礎設施即程式碼」有何看法?它如何適用於 DevOps 方法?它的目的是什麼?
基礎設施即程式碼(IAC)是一種 IT 基礎架構,運維團隊可以使用它來自動管理和通過程式碼進行配置,而不是通過手工的過程。
更快部署的公司也將基礎設施視為軟體:可以使用 DevOps 工具和流程管理的程式碼。利用這些工具,您可以更輕鬆、快速、安全、可靠地更改基礎架構。
Q4、Puppet、Chef、SaltStack 和 Ansible 中哪一個您認為是最好的配置管理(CM)工具?為什麼?
這取決於研發組織的需求,因此需要在所有這些工具上提到以下幾點:
Puppet 是最古老,最成熟的 CM 工具。Puppet 是一個基於 Ruby 的配置管理工具,雖然它有一些免費功能,但 Puppet 大部分很棒的內容僅在付費版本中可用。不需要大量額外功能的組織會發現 Puppet 很有用,但那些需要更多自定義的組織可能需要升級到付費版本。
Chef 是用 Ruby 編寫的,因此可以由熟悉該語言的人進行訂製。它還包括免費功能,如果需要,還可以從開源版本升級到企業級。最重要的是,它是一個非常靈活的產品。
Ansible 是一個非常安全的選項,因為它使用 Secure Shell。它是一個簡單的工具,但除了配置管理之外,它還提供了許多其他服務。它非常容易學習,因此非常適合那些非專職 IT 但仍需要配置管理工具的人員。
SaltStack 是基於 python 的開源 CM 工具,適用於大型企業,但其學習曲線相當低。
Q5、什麼是 Puppet?
它是一個配置管理工具,用於自動執行管理任務。Puppet 有一個 Master-Slave 架構,其中 Slave 必須首先向 Master 發送證書籤名請求,Master 必須簽署該證書才能在 Puppet Master 和 Puppet Slave 之間建立安全連接,如下圖所示。Puppet Slave 向 Puppet Master 發送請求,然後 Puppet Master 向 Slave 推送配置。請參閱下圖解釋上述說明。
Q6、在客戶端使用 Puppet Master 進行身份驗證之前,需要對其證書進行簽名和接受。您將如何自動完成這項任務?
最簡單的方法是在 puppet.conf 中啟用自動簽名。請注意這是一個安全風險。如果您仍想這樣做:
- 為您的 puppet master 建立防火牆 – 將埠 tcp / 8140 限制為您信任的網路。
- 為每個「信任區域」創建 puppet master,並且只在該 puppet master 清單中包含可信節點。
- 切勿使用完整的通配符,例如 * 。
Q7、描述通過 Puppet 自動化流程所取得的最重要的收益
對於這個答案,我建議您解釋一下您過去使用 Puppet 的經歷。可以參考以下示例:
我使用 Puppet 自動配置和部署 Linux 和 Windows 機器。除了將處理時間從一周縮短到 10 分鐘之外,我還使用了角色和配置文件模式,並在 README 中記錄了每個模組的用途,以確保其他人可以使用 Git 更新模組。我寫的模組仍然在使用,但是我的團隊成員和社區成員對它們進行了改進。
Q8、您使用哪些開源或社區工具來使 Puppet 更強大?
在這裡,您需要提及工具以及如何使用這些工具使 Puppet 更強大。以下是一個供您參考的示例:
我們通過項目管理工具進行更改請求,通過內部流程管理請求,然後我們使用 Git 和 Puppet 的 Code Manager 應用程式來管理 Puppet 程式碼。此外,我們使用測試框架通過 Jenkins 中的持續集成流水線運行所有 Puppet 更改。
Q9、什麼是 Puppet 清單?
首先定義清單。每個節點(或 Puppet Agent)都在 Puppet Master 中獲得了用 Puppet 語言編寫的配置細節。這些細節用 Puppet 可以理解的語言編寫,稱為 Manifest。它們由 Puppet 程式碼組成,其文件名使用 .pp 擴展名。
現在舉個例子:您可以在 Puppet Master 中編寫一個清單,用於創建文件並在連接到 Puppet Master 的所有 Puppet Agent(Slaves)上安裝 apache。
Q10、什麼是 Puppet 模組以及它與 Puppet Manifest 的不同之處?
Puppet 模組是清單和數據(例如事實,文件和模板)的集合,它們具有特定的目錄結構。模組對於組織 Puppet 程式碼很有用,因為它們允許您將程式碼拆分為多個清單。使用模組來組織幾乎所有的 Puppet 清單是最佳實踐。
Puppet 程式稱為 Manifest,它由 Puppet 程式碼組成,其文件名使用 .pp 擴展名。
Q11、什麼是 Puppet 的 Facter?
您應該回答 Facter 在 Puppet 中做了什麼:「Facter 收集有關 Puppet Agent 的基本資訊(事實),如硬體細節,網路設置,作業系統類型和版本,IP 地址,MAC 地址,SSH 密鑰等等。這些 facts 隨後會在 Puppet Master 的清單中作為變數提供。」
Q12、什麼是 Chef?
它是一個強大的自動化平台,可將基礎架構轉換為程式碼。Chef 是一個工具,您可以編寫用於自動化流程的腳本,流程涵蓋幾乎與 IT 相關的任何事情。
Chef 的架構包括:
- Chef Server:Chef Server 是基礎架構配置數據的中央存儲。Chef Server 存儲配置節點所需的數據並提供搜索功能,並允許您根據數據動態驅動節點配置。
- Chef Node:Node 是使用 Chef-client 配置的任何主機。Chef-client 在您的節點上運行,與 Chef Server 聯繫以獲取配置節點所需的資訊。由於 Node 是運行 Chef-client 軟體的機器,因此節點有時被稱為「客戶端」。
- Chef Workstation:Chef Workstation 是您用來修改 cookbook 和其他配置數據的主機。
Q13、Chef 的資源是什麼?
資源代表一個基礎架構及其所需的狀態,例如應安裝的軟體包,應運行的服務或應生成的文件。
資源的功能包括以下幾點:
- 描述配置項的所需狀態。
- 聲明將該項目置於所需狀態所需的步驟。
- 指定資源類型,例如包,模板或服務。
- 根據需要列出其他詳細資訊(也稱為資源屬性)。
- 被分類為配方(recipes),來描述工作配置。
Q14、Chef 的 Recipe 是什麼?
Recipes 描述了特定配置或策略的資源集合,描述了配置系統部分所需的一切。
Recipes 的功能:
- 安裝和配置軟體組件。
- 管理文件。
- 部署應用程式。
- 執行其他 recipe。
Q15、Cookbook 與 Recipe 有何不同?
可以簡單地說,「Recipe 是一組資源,主要配置軟體包或某些基礎架構。Cookbook 將 recipe 和其他資訊整合在一起,比單獨使用 recipe 更易於管理。」
譯者註:cookbook 類似於食譜集;recipe 類似於食譜。
Q16、如果未在 Chef 中指定 Resource 操作,會發生什麼?
當您未指定資源的操作時,Chef 會使用默認操作。
現在用一個例子解釋一下,如下資源:
file 『C:UsersAdministratorchef-reposettings.ini』 do content 『greeting=hello world』 end
與下面的資源相同:
file 『C:UsersAdministratorchef-reposettings.ini』 do action :create content 『greeting=hello world』 end
因為:創建是文件資源的默認操作。
Q17、什麼是 Ansible 模組?
模組被認為是 Ansible 的工作單元。每個模組大多是獨立的,可以用標準的腳本語言編寫,如 Python、Perl、Ruby、bash 等。模組的一個重要屬性是冪等性,這意味著即使一個操作重複多次(例如從停電中恢復),它會始終將系統置於同一狀態。
Q18、什麼是 Ansible 的 playbooks?
Playbooks 是 Ansible 的配置、部署和編排語言。他們可以描述您希望遠程系統實施的策略,或者描述一般 IT 流程中的一系列步驟。Playbooks 設計為人類可讀的,並以基本文本語言開發。在基礎級別,可以使用 playbooks 來管理遠程電腦的配置和部署。
Q19、如何查看所有 ansible_ 變數的列表?
Ansible 默認收集有關所管理機器的「facts」,可以在 playbooks 和模板中訪問這些「facts」。要查看電腦的所有可用「facts」的列表,可以將「設置」模組作為臨時操作運行:
Ansible -m setup hostname
這將列印出那個特定主機所有可用「facts」的目錄。