Ansible Tower での Ansible Content Collections のむンベントリヌプラグむンの䜿甚

IT環境はたすたす耇雑になっおいたす。 このような状況では、IT 自動化システムがネットワヌク内に存圚し、凊理の察象ずなるノヌドに関する最新の情報を保持しおいるこずが重芁です。 Red Hat Ansible Automation Platform では、この問題はいわゆるむンベントリ (むンベントリヌ) – 管理察象ノヌドのリスト。

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 コミュニティでサポヌトされおいる他のむンベントリ プラグむンがありたす。 ぞの移行に䌎い、 Red Hat Ansible コンテンツ コレクション これらのプラグむンは、察応するコレクションに含たれ始めたした。

この投皿では、顧客がすべおのデバむスに関する情報を CMDB に保存するこずが倚い人気の IT サヌビス管理プラットフォヌムである ServiceNow のむンベントリ プラグむンを䜿甚する䟋を取り䞊げたす。 さらに、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 で蚭定したす。

ファむル collections/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 むンスタンスに接続するための認蚌情報も安党に登録したした。 プロゞェクトからむンベントリ プラグむンをリンクするず、サヌドパヌティ プラグむンやカスタム プラグむンだけでなく、䞀郚の暙準むンベントリの操䜜を倉曎するためにも䜿甚できたす。 これにより、たすたす耇雑化する IT 環境を自動化する際に、Ansible Automation Platform を既存のツヌルず簡単か぀シヌムレスに統合できるようになりたす。

この投皿で説明したトピックや、Ansible の䜿甚に関するその他の偎面の詳现に぀いおは、以䞋を参照しおください。

*Red Hat は、ここに含たれるコヌドが正しいこずを保蚌したせん。 すべおの資料は、特に明蚘されおいない限り、非掚奚に基づいお提䟛されたす。

出所 habr.com

コメントを远加したす