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

原文地址:https://medium.com/edureka/devops-interview-questions-e91a4e6ecbf3
原文做者:Saurabh Kulshrestha
翻譯君:CODING 戴維奧普斯python

如今讓咱們來看看您對配置管理的瞭解程度。apache

Q一、配置管理流程的目標是什麼?

配置管理(CM)的目的是經過使開發或部署過程可控且可重複,來確保產品或系統在其整個生命週期中的完整性,從而建立更高質量的產品或系統。CM 流程容許有序管理系統信息和系統更改,以便:安全

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

Q二、IT 資產管理和配置管理有什麼區別?IT 資產和配置有什麼區別?

如下是資產管理和配置管理之間的一些差別:bash

圖片

接下來解釋資產。它具備財務價值以及附加的折舊率。IT 資產只是它的一個子集。任何具備成本的組織都將其用於資產價值計算和稅收計算中的相關收益歸屬於資產管理,此類項目稱爲資產。服務器

另外一方面,配置項可能有也可能沒有分配給它的財務值,它不會有任何與之相關的折舊,所以它的生命不依賴於其財務價值,而是取決於該項目對該組織的過期時間。網絡

如今,能夠舉例說明二者之間的類似性和差別:
1)類似性:
服務器 - 它既是資產又是配置項。
2)差別:
建築 - 這是一種資產,但不是配置項。
文檔 - 它是配置項但不是資產架構

Q三、您對「基礎設施即代碼」有何見解?它如何適用於 DevOps 方法?它的目的是什麼?

基礎設施即代碼(IAC)是一種 IT 基礎架構,運維團隊可使用它來自動管理和經過代碼進行配置,而不是經過手工的過程。框架

更快部署的公司也將基礎設施視爲軟件:可使用 DevOps 工具和流程管理的代碼。利用這些工具,您能夠更輕鬆、快速、安全、可靠地更改基礎架構。運維

Q四、Puppet、Chef、SaltStack 和 Ansible 中哪個您認爲是最好的配置管理(CM)工具?爲何?

這取決於研發組織的需求,所以須要在全部這些工具上提到如下幾點:
Puppet 是最古老,最成熟的 CM 工具。Puppet 是一個基於 Ruby 的配置管理工具,雖然它有一些免費功能,但 Puppet 大部分很棒的內容僅在付費版本中可用。不須要大量額外功能的組織會發現 Puppet 頗有用,但那些須要更多自定義的組織可能須要升級到付費版本。tcp

Chef 是用 Ruby 編寫的,所以能夠由熟悉該語言的人進行定製。它還包括免費功能,若是須要,還能夠從開源版本升級到企業級。最重要的是,它是一個很是靈活的產品。

Ansible 是一個很是安全的選項,由於它使用 Secure Shell。它是一個簡單的工具,但除了配置管理以外,它還提供了許多其餘服務。它很是容易學習,所以很是適合那些非專職 IT 但仍須要配置管理工具的人員。

SaltStack 是基於 python 的開源 CM 工具,適用於大型企業,但其學習曲線至關低。

Q五、什麼是 Puppet?

它是一個配置管理工具,用於自動執行管理任務。Puppet 有一個 Master-Slave 架構,其中 Slave 必須首先向 Master 發送證書籤名請求,Master 必須簽署該證書才能在 Puppet Master 和 Puppet Slave 之間創建安全鏈接,以下圖所示。Puppet Slave 向 Puppet Master 發送請求,而後 Puppet Master 向 Slave 推送配置。請參閱下圖解釋上述說明。

圖片

Q六、在客戶端使用 Puppet Master 進行身份驗證以前,須要對其證書進行簽名和接受。您將如何自動完成這項任務?

最簡單的方法是在 puppet.conf 中啓用自動簽名。請注意這是一個安全風險。若是您仍想這樣作:

  • 爲您的 puppet master 創建防火牆 - 將端口 tcp / 8140 限制爲您信任的網絡。
  • 爲每一個「信任區域」建立 puppet master,而且只在該 puppet master 清單中包含可信節點。
  • 切勿使用完整的通配符,例如 * 。

Q七、描述經過 Puppet 自動化流程所取得的最重要的收益

對於這個答案,我建議您解釋一下您過去使用 Puppet 的經歷。能夠參考如下示例:
我使用 Puppet 自動配置和部署 Linux 和 Windows 機器。除了將處理時間從一週縮短到 10 分鐘以外,我還使用了角色和配置文件模式,並在 README 中記錄了每一個模塊的用途,以確保其餘人可使用 Git 更新模塊。我寫的模塊仍然在使用,可是個人團隊成員和社區成員對它們進行了改進。

