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์—์„œ ์ด ๋ชจ๋“  ๊ฒƒ์„ ๊ตฌ์„ฑํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

ํŒŒ์ผ ์ปฌ๋ ‰์…˜/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

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€