ИспользованиС ΠΈΠ½Π²Π΅Π½Ρ‚ΠΎΡ€ΠΈ-ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² ΠΈΠ· Ansible Content Collections Π² Ansible Tower

ИВ-срСды становятся всС слоТнСС ΠΈ слоТнСС. Π’ этих условиях для систСмы ИВ-Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ критичСски Π²Π°ΠΆΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ±ΠΎ ΡƒΠ·Π»Π°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π² сСти ΠΈ ΠΏΠΎΠ΄Π»Π΅ΠΆΠ°Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅. Π’ Red Hat Ansible Automation Platform этот вопрос Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ ΠΈΠ½Π²Π΅Π½Ρ‚ΠΎΡ€ΠΈ (inventory) – списки управляСмых ΡƒΠ·Π»ΠΎΠ².

ИспользованиС ΠΈΠ½Π²Π΅Π½Ρ‚ΠΎΡ€ΠΈ-ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² ΠΈΠ· Ansible Content Collections Π² Ansible Tower

Π’ своСй ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ ΠΈΠ½Π²Π΅Π½Ρ‚ΠΎΡ€ΠΈ прСдставляСт собой статичСский Ρ„Π°ΠΉΠ». Π­Ρ‚ΠΎ ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Ansible, Π½ΠΎ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π΅Π³ΠΎ становится нСдостаточно.

И Π²ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ:

  1. Как ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π² Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΌ состоянии ΠΏΠΎΠ»Π½Ρ‹ΠΉ список ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… ΡƒΠ·Π»ΠΎΠ², ΠΊΠΎΠ³Π΄Π° Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ постоянно мСняСтся, ΠΊΠΎΠ³Π΄Π° Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ – Π° вслСд Π·Π° Π½ΠΈΠΌΠΈ ΠΈ ΡƒΠ·Π»Ρ‹, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ½ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ – Ρ‚ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚, Ρ‚ΠΎ ΠΈΡΡ‡Π΅Π·Π°ΡŽΡ‚?
  2. Как ΠΊΠ»Π°ΡΡΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ИВ-инфраструктуры, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΡ†Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ ΡƒΠ·Π»Ρ‹ для примСнСния Ρ‚ΠΎΠΉ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ?

ΠžΡ‚Π²Π΅Ρ‚Ρ‹ Π½Π° ΠΎΠ±Π° эти вопроса Π΄Π°Π΅Ρ‚ динамичСский ΠΈΠ½Π²Π΅Π½Ρ‚ΠΎΡ€ΠΈ (dynamic inventory) – скрипт ΠΈΠ»ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡ‰Π΅Ρ‚ ΠΏΠΎΠ΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠ΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ ΡƒΠ·Π»Ρ‹, ΠΎΠ±Ρ€Π°Ρ‰Π°ΡΡΡŒ ΠΊ источнику истины (source of truth). ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, динамичСский ΠΈΠ½Π²Π΅Π½Ρ‚ΠΎΡ€ΠΈ автоматичСски классифицируСт ΡƒΠ·Π»Ρ‹ ΠΏΠΎ Π³Ρ€ΡƒΠΏΠΏΠ°ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Ρ‚ΠΎΡ‡Π½Π΅Π΅ ΠΎΡ‚Π±ΠΈΡ€Π°Ρ‚ΡŒ Ρ†Π΅Π»Π΅Π²Ρ‹Π΅ систСмы для выполнСния Ρ‚ΠΎΠΉ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ 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 Content Collections эти ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ стали Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ.

Π’ этом постС ΠΌΡ‹ для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΈΠ½Π²Π΅Π½Ρ‚ΠΎΡ€ΠΈ-ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠΌ для ServiceNow, популярной ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ управлСния ИВ-сСрвисами, Π² CMDB ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠΈ часто хранят свСдСния ΠΎΠ±ΠΎ всСх своих устройствах. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, CMDB ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ контСкст, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, свСдСния ΠΎ Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π°Ρ… сСрвСров, уровнях обслуТивания (production/non-production), установлСнных обновлСниях ΠΈ ΠΎΠΊΠ½Π°Ρ… тСхничСского обслуТивания. Π˜Π½Π²Π΅Π½Ρ‚ΠΎΡ€ΠΈ-ΠΏΠ»Π°Π³ΠΈΠ½ Ansible ΡƒΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с CMDB ServiceNow ΠΈ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² состав ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ servicenow Π½Π° ΠΏΠΎΡ€Ρ‚Π°Π»Π΅ galaxy.ansible.com.

