IT ํ๊ฒฝ์ ์ ์ ๋ ๋ณต์กํด์ง๊ณ ์์ต๋๋ค. ์ด๋ฌํ ์กฐ๊ฑด์์๋ IT ์๋ํ ์์คํ
์ด ๋คํธ์ํฌ์ ์กด์ฌํ๊ณ ์ฒ๋ฆฌ ๋์์ธ ๋
ธ๋์ ๋ํ ์ต์ ์ ๋ณด๋ฅผ ๋ณด์ ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. Red Hat Ansible Automation Platform์์๋ ์ด ๋ฌธ์ ๊ฐ ์์ ์ธ๋ฒคํ ๋ฆฌ(
๊ฐ์ฅ ๊ฐ๋จํ ํํ์ ์ธ๋ฒคํ ๋ฆฌ๋ ์ ์ ํ์ผ์
๋๋ค. Ansible๋ก ์์
์ ์์ํ ๋๋ ์ด๊ฒ์ด ์ด์์ ์ด์ง๋ง ์๋ํ๊ฐ ์ฆ๊ฐํ ์๋ก ๋ถ์ถฉ๋ถํด์ง๋๋ค.
๊ทธ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ํฉ์ด ์ง์์ ์ผ๋ก ๋ณํ ๋, ์ํฌ๋ก๋์ ๊ทธ์ ๋ฐ๋ผ ์คํ๋๋ ๋ ธ๋๊ฐ ์๋ค ๊ฐ๋ค ํ ๋ ๋ชจ๋ํฐ๋ง๋๋ ๋ ธ๋์ ์ ์ฒด ๋ชฉ๋ก์ ์ด๋ป๊ฒ ์ ๋ฐ์ดํธํ๊ณ ์ ์ง ๊ด๋ฆฌํฉ๋๊น?
- ํน์ ์๋ํ๋ฅผ ์ ์ฉํ๊ธฐ ์ํ ๋ ธ๋๋ฅผ ๊ตฌ์ฒด์ ์ผ๋ก ์ ํํ๊ธฐ ์ํด IT ์ธํ๋ผ์ ๊ตฌ์ฑ ์์๋ฅผ ์ด๋ป๊ฒ ๋ถ๋ฅํฉ๋๊น?
๋์ ์ฌ๊ณ ๋ ์ด ๋ ๊ฐ์ง ์ง๋ฌธ์ ๋ํ ๋ต๋ณ์ ์ ๊ณตํฉ๋๋ค(
Ansible Tower์๋ ๋ค์ํ ๊ธฐ๋ฅ์ด ํฌํจ๋์ด ์์ต๋๋ค.
Ansible Tower์ ํฌํจ๋ ํ์ค ํ๋ฌ๊ทธ์ธ ์ธ์๋ Ansible ์ปค๋ฎค๋ํฐ์์ ์ง์ํ๋ ๋ค๋ฅธ ์ธ๋ฒคํ ๋ฆฌ ํ๋ฌ๊ทธ์ธ์ด ์์ต๋๋ค. ์ ํ๊ณผ ํจ๊ป
์ด ๊ฒ์๋ฌผ์์๋ ๊ณ ๊ฐ์ด ์์ ์ ๋ชจ๋ ์ฅ์น์ ๋ํ ์ ๋ณด๋ฅผ CMDB์ ์ ์ฅํ๋ ์ธ๊ธฐ ์๋ IT ์๋น์ค ๊ด๋ฆฌ ํ๋ซํผ์ธ ServiceNow์ฉ ์ธ๋ฒคํ ๋ฆฌ ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ๋ ์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ๋ํ 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 ์ธ์คํด์ค์ ์ฐ๊ฒฐํ๊ธฐ ์ํ ์๊ฒฉ ์ฆ๋ช ์ ์์ ํ๊ฒ ๋ฑ๋กํ์ต๋๋ค. ํ๋ก์ ํธ์ ์ธ๋ฒคํ ๋ฆฌ ํ๋ฌ๊ทธ์ธ ์ฐ๊ฒฐ์ ํ์ฌ ๋๋ ์ฌ์ฉ์ ์ ์ ํ๋ฌ๊ทธ์ธ๊ณผ ํจ๊ป ์๋ํ ๋ฟ๋ง ์๋๋ผ ์ผ๋ถ ํ์ค ์ธ๋ฒคํ ๋ฆฌ์ ์๋์ ์์ ํ๋ ๋ฐ์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ ์ ๋ณต์กํด์ง๋ IT ํ๊ฒฝ์ ์๋ํํ ๋ Ansible Automation Platform์ ๊ธฐ์กด ๋๊ตฌ์ ์ฝ๊ณ ์ํํ๊ฒ ํตํฉํ ์ ์์ต๋๋ค.
์ด ๊ฒ์๋ฌผ์์ ๋ ผ์๋ ์ฃผ์ ์ Ansible ์ฌ์ฉ์ ๋ค๋ฅธ ์ธก๋ฉด์ ๋ํ ์์ธํ ์ ๋ณด๋ ๋ค์์์ ํ์ธํ ์ ์์ต๋๋ค.
- ๋ธ๋ก๊ทธ ์์ฑ์:
Ansible์ ์ฌ์ฉํ์ฌ ServiceNow ์๋ํ . ๋๋ง์ ์ปฌ๋ ์ ์ ๋ง๋๋ ๋ฐฉ๋ฒ .- Automation Hub ์น์ฌ์ดํธ์ Red Hat ์ง์ ์ปฌ๋ ์
๋ชฉ๋ก(
cloud.redhat.com ). Ansible ์๋ํ ํ๋ซํผ eBook .
*Red Hat์ ์ฌ๊ธฐ์ ํฌํจ๋ ์ฝ๋๊ฐ ์ ํํ๋ค๋ ์ ์ ๋ณด์ฅํ์ง ์์ต๋๋ค. ๋ฌ๋ฆฌ ๋ช
์๋์ง ์๋ ํ ๋ชจ๋ ์๋ฃ๋ ๋น๋ณด์ฆ ๊ธฐ๋ฐ์ผ๋ก ์ ๊ณต๋ฉ๋๋ค.
์ถ์ฒ : habr.com