在 Ansible Tower 中使用來自 Ansible Content Collections 的清單插件

IT 環境變得越來越複雜。 在這些情況下,IT 自動化系統擁有有關網路中存在並需要處理的節點的最新資訊至關重要。 在紅帽 Ansible 自動化平台中,這個問題透過所謂的清單來解決(庫存) – 受管節點清單。

在 Ansible Tower 中使用來自 Ansible Content Collections 的清單插件

最簡單的形式是,庫存是一個靜態文件。 當您開始使用 Ansible 時,這是理想的選擇,但隨著自動化程度的提高,它就變得不夠了。

這就是為什麼:

  1. 當情況不斷變化、工作負載及其運行的節點來來去去時,如何更新和維護受監控節點的完整清單?
  2. 如何對 IT 基礎架構的元件進行分類,以便專門選擇應用特定自動化的節點?

動態庫存為這兩個問題提供了答案(動態庫存) – 搜尋要自動化的節點的腳本或插件,參考事實來源。 此外,動態清單會自動將節點分組,以便您可以更準確地選擇目標系統來執行特定的 Ansible 自動化。

庫存插件 使 Ansible 使用者能夠存取外部平台以動態搜尋目標節點,並在建立清單時使用這些平台作為事實來源。 Ansible 中的標準來源清單包括雲端平台 AWS EC2、Google GCP 和 Microsoft Azure,還有許多其他 Ansible 庫存外掛程式。

Ansible Tower 附帶了許多 庫存插件,開箱即用,除了上面列出的雲端平台之外,還提供與 VMware vCenter、Red Hat OpenStack Platform 和 Red Hat Satellite 的整合。 對於這些插件,您只需提供憑證即可連接到目標平台,之後它們就可以用作 Ansible Tower 中的清單資料來源。

除了 Ansible Tower 附帶的標準插件之外,Ansible 社群還支援其他庫存插件。 隨著過渡到 紅帽 Ansible 內容集合 這些插件開始包含在相應的集合中。

在這篇文章中,我們將舉一個使用 ServiceNow 的庫存插件的範例,ServiceNow 是一個流行的 IT 服務管理平台,客戶經常在 CMDB 中儲存有關其所有設備的資訊。 此外,CMDB 還可以包含對自動化有用的上下文,例如有關伺服器擁有者、服務等級(生產/非生產)、已安裝的更新和維護時段的資訊。 Ansible 庫存插件可以與 ServiceNow CMDB 配合使用,並且是集合的一部分 現在服務 在門戶上 Galaxy.ansible.com.

Git 儲存庫

若要使用 Ansible Tower 中集合中的清單插件,必須將其設定為項目來源。 在 Ansible Tower 中,項目是與某種版本控制系統(例如 git 儲存庫)的集成,它不僅可用於同步自動化劇本,還可用於同步變數和庫存清單。

我們的存儲庫實際上非常簡單:

├── collections
│   └── requirements.yml
└── servicenow.yml

servicenow.yml 檔案包含插件清單的詳細資訊。 在我們的例子中,我們只需指定 ServiceNow CMDB 中我們想要使用的表。 我們還設定將新增為節點變數的字段,以及有關我們要建立的群組的某些資訊。

$ cat servicenow.yml
plugin: servicenow.servicenow.now
table: cmdb_ci_linux_server
fields: [ip_address,fqdn,host_name,sys_class_name,name,os]
keyed_groups:
  - key: sn_sys_class_name | lower
	prefix: ''
	separator: ''
  - key: sn_os | lower
	prefix: ''
	separator: ''

請注意,這並沒有指定我們將以任何方式連線到的 ServiceNow 實例,也沒有指定任何連線憑證。 我們稍後將在 Ansible Tower 中配置所有這些。

檔案集合/requirements.yml 以便 Ansible Tower 可以下載所需的集合,從而獲得所需的清單插件。 否則,我們必須在所有 Ansible Tower 節點上手動安裝和維護此集合。

$ cat collections/requirements.yml
---
collections:

- name: servicenow.servicenow