Git-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Ansible Tower ΠΈΠ½Π²Π΅Π½Ρ‚ΠΎΡ€ΠΈ-ΠΏΠ»Π°Π³ΠΈΠ½ ΠΈΠ· ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, Π΅Π³ΠΎ Π½Π°Π΄ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ Π² качСствС источника ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π’ Ansible Tower ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ – это интСграция с ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ систСмой управлСния вСрсиями, Π²Ρ€ΠΎΠ΄Π΅ рСпозитория git, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для синхронизации Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ»Π΅ΠΉΠ±ΡƒΠΊΠΎΠ² Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π½ΠΎ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π° Ρ‚Π°ΠΊΠΆΠ΅ списков ΠΈΠ½Π²Π΅Π½Ρ‚ΠΎΡ€ΠΈ.

Наш Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π½Π° самом Π΄Π΅Π»Π΅ ΠΎΡ‡Π΅Π½ΡŒ простой:

β”œβ”€β”€ collections
β”‚   └── requirements.yml
└── servicenow.yml

Π€Π°ΠΉΠ» servicenow.yml содСрТит подробности для ΠΈΠ½Π²Π΅Π½Ρ‚ΠΎΡ€ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½Π°. Π’ нашСм случаС ΠΌΡ‹ просто ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π² CMDB ServiceNow, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. А Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°Π΄Π°Π΅ΠΌ поля, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒΡΡ Π² качСствС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΡƒΠ·Π»Π°, плюс ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΏΠΎ Π³Ρ€ΡƒΠΏΠΏΠ°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ.

$ 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 Content Collections Π² Ansible Tower

БоздаСм credentials для ServiceNow

Как ΡƒΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΎΡΡŒ, конфигурация Π² нашСм Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π½Π΅ содСрТит ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ ServiceNow ΠΈ Π½Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ инстанс ServiceNow, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΎΠ±Ρ‰Π°Ρ‚ΡŒΡΡ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ для задания этих Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΡ‹ создадим credentials Π² 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 Π½Π΅Ρ‚ credentials Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ эти Π΄Π°Π½Π½Ρ‹Π΅ для ServiceNow. Π—Π°Ρ‚ΠΎ Ansible Tower позволяСт Π½Π°ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ настраиваСмыС Ρ‚ΠΈΠΏΡ‹ credentials, ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ± этом ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ Β«Ansible Tower Feature Spotlight: Custom CredentialsΒ».

Π’ нашСм случаС input-конфигурация для настраиваСмых credentials для 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

Π­Ρ‚ΠΈ credentials Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΊΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния с Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ. Π­Ρ‚ΠΎ описываСтся Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ injector-Π°:

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

Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ Π½ΡƒΠΆΠ½Ρ‹ΠΉ Π½Π°ΠΌ Ρ‚ΠΈΠΏ credential, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΡƒΡ‡Π΅Ρ‚Π½ΡƒΡŽ запись ServiceNow ΠΈ Π·Π°Π΄Π°Ρ‚ΡŒ инстанс, имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ, Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

ИспользованиС ΠΈΠ½Π²Π΅Π½Ρ‚ΠΎΡ€ΠΈ-ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² ΠΈΠ· Ansible Content Collections Π² Ansible Tower

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΈΠ½Π²Π΅Π½Ρ‚ΠΎΡ€ΠΈ

Π˜Ρ‚Π°ΠΊ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ нас всС Π³ΠΎΡ‚ΠΎΠ²ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈΠ½Π²Π΅Π½Ρ‚ΠΎΡ€ΠΈ Π² Ansible Tower. НазовСм Π΅Π³ΠΎ ServiceNow:

