IT 環境變得越來越複雜。 在這些情況下,IT 自動化系統擁有有關網路中存在並需要處理的節點的最新資訊至關重要。 在紅帽 Ansible 自動化平台中,這個問題透過所謂的清單來解決(
最簡單的形式是,庫存是一個靜態文件。 當您開始使用 Ansible 時,這是理想的選擇,但隨著自動化程度的提高,它就變得不夠了。
這就是為什麼:
- 當情況不斷變化、工作負載及其運行的節點來來去去時,如何更新和維護受監控節點的完整清單?
- 如何對 IT 基礎架構的元件進行分類,以便專門選擇應用特定自動化的節點?
動態庫存為這兩個問題提供了答案(
Ansible Tower 附帶了許多
除了 Ansible Tower 附帶的標準插件之外,Ansible 社群還支援其他庫存插件。 隨著過渡到
在這篇文章中,我們將舉一個使用 ServiceNow 的庫存插件的範例,ServiceNow 是一個流行的 IT 服務管理平台,客戶經常在 CMDB 中儲存有關其所有設備的資訊。 此外,CMDB 還可以包含對自動化有用的上下文,例如有關伺服器擁有者、服務等級(生產/非生產)、已安裝的更新和維護時段的資訊。 Ansible 庫存插件可以與 ServiceNow CMDB 配合使用,並且是集合的一部分
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 中配置所有這些。
$ cat collections/requirements.yml
---
collections:
- name: servicenow.servicenow
一旦我們將此配置推送到版本控制,我們就可以在 Ansible Tower 中建立一個引用對應儲存庫的項目。 下面的範例將 Ansible Tower 連結到我們的 github 儲存庫。 請注意 SCM URL:它允許您註冊帳戶以連接到私人儲存庫,以及指定要簽出的特定分支、標籤或提交。
為 ServiceNow 建立憑證
如前所述,我們的儲存庫中的配置不包含連接到 ServiceNow 的憑證,並且不指定我們將與之通訊的 ServiceNow 實例。 因此,為了設定此數據,我們將在 Ansible Tower 中建立憑證。 根據
= 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 允許我們定義
在我們的範例中,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 中建立清單了。 我們稱之為 ServiceNow:
建立清單後,我們可以為其附加資料來源。 在這裡,我們指定先前建立的項目,並輸入原始程式碼控制儲存庫中 YAML 庫存檔案的路徑,在我們的範例中,它是專案根目錄中的 servicenow.yml。 此外,您需要關聯您的 ServiceNow 帳戶。
為了檢查一切如何運作,讓我們嘗試透過點擊「全部同步」按鈕來與資料來源同步。 如果一切配置正確,那麼節點應該導入到我們的清單中:
請注意,我們需要的群組也已建立。
結論
在這篇文章中,我們以 ServiceNow 插件為例,了解如何在 Ansible Tower 中使用集合中的庫存插件。 我們也安全地註冊了憑證以連接到我們的 ServiceNow 實例。 從項目連結庫存插件不僅可以與第三方或自訂插件配合使用,還可以用於修改某些標準庫存的操作。 這使得 Ansible 自動化平台在自動化日益複雜的 IT 環境時可以輕鬆、無縫地與現有工具整合。
您可以在此處找到有關本文討論的主題以及使用 Ansible 的其他方面的更多資訊:
- 部落客
使用 Ansible 自動化 ServiceNow . 如何創建自己的收藏 .- Automation Hub 網站上的紅帽支援的集合清單(
雲端.redhat.com ). Ansible 自動化平台電子書 .
*紅帽不保證此處包含的代碼是正確的。 除非另有明確說明,所有資料均以非認可的基礎上提供。
來源: www.habr.com