Q八、您使用哪些開源或社區工具來使 Puppet 更強大?

在這裏,您須要說起工具以及如何使用這些工具使 Puppet 更強大。如下是一個供您參考的示例:
咱們經過項目管理工具進行更改請求,經過內部流程管理請求,而後咱們使用 Git 和 Puppet 的 Code Manager 應用程序來管理 Puppet 代碼。此外,咱們使用測試框架經過 Jenkins 中的持續集成流水線運行全部 Puppet 更改。

Q九、什麼是 Puppet 清單?

首先定義清單。每一個節點(或 Puppet Agent)都在 Puppet Master 中得到了用 Puppet 語言編寫的配置細節。這些細節用 Puppet 能夠理解的語言編寫,稱爲 Manifest。它們由 Puppet 代碼組成,其文件名使用 .pp 擴展名。

如今舉個例子:您能夠在 Puppet Master 中編寫一個清單,用於建立文件並在鏈接到 Puppet Master 的全部 Puppet Agent(Slaves)上安裝 apache。

Q十、什麼是 Puppet 模塊以及它與 Puppet Manifest 的不一樣之處?

Puppet 模塊是清單和數據(例如事實,文件和模板)的集合,它們具備特定的目錄結構。模塊對於組織 Puppet 代碼頗有用,由於它們容許您將代碼拆分爲多個清單。使用模塊來組織幾乎全部的 Puppet 清單是最佳實踐。

Puppet 程序稱爲 Manifest,它由 Puppet 代碼組成,其文件名使用 .pp 擴展名。

Q十一、什麼是 Puppet 的 Facter?

您應該回答 Facter 在 Puppet 中作了什麼:「Facter 收集有關 Puppet Agent 的基本信息(事實),如硬件細節,網絡設置,操做系統類型和版本,IP 地址,MAC 地址,SSH 密鑰等等。這些 facts 隨後會在 Puppet Master 的清單中做爲變量提供。」

Q十二、什麼是 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 和其餘配置數據的主機。

圖片

Q1三、Chef 的資源是什麼?

資源表明一個基礎架構及其所需的狀態,例如應安裝的軟件包,應運行的服務或應生成的文件。
資源的功能包括如下幾點:

  • 描述配置項的所需狀態。
  • 聲明將該項目置於所需狀態所需的步驟。
  • 指定資源類型,例如包,模板或服務。
  • 根據須要列出其餘詳細信息(也稱爲資源屬性)。
  • 被分類爲配方(recipes),來描述工做配置。

Q1四、Chef 的 Recipe 是什麼?

Recipes 描述了特定配置或策略的資源集合,描述了配置系統部分所需的一切。
Recipes 的功能:

  • 安裝和配置軟件組件。
  • 管理文件。
  • 部署應用程序。
  • 執行其餘 recipe。

Q1五、Cookbook 與 Recipe 有何不一樣?

能夠簡單地說,「Recipe 是一組資源,主要配置軟件包或某些基礎架構。Cookbook 將 recipe 和其餘信息整合在一塊兒,比單獨使用 recipe 更易於管理。」
譯者注:cookbook 相似於食譜集;recipe 相似於食譜。

Q1六、若是未在 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

由於:建立是文件資源的默認操做。

Q1七、什麼是 Ansible 模塊?

模塊被認爲是 Ansible 的工做單元。每一個模塊大可能是獨立的,能夠用標準的腳本語言編寫,如 Python、Perl、Ruby、bash 等。模塊的一個重要屬性是冪等性,這意味着即便一個操做重複屢次(例如從停電中恢復),它會始終將系統置於同一狀態。

Q1八、什麼是 Ansible 的 playbooks?

Playbooks 是 Ansible 的配置、部署和編排語言。他們能夠描述您但願遠程系統實施的策略,或者描述通常 IT 流程中的一系列步驟。Playbooks 設計爲人類可讀的,並以基本文本語言開發。在基礎級別,可使用 playbooks 來管理遠程計算機的配置和部署。

Q1九、如何查看全部 ansible_ 變量的列表?

Ansible 默認收集有關所管理機器的「facts」,能夠在 playbooks 和模板中訪問這些「facts」。要查看計算機的全部可用「facts」的列表,能夠將「設置」模塊做爲臨時操做運行:

Ansible -m setup hostname

這將打印出那個特定主機全部可用「facts」的目錄。

相關文章
相關標籤/搜索