ИспользованиС ΠΈΠ½Π²Π΅Π½Ρ‚ΠΎΡ€ΠΈ-ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² ΠΈΠ· Ansible Content Collections Π² Ansible Tower

ПослС создания ΠΈΠ½Π²Π΅Π½Ρ‚ΠΎΡ€ΠΈ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠΈΡ‚ΡŒ ΠΊ Π½Π΅ΠΉ источник Π΄Π°Π½Π½Ρ‹Ρ…. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ создали Ρ€Π°Π½Π΅Π΅, ΠΈ Π²Π²ΠΎΠ΄ΠΈΠΌ ΠΏΡƒΡ‚ΡŒ ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ ΠΈΠ½Π²Π΅Π½Ρ‚ΠΎΡ€ΠΈ-Ρ„Π°ΠΉΠ»Ρƒ YAML Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ систСмы управлСния вСрсиями, Π² нашСм случаС это servicenow.yml Π² ΠΊΠΎΡ€Π½Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π½Π°Π΄ΠΎ ΠΏΡ€ΠΈΠ²ΡΠ·Π°Ρ‚ΡŒ ΠΈ ΡƒΡ‡Π΅Ρ‚Π½ΡƒΡŽ запись ServiceNow.

ИспользованиС ΠΈΠ½Π²Π΅Π½Ρ‚ΠΎΡ€ΠΈ-ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² ΠΈΠ· Ansible Content Collections Π² Ansible Tower

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊ всС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ с источником Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°ΠΆΠ°Π² ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«Sync allΒ». Если всС настроСно ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, Ρ‚ΠΎ ΡƒΠ·Π»Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² наш ΠΈΠ½Π²Π΅Π½Ρ‚ΠΎΡ€ΠΈ:

ИспользованиС ΠΈΠ½Π²Π΅Π½Ρ‚ΠΎΡ€ΠΈ-ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² ΠΈΠ· Ansible Content Collections Π² Ansible Tower

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π½Π°ΠΌ Π³Ρ€ΡƒΠΏΠΏΡ‹ Ρ‚ΠΎΠΆΠ΅ создались.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ этом постС ΠΌΡ‹ рассмотрСли, ΠΊΠ°ΠΊ Π² Ansible Tower ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ½Π²Π΅Π½Ρ‚ΠΎΡ€ΠΈ-ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ ΠΈΠ· ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠ»Π°Π³ΠΈΠ½Π° ServiceNow. ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ бСзопасно прописали ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ инстансу ServiceNow. ΠŸΡ€ΠΈΠ²ΡΠ·ΠΊΠ° ΠΈΠ½Π²Π΅Π½Ρ‚ΠΎΡ€ΠΈ-ΠΏΠ»Π°Π³ΠΈΠ½Π° ΠΈΠ· ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ со сторонними ΠΈΠ»ΠΈ настраиваСмыми ΠΏΠ»Π°Π³ΠΈΠ½Π°ΠΌΠΈ, Π½ΠΎ ΠΈ Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ для ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡˆΡ‚Π°Ρ‚Π½Ρ‹Ρ… ΠΈΠ½Π²Π΅Π½Ρ‚ΠΎΡ€ΠΈ. Благодаря этому Ansible Automation Platform Π»Π΅Π³ΠΊΠΎ ΠΈ бСсшовно интСгрируСтся с ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ инструмСнтами ΠΏΡ€ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ ИВ-срСд, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ становятся всС слоТнСС ΠΈ слоТнСС.

Найти Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния ΠΏΠΎ рассмотрСнным Π² этом постС Ρ‚Π΅ΠΌΠ°ΠΌ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠΌ аспСктам примСнСния Ansible ΠΌΠΎΠΆΠ½ΠΎ здСсь:

*Red Hat Π½Π΅ Π΄Π°Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΉ коррСктности ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ здСсь ΠΊΠΎΠ΄Π°. ВсС ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Π½Π° условиях отсутствия ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ, Ссли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ½ΠΎΠ΅ Π½Π° заявлСно Π² явном Π²ΠΈΠ΄Π΅.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