一旦我們將此配置推送到版本控制,我們就可以在 Ansible Tower 中建立一個引用對應儲存庫的項目。 下面的範例將 Ansible Tower 連結到我們的 github 儲存庫。 請注意 SCM URL:它允許您註冊帳戶以連接到私人儲存庫,以及指定要簽出的特定分支、標籤或提交。

在 Ansible Tower 中使用來自 Ansible Content Collections 的清單插件

為 ServiceNow 建立憑證

如前所述,我們的儲存庫中的配置不包含連接到 ServiceNow 的憑證,並且不指定我們將與之通訊的 ServiceNow 實例。 因此,為了設定此數據,我們將在 Ansible Tower 中建立憑證。 根據 ServiceNow 庫存插件文檔,有許多環境變量,我們將使用它們來設定連接參數,例如,如下所示:

= username
    	The ServiceNow user account, it should have rights to read cmdb_ci_server (default), or table specified by SN_TABLE

    	set_via:
      	env:
      	- name: SN_USERNAME

在這種情況下,如果設定了 SN_USERNAME 環境變量,庫存插件將使用它作為連接到 ServiceNow 的帳戶。

我們還需要設定 SN_INSTANCE 和 SN_PASSWORD 變數。

但是,Ansible Tower 中沒有此類憑證,您可以在其中為 ServiceNow 指定此資料。 但 Ansible Tower 允許我們定義 自訂憑證類型,您可以在文章中閱讀更多相關內容 “Ansible Tower 功能對焦:自訂憑證”.

在我們的範例中,ServiceNow 自訂憑證的輸入配置如下所示:

fields:
  - id: SN_USERNAME
	type: string
	label: Username
  - id: SN_PASSWORD
	type: string
	label: Password
	secret: true
  - id: SN_INSTANCE
	type: string
	label: Snow Instance
required:
  - SN_USERNAME
  - SN_PASSWORD
  - SN_INSTANCE

這些憑證將作為同名的環境變數公開。 這在註入器配置中進行了描述:

env:
  SN_INSTANCE: '{{ SN_INSTANCE }}'
  SN_PASSWORD: '{{ SN_PASSWORD }}'
  SN_USERNAME: '{{ SN_USERNAME }}'

因此,我們已經定義了所需的憑證類型,現在我們可以新增一個 ServiceNow 帳戶並設定實例、使用者名稱和密碼,如下所示:

在 Ansible Tower 中使用來自 Ansible Content Collections 的清單插件

我們創建庫存

現在我們已經準備好在 Ansible Tower 中建立清單了。 我們稱之為 ServiceNow:

在 Ansible Tower 中使用來自 Ansible Content Collections 的清單插件

建立清單後,我們可以為其附加資料來源。 在這裡,我們指定先前建立的項目,並輸入原始程式碼控制儲存庫中 YAML 庫存檔案的路徑,在我們的範例中,它是專案根目錄中的 servicenow.yml。 此外,您需要關聯您的 ServiceNow 帳戶。

在 Ansible Tower 中使用來自 Ansible Content Collections 的清單插件

為了檢查一切如何運作,讓我們嘗試透過點擊「全部同步」按鈕來與資料來源同步。 如果一切配置正確,那麼節點應該導入到我們的清單中:

在 Ansible Tower 中使用來自 Ansible Content Collections 的清單插件

請注意,我們需要的群組也已建立。

結論

在這篇文章中,我們以 ServiceNow 插件為例,了解如何在 Ansible Tower 中使用集合中的庫存插件。 我們也安全地註冊了憑證以連接到我們的 ServiceNow 實例。 從項目連結庫存插件不僅可以與第三方或自訂插件配合使用,還可以用於修改某些標準庫存的操作。 這使得 Ansible 自動化平台在自動化日益複雜的 IT 環境時可以輕鬆、無縫地與現有工具整合。

您可以在此處找到有關本文討論的主題以及使用 Ansible 的其他方面的更多資訊:

*紅帽不保證此處包含的代碼是正確的。 除非另有明確說明,所有資料均以非認可的基礎上提供。

來源: www.habr.com

添加評論