天天看點

2019 DevOps 必備面試題——配置管理篇

原文位址:https://medium.com/edureka/devops-interview-questions-e91a4e6ecbf3

原文作者:Saurabh Kulshrestha

翻譯君:CODING 戴維奧普斯

現在讓我們來看看您對配置管理的了解程度。

Q1、配置管理流程的目标是什麼?

配置管理(CM)的目的是通過使開發或部署過程可控且可重複,來確定産品或系統在其整個生命周期中的完整性,進而建立更高品質的産品或系統。CM 流程允許有序管理系統資訊和系統更改,以便:

  • 調整能力
  • 提高性能
  • 提升可靠性或可維護性
  • 延長壽命
  • 降低成本
  • 降低風險
  • 及時糾正缺陷

Q2、IT 資産管理和配置管理有什麼差別?IT 資産和配置有什麼差別?

以下是資産管理和配置管理之間的一些差異:

2019 DevOps 必備面試題——配置管理篇

接下來解釋資産。它具有财務價值以及附加的折舊率。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 推送配置。請參閱下圖解釋上述說明。

2019 DevOps 必備面試題——配置管理篇

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 和其他配置資料的主機。
2019 DevOps 必備面試題——配置管理篇

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”的目錄。

繼續閱讀