Red Hat Ansible Engine 2.9์ ํฅํ ๋ฆด๋ฆฌ์ค์์๋ ํฅ๋ฏธ๋ก์ด ๊ฐ์ ์ฌํญ์ ์ ๊ณตํ๋ฉฐ ๊ทธ ์ค ์ผ๋ถ๋ ์ด ๋ฌธ์์์ ์ค๋ช
ํฉ๋๋ค. ์ธ์ ๋ ๊ทธ๋ ๋ฏ์ด ์ฐ๋ฆฌ๋ ์ปค๋ฎค๋ํฐ ์ง์์ ํตํด ๊ณต๊ฐ์ ์ผ๋ก Ansible Network ๊ฐ์ ์ฌํญ์ ๊ฐ๋ฐํด ์์ต๋๋ค. ์ฐ๋ฆฌ์ ํจ๊ปํ์ธ์ โ ์ดํด๋ณด์ธ์
์ต๊ทผ์ ๋ฐํํ ๋ฐ์ ๊ฐ์ด,
- ์๋ฆฌ ์คํ EOS
- ์์ค์ฝ IOS
- ์์ค์ฝ IOS XR
- ์์ค์ฝ NX-OS
- ์ฃผ๋ํผ ์ฃผ๋ ธ์ค
- ๋น์ค์ค
Ansible Automation ์๋ธ์คํฌ๋ฆฝ์
์ ํตํด Red Hat์์ ์์ ํ ์ง์ํ๋ ํ๋ซํผ์ ์ ์ฒด ๋ชฉ๋ก์ ๋ณด๋ ค๋ฉด ๋ค์์ ์ฐธ์กฐํ์ธ์.
์ฐ๋ฆฌ๋ ๋ฌด์์ ๋ฐฐ์ ๋์?
์ง๋ XNUMX๋ ๋์ ์ฐ๋ฆฌ๋ ๋คํธ์ํฌ ์๋ํ ํ๋ซํผ ๊ฐ๋ฐ์ ๋ํด ๋ง์ ๊ฒ์ ๋ฐฐ์ ์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋ํ ๊ทธ๊ฒ์ ๋ฐฐ์ ์ต๋๋ค ะบะฐะบ ํ๋ซํผ ์ํฐํฉํธ๋ ์ต์ข ์ฌ์ฉ์์ Ansible ํ๋ ์ด๋ถ ๋ฐ ์ญํ ์ ์ฌ์ฉ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๊ฐ ์์๋ธ ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์กฐ์ง์ ํ๋๊ฐ ์๋ ์ฌ๋ฌ ๊ณต๊ธ์ ์ฒด์ ์ฅ์น๋ฅผ ์๋ํํ๊ณ ์์ต๋๋ค.
- ์๋ํ๋ ๊ธฐ์ ์ ํ์์ผ ๋ฟ๋ง ์๋๋ผ ๋ฌธํ์ ํ์์ด๊ธฐ๋ ํฉ๋๋ค.
- ๋๊ท๋ชจ ๋คํธ์ํฌ๋ฅผ ์๋ํํ๋ ๊ฒ์ ์๋ํ ์ค๊ณ์ ๊ธฐ๋ณธ ์ํคํ ์ฒ ์์น์ผ๋ก ์ธํด ์๊ฐ๋ณด๋ค ์ด๋ ต์ต๋๋ค.
XNUMX๋ ์ ์ฐ๋ฆฌ๊ฐ ์ฅ๊ธฐ์ ์ธ ์ฑ์ฅ ๊ณํ์ ๋ ผ์ํ์ ๋ ๊ธฐ์ ๊ณ ๊ฐ๋ค์ ๋ค์๊ณผ ๊ฐ์ ์ฌํญ์ ์์ฒญํ์ต๋๋ค.
- ์ฌ์ค ์์ง์ ๋ ํ์คํ๋์ด์ผ ํ๋ฉฐ ๋ชจ๋ ์ฅ์น์ ์๋ํ ์ํฌํ๋ก์ ๋ง์ถฐ ์กฐ์ ๋์ด์ผ ํฉ๋๋ค.
- Ansible ๋ชจ๋์ด ์ฌ์ค์ ์์งํ ํ ์ฃผ๊ธฐ์ ํ๋ฐ๋ถ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋๋ก ์ฅ์น์ ๊ตฌ์ฑ ์ ๋ฐ์ดํธ๋ ํ์คํ๋๊ณ ์ผ๊ด์ฑ์ด ์์ด์ผ ํฉ๋๋ค.
- ์ฅ์น ๊ตฌ์ฑ์ ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ๋ก ๋ณํํ๋ ค๋ฉด ์๊ฒฉํ๊ณ ์ง์๋๋ ๋ฐฉ๋ฒ์ด ํ์ํฉ๋๋ค. ์ด๋ฅผ ๋ฐํ์ผ๋ก ์ ๋ณด์ ์ถ์ฒ๋ฅผ ๋คํธ์ํฌ ์ฅ์น์์ ์ด๋ํ ์ ์์ต๋๋ค.
์ฌ์ค ๊ฐ์
Ansible์ ์ฌ์ฉํ์ฌ ๋คํธ์ํฌ ์ฅ์น์์ ์ ๋ณด๋ฅผ ์์งํ๋ ์ผ์ ์ข
์ข
๋ฌด์์๋ก ๋ฐ์ํฉ๋๋ค. ์น ๊ธฐ๋ฐ ํ๋ซํผ์ ๋ค์ํ ์์ค์ ์ฌ์ค ์์ง ๊ธฐ๋ฅ์ ๊ฐ์ถ๊ณ ์์ง๋ง ํค-๊ฐ ์์ ๋ฐ์ดํฐ ํํ์ ๊ตฌ๋ฌธ ๋ถ์ํ๊ณ ํ์คํํ๋ ๊ธฐ๋ฅ์ ๊ฑฐ์ ๋๋ ์ ํ ์์ต๋๋ค. ์ฝ๋ค
์ฐ๋ฆฌ๊ฐ Ansible ๋คํธ์ํฌ ์์ง ์ญํ ์ ๋ด๋นํ๊ณ ์๋ค๋ ์ฌ์ค์ ๋์น์ฑ์ จ์ ๊ฒ์ ๋๋ค. ๋น์ฐํ 24K ๋ค์ด๋ก๋ ์ดํ ๋คํธ์ํฌ ์์ง ์ญํ ์ ๋คํธ์ํฌ ์๋ํ ์๋๋ฆฌ์ค๋ฅผ ์ํด Ansible Galaxy์์ ๊ฐ์ฅ ์ธ๊ธฐ ์๋ Ansible ์ญํ ์ค ํ๋๋ก ๋น ๋ฅด๊ฒ ์๋ฆฌ ์ก์์ต๋๋ค. Ansible 2.8์ ํ์ํ ์ฌํญ์ ์ค๋นํ๊ธฐ ์ํด ์ด ์ค ๋ง์ ๋ถ๋ถ์ Ansible 2.9๋ก ์ด๋ํ๊ธฐ ์ ์ ์ด Ansible ์ญํ ์ ๋ช ๋ น์ ๊ตฌ๋ฌธ ๋ถ์ํ๊ณ , ๋ช ๋ น์ ๊ด๋ฆฌํ๊ณ , ๋คํธ์ํฌ ์ฅ์น์ ๋ํ ๋ฐ์ดํฐ๋ฅผ ์์งํ๋ ๋ฐ ๋์์ด ๋๋ ์ฒซ ๋ฒ์งธ ๋๊ตฌ ์ธํธ๋ฅผ ์ ๊ณตํ์ต๋๋ค.
๋คํธ์ํฌ ์์ง์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์๊ณ ์๋ค๋ฉด ์ด๋ Ansible์์ ์ฌ์ฉํ ํฉํธ ๋ฐ์ดํฐ๋ฅผ ์์ง, ๊ตฌ๋ฌธ ๋ถ์ ๋ฐ ํ์คํํ๋ ๋งค์ฐ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์
๋๋ค. ์ด ์ญํ ์ ๋จ์ ์ ๊ฐ ํ๋ซํผ๊ณผ ๋ชจ๋ ๋คํธ์ํฌ ํ๋์ ๋ํด ์ ์ฒด ํ์๋ฅผ ์์ฑํด์ผ ํ๋ค๋ ๊ฒ์
๋๋ค. ํ์๋ฅผ ์์ฑ, ์ ๊ณต ๋ฐ ์ ์ง ๊ด๋ฆฌํ๋ ๊ฒ์ด ์ผ๋ง๋ ์ด๋ ค์ด์ง ์ดํดํ๋ ค๋ฉด ๋ค์์ ์ดํด๋ณด์ญ์์ค.
๊ฐ๋จํ ๋งํด์, ๋๊ท๋ชจ ์๋ํ๋ฅผ ์ํด์๋ ์ฅ์น์์ ์ ๋ณด๋ฅผ ์ป๊ณ ์ด๋ฅผ ํค-๊ฐ ์์ผ๋ก ์ ๊ทํํ๋ ๊ฒ์ด ํ์์ ์ด์ง๋ง, ๊ณต๊ธ์ ์ฒด์ ๋คํธ์ํฌ ํ๋ซํผ์ด ๋ง์ผ๋ฉด ์ด๋ฅผ ๋ฌ์ฑํ๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค.
Ansible 2.9์ ๊ฐ ๋คํธ์ํฌ ํฉํธ ๋ชจ๋์ ์ด์ ์ถ๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, Ansible ์ญํ ๋๋ ์ฌ์ฉ์ ์ ์ ํ์ ์์ด๋ ๋คํธ์ํฌ ์ฅ์น์ ๊ตฌ์ฑ์ ๋ถ์ํ๊ณ ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ ์ ์์ต๋๋ค.
Ansible 2.9๋ถํฐ๋ ์ ๋ฐ์ดํธ๋ ๋คํธ์ํฌ ๋ชจ๋์ด ์ถ์๋ ๋๋ง๋ค ํฉํธ ๋ชจ๋์ด ๊ฐ์ ๋์ด ๊ตฌ์ฑ์ ์ด ์น์ ์ ๋ํ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ฆ, ์ฌ์ค๊ณผ ๋ชจ๋์ ๊ฐ๋ฐ์ ์ด์ ๋์ผํ ์๋๋ก ์ด๋ฃจ์ด์ง๋ฉฐ ํญ์ ๊ณตํต๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๊ฐ๊ฒ ๋ฉ๋๋ค.
๋คํธ์ํฌ ์ฅ์น์ ๋ฆฌ์์ค ๊ตฌ์ฑ์ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ๊ฒ์ํ์ฌ ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ๋ก ๋ณํํ ์ ์์ต๋๋ค. ๋ ๊ฐ์ง ๋ฐฉ๋ฒ ๋ชจ๋์์ ์ ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ํน์ ๋ฆฌ์์ค ๋ชฉ๋ก์ ์์งํ๊ณ ๋ณํํ ์ ์์ต๋๋ค. gather_network_resources
. ๋ฆฌ์์ค ์ด๋ฆ์ด ๋ชจ๋ ์ด๋ฆ๊ณผ ์ผ์นํ๋ฏ๋ก ๋งค์ฐ ํธ๋ฆฌํฉ๋๋ค.
์ฌ์ค์ ์์งํ๋ ๋์:
ํค์๋ ์ฌ์ฉ gather_facts
ํ๋ ์ด๋ถ ์์ ๋ถ๋ถ์์ ํ์ฌ ์ฅ์น ๊ตฌ์ฑ์ ๊ฒ์ํ ๋ค์ ์ ์ฒด ํ๋ ์ด๋ถ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ฅ์น์์ ๊ฒ์ํ ๊ฐ๋ณ ๋ฆฌ์์ค๋ฅผ ์ง์ ํฉ๋๋ค.
- hosts: arista
module_defaults:
eos_facts:
gather_subset: min
gather_network_resources:
- interfaces
gather_facts: True
์ด ์์์ ์๋ก์ด ์ ์ ๋ฐ๊ฒฌํ์ ์ ์์ต๋๋ค. ์ฆ, gather_facts: true
์ด์ ๋คํธ์ํฌ ์ฅ์น์ ๋ํ ๊ธฐ๋ณธ ์ ๋ณด ์์ง์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋คํธ์ํฌ ํฉํธ ๋ชจ๋์ ์ง์ ์ฌ์ฉ:
- name: collect interface configuration facts
eos_facts:
gather_subset: min
gather_network_resources:
- interfaces
ํ๋ ์ด๋ถ์ ์ธํฐํ์ด์ค์ ๋ํด ๋ค์ ์ฌ์ค์ ๋ฐํํฉ๋๋ค.
ansible_facts:
ansible_network_resources:
interfaces:
- enabled: true
name: Ethernet1
mtu: '1476'
- enabled: true
name: Loopback0
- enabled: true
name: Loopback1
- enabled: true
mtu: '1476'
name: Tunnel0
- enabled: true
name: Ethernet1
- enabled: true
name: Tunnel1
- enabled: true
name: Ethernet1
Ansible์ด Arista ์ฅ์น์์ ๊ธฐ๋ณธ ๊ตฌ์ฑ์ ๊ฒ์ํ๊ณ ์ด๋ฅผ ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ๋ก ๋ณํํ์ฌ ๋ค์ด์คํธ๋ฆผ ์์ ๋ฐ ์ด์์ ์ํ ํ์ค ํค-๊ฐ ์์ผ๋ก ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ํ์ธํ์ญ์์ค.
์ธํฐํ์ด์ค ์ฌ์ค์ Ansible ์ ์ฅ ๋ณ์์ ์ถ๊ฐํ๊ณ ์ฆ์ ๋๋ ๋์ค์ ๋ฆฌ์์ค ๋ชจ๋์ ๋ํ ์
๋ ฅ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. eos_interfaces
์ถ๊ฐ ์ฒ๋ฆฌ๋ ๋ณํ ์์ด.
๋ฆฌ์์ค ๋ชจ๋
๊ทธ๋์ ์ฐ๋ฆฌ๋ ์ฌ์ค์ ์ถ์ถํ๊ณ , ๋ฐ์ดํฐ๋ฅผ ์ ๊ทํํ๊ณ , ์ด๋ฅผ ํ์คํ๋ ๋ด๋ถ ๋ฐ์ดํฐ ๊ตฌ์กฐ ๋ค์ด์ด๊ทธ๋จ์ ๋ง์ถ๊ณ ๊ธฐ์ฑ ์ง์ค ์์ค๋ฅผ ๋ฐ์์ต๋๋ค. ๋ง์ธ! ๋ฌผ๋ก ์ด๊ฒ์ ํ๋ฅญํ์ง๋ง ์ฌ์ ํ ํค-๊ฐ ์์ ํน์ ์ฅ์น ํ๋ซํผ์ด ๊ธฐ๋ํ๋ ํน์ ๊ตฌ์ฑ์ผ๋ก ๋ค์ ๋ณํํด์ผ ํฉ๋๋ค. ์ด์ ์ด๋ฌํ ์๋ก์ด ์ฌ์ค โโ์์ง ๋ฐ ์ ๊ทํ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ๋ ค๋ฉด ํ๋ซํผ๋ณ ๋ชจ๋์ด ํ์ํฉ๋๋ค.
๋ฆฌ์์ค ๋ชจ๋์ด๋ ๋ฌด์์ ๋๊น? ์ฅ์น์ ๊ตฌ์ฑ ์น์ ์ ํด๋น ์ฅ์น์์ ์ ๊ณตํ๋ ๋ฆฌ์์ค๋ก ์๊ฐํ ์ ์์ต๋๋ค. ๋คํธ์ํฌ ๋ฆฌ์์ค ๋ชจ๋์ ์๋์ ์ผ๋ก ๋จ์ผ ๋ฆฌ์์ค๋ก ์ ํ๋๋ฉฐ ๋ณต์กํ ๋คํธ์ํฌ ์๋น์ค๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ํด ๋น๋ฉ ๋ธ๋ก์ฒ๋ผ ์์ผ ์ ์์ต๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ฆฌ์์ค ๋ชจ๋์ ๋ํ ์๊ตฌ ์ฌํญ๊ณผ ์ฌ์์ ์์ฐ์ค๋ฝ๊ฒ ๋จ์ํ๋ฉ๋๋ค. ะธ ๋คํธ์ํฌ ์ฅ์น์์ ํน์ ๋คํธ์ํฌ ์๋น์ค๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
๋ฆฌ์์ค ๋ชจ๋์ ๊ธฐ๋ฅ์ ์ค๋ช
ํ๊ธฐ ์ํด ์๋ก์ด ๋คํธ์ํฌ ๋ฆฌ์์ค ์ฌ์ค๊ณผ ๋ชจ๋์ ์ฌ์ฉํ์ฌ ๋ฉฑ๋ฑ์ฑ ์์
์ ๋ณด์ฌ์ฃผ๋ ์์ ํ๋ ์ด๋ถ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค. eos_l3_interface
.
- name: example of facts being pushed right back to device.
hosts: arista
gather_facts: false
tasks:
- name: grab arista eos facts
eos_facts:
gather_subset: min
gather_network_resources: l3_interfaces
- name: ensure that the IP address information is accurate
eos_l3_interfaces:
config: "{{ ansible_network_resources['l3_interfaces'] }}"
register: result
- name: ensure config did not change
assert:
that: not result.changed
๋ณด์๋ค์ํผ, ์ฅ์น์์ ์์ง๋ ๋ฐ์ดํฐ๋ ๋ณํ ์์ด ํด๋น ๋ฆฌ์์ค ๋ชจ๋๋ก ์ง์ ์ ์ก๋ฉ๋๋ค. ์คํ๋๋ฉด ํ๋ ์ด๋ถ์ ์ฅ์น์์ ๊ฐ์ ๊ฒ์ํ์ฌ ์์ ๊ฐ๊ณผ ๋น๊ตํฉ๋๋ค. ์ด ์์์ ๋ฐํ๋ ๊ฐ์ ์์ํ ๋๋ก(์ฆ, ๊ตฌ์ฑ ํธ์ฐจ๋ฅผ ํ์ธ) ๊ตฌ์ฑ์ด ๋ณ๊ฒฝ๋์๋์ง ๋ณด๊ณ ํฉ๋๋ค.
๊ตฌ์ฑ ๋๋ฆฌํํธ๋ฅผ ๊ฐ์งํ๋ ์ด์์ ์ธ ๋ฐฉ๋ฒ์ Ansible ์ ์ฅ ๋ณ์์ ์ฌ์ค์ ์ ์ฅํ๊ณ ๊ฒ์ฌ ๋ชจ๋์์ ๋ฆฌ์์ค ๋ชจ๋๊ณผ ํจ๊ป ์ฃผ๊ธฐ์ ์ผ๋ก ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค. ์ด๋ ๋๊ตฐ๊ฐ๊ฐ ์๋์ผ๋ก ๊ฐ์ ๋ณ๊ฒฝํ๋์ง ํ์ธํ๋ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ ๋๋ค. ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ์กฐ์ง์์๋ ์๋์ผ๋ก ๋ณ๊ฒฝ ๋ฐ ๊ตฌ์ฑ์ ํ์ฉํ์ง๋ง ๋ง์ ์์ ์ Ansible Automation์ ํตํด ์ํ๋ฉ๋๋ค.
์๋ก์ด ๋ฆฌ์์ค ๋ชจ๋์ ์ด์ ๋ฆฌ์์ค ๋ชจ๋๊ณผ ์ด๋ป๊ฒ ๋ค๋ฆ ๋๊น?
๋คํธ์ํฌ ์๋ํ ์์ง๋์ด์ ๊ฒฝ์ฐ Ansible 3์ ์ด์ ๋ฒ์ ์ ๋ฆฌ์์ค ๋ชจ๋ ๊ฐ์๋ 2.9๊ฐ์ง ์ฃผ์ ์ฐจ์ด์ ์ด ์์ต๋๋ค.
1) ํน์ ๋คํธ์ํฌ ๋ฆฌ์์ค(๊ตฌ์ฑ ์น์ ์ผ๋ก๋ ๊ฐ์ฃผ๋ ์ ์์)์ ๋ํด ๋ชจ๋๊ณผ ์ฌ์ค์ ์ง์๋๋ ๋ชจ๋ ๋คํธ์ํฌ ์ด์ ์ฒด์ ์์ ๋์์ ๋ฐ์ ํฉ๋๋ค. Ansible์ด ํ๋์ ๋คํธ์ํฌ ํ๋ซํผ์์ ๋ฆฌ์์ค ๊ตฌ์ฑ์ ์ง์ํ๋ค๋ฉด ๋ชจ๋ ๊ณณ์์ ์ด๋ฅผ ์ง์ํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด์ ๋คํธ์ํฌ ์๋ํ ์์ง๋์ด๊ฐ ๊ธฐ๋ณธ ๋ฐ ์ง์ ๋ชจ๋์ ์ฌ์ฉํ์ฌ ๋ชจ๋ ๋คํธ์ํฌ ์ด์ ์ฒด์ ์์ ๋ฆฌ์์ค(์: LLDP)๋ฅผ ๊ตฌ์ฑํ ์ ์์ผ๋ฏ๋ก ๋ฆฌ์์ค ๋ชจ๋ ์ฌ์ฉ์ด ๋จ์ํ๋ฉ๋๋ค.
2) ์ด์ ๋ฆฌ์์ค ๋ชจ๋์ ์ํ ๊ฐ์ด ํฌํจ๋ฉ๋๋ค.
merged
: ๊ตฌ์ฑ์ด ์ ๊ณต๋ ๊ตฌ์ฑ๊ณผ ๋ณํฉ๋ฉ๋๋ค(๊ธฐ๋ณธ๊ฐ).replaced
: ๋ฆฌ์์ค ๊ตฌ์ฑ์ด ์ ๊ณต๋ ๊ตฌ์ฑ์ผ๋ก ๋์ฒด๋ฉ๋๋ค.overridden
: ๋ฆฌ์์ค ๊ตฌ์ฑ์ด ์ ๊ณต๋ ๊ตฌ์ฑ์ผ๋ก ๋์ฒด๋ฉ๋๋ค. ๋ถํ์ํ ๋ฆฌ์์ค ์ธ์คํด์ค๋ ์ญ์ ๋ฉ๋๋ค.deleted
: ๋ฆฌ์์ค ๊ตฌ์ฑ์ด ์ญ์ /๊ธฐ๋ณธ๊ฐ์ผ๋ก ๋ณต์๋ฉ๋๋ค.
3) ์ด์ ๋ฆฌ์์ค ๋ชจ๋์ ์์ ์ ์ธ ๋ฐํ ๊ฐ์ด ํฌํจ๋ฉ๋๋ค. ๋คํธ์ํฌ ๋ฆฌ์์ค ๋ชจ๋์ด ๋คํธ์ํฌ ์ฅ์น์ ํ์ํ ๋ณ๊ฒฝ์ ์ํ(๋๋ ์ ์)ํ๋ฉด ๋์ผํ ํค-๊ฐ ์์ ํ๋ ์ด๋ถ์ ๋ฐํํฉ๋๋ค.
before
: ์์ ์ ์ ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ ํํ๋ก ์ฅ์น์ ๋ํ ๊ตฌ์ฑ์ ๋๋ค.after
: ์ฅ์น๊ฐ ๋ณ๊ฒฝ๋ ๊ฒฝ์ฐ(๋๋ ํ ์คํธ ๋ชจ๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ณ๊ฒฝ๋ ์ ์๋ ๊ฒฝ์ฐ) ๊ฒฐ๊ณผ ๊ตฌ์ฑ์ด ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ๋ก ๋ฐํ๋ฉ๋๋ค.commands
: ๋ชจ๋ ๊ตฌ์ฑ ๋ช ๋ น์ ์ฅ์น์์ ์คํ๋์ด ์ฅ์น๋ฅผ ์ํ๋ ์ํ๋ก ๋ง๋ญ๋๋ค.
์ด ๋ชจ๋ ๊ฒ์ด ๋ฌด์์ ์๋ฏธํฉ๋๊น? ์ ์ค์ ํจ?
์ด ๊ฒ์๋ฌผ์์๋ ๋ณต์กํ ๊ฐ๋ ์ ๋ง์ด ๋ค๋ฃจ์ง๋ง ๊ฒฐ๊ตญ ๊ธฐ์ ๊ณ ๊ฐ์ด ์ค์ ๋ก ์๋ํ ํ๋ซํผ์ ์ํ ์์ง, ๋ฐ์ดํฐ ์ ๊ทํ ๋ฐ ๋ฃจํ ๊ตฌ์ฑ์ ์๊ตฌํ๋ ๊ฒ์ด ๋ฌด์์ธ์ง ๋ ์ ์ดํดํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ๊ทธ๋ฐ๋ฐ ์ ์ด๋ฌํ ๊ฐ์ ์ด ํ์ํ๊ฐ์? ์ด์ ๋ง์ ์กฐ์ง์ด IT ํ๊ฒฝ์ ๋์ฑ ๋ฏผ์ฒฉํ๊ณ ๊ฒฝ์๋ ฅ ์๊ฒ ๋ง๋ค๊ธฐ ์ํด ๋์งํธ ํ์ ์ ์ถ๊ตฌํ๊ณ ์์ต๋๋ค. ์ข๋ ๋์๋ , ๋ง์ ๋คํธ์ํฌ ์์ง๋์ด๋ ์ด๊ธฐ์ฌ์ด๋ ๊ฒฝ์์ง์ ์์ฒญ์ผ๋ก ๋คํธ์ํฌ ๊ฐ๋ฐ์๊ฐ ๋ฉ๋๋ค.
์กฐ์ง์ ๊ฐ๋ณ ๋คํธ์ํฌ ํ ํ๋ฆฟ์ ์๋ํํด๋ ์ฌ์ผ๋ก ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ง ์๊ณ ์ด๋ ์ ๋ ํจ์จ์ฑ๋ง ํฅ์๋๋ค๋ ์ ์ ๊นจ๋ซ๊ณ ์์ต๋๋ค. Red Hat Ansible Automation Platform์ ๋คํธ์ํฌ ์ฅ์น์ ๊ธฐ๋ณธ ๋ฐ์ดํฐ๋ฅผ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํ ์๊ฒฉํ๊ณ ๊ท๋ฒ์ ์ธ ๋ฆฌ์์ค ๋ฐ์ดํฐ ๋ชจ๋ธ์ ์ ๊ณตํฉ๋๋ค. ์ฆ, ์ฌ์ฉ์๋ ํน์ ๊ณต๊ธ์ ์ฒด ๊ตฌํ๋ณด๋ค๋ ๊ธฐ์ (์: IP ์ฃผ์, VLAN, LLDP ๋ฑ)์ ์ค์ ์ ๋ ๋ณด๋ค ํ๋์ ์ธ ๋ฐฉ๋ฒ์ ์ ํธํ์ฌ ๊ฐ๋ณ ๊ตฌ์ฑ ๋ฐฉ๋ฒ์ ์ ์ฐจ์ ์ผ๋ก ํฌ๊ธฐํ๊ณ ์์ต๋๋ค.
์ด๋ ์ ๋ขฐํ ์ ์๊ณ ์ ์ฆ๋ ๋ช ๋ น ๋ชจ๋๊ณผ ๊ตฌ์ฑ์ ์๋๊ฐ ์ผ๋ง ๋จ์ง ์์์์ ์๋ฏธํฉ๋๊น? ์ด๋ ํ ๊ฒฝ์ฐ์๋. ์์๋๋ ๋คํธ์ํฌ ๋ฆฌ์์ค ๋ชจ๋์ ๋ชจ๋ ๊ฒฝ์ฐ ๋๋ ๋ชจ๋ ๊ณต๊ธ์ ์ฒด์ ์ ์ฉํ ์ ์์ผ๋ฏ๋ก ํน์ ๊ตฌํ์ ์ํด ๋คํธ์ํฌ ์์ง๋์ด๋ ์ฌ์ ํ ๋ช ๋ น ๋ฐ ๊ตฌ์ฑ ๋ชจ๋์ ํ์๋ก ํฉ๋๋ค. ๋ฆฌ์์ค ๋ชจ๋์ ๋ชฉ์ ์ ๋๊ท๋ชจ Jinja ํ ํ๋ฆฟ์ ๋จ์ํํ๊ณ ๊ตฌ์กฐํ๋์ง ์์ ์ฅ์น ๊ตฌ์ฑ์ ๊ตฌ์กฐํ๋ JSON ํ์์ผ๋ก ์ ๊ทํํ๋ ๊ฒ์ ๋๋ค. ๋ฆฌ์์ค ๋ชจ๋์ ์ฌ์ฉํ๋ฉด ๊ธฐ์กด ๋คํธ์ํฌ๊ฐ ์ฝ๊ธฐ ์ฌ์ด ์ ๋ณด ์์ค๋ฅผ ๋ํ๋ด๋ ๊ตฌ์กฐํ๋ ํค-๊ฐ ์์ผ๋ก ๊ตฌ์ฑ์ ๋ณํํ๋ ๊ฒ์ด ๋ ์ฌ์์ง๋๋ค. ๊ตฌ์กฐํ๋ ํค-๊ฐ ์์ ์ฌ์ฉํ๋ฉด ๊ฐ ์ฅ์น์์ ๊ตฌ์ฑ์ ์คํํ๋ ๊ฒ์์ ๋ ๋ฆฝ์ ์ธ ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ๋ก ์์ ํ๋ ๊ฒ์ผ๋ก ์ ํํ๊ณ ๋คํธ์ํฌ๋ฅผ ์ฝ๋ํ ์ธํ๋ผ ์ ๊ทผ ๋ฐฉ์์ ์ต์ ์ ์ผ๋ก ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
Ansible Engine 2.9์๋ ์ด๋ค ๋ฆฌ์์ค ๋ชจ๋์ด ์ ๊ณต๋๋์?
Ansible 2.9์์ ์ด๋ค ์ผ์ด ์ผ์ด๋ ์ง ์์ธํ ์ค๋ช ํ๊ธฐ ์ ์ ์ ์ฒด ์์ ๋ฒ์๋ฅผ ์ด๋ป๊ฒ ๋๋์๋์ง ๊ธฐ์ตํด ๋ณด๊ฒ ์ต๋๋ค.
์ฐ๋ฆฌ๋ 7๊ฐ์ง ๋ฒ์ฃผ๋ฅผ ์๋ณํ๊ณ ๊ฐ ๋ฒ์ฃผ์ ํน์ ๋คํธ์ํฌ ๋ฆฌ์์ค๋ฅผ ํ ๋นํ์ต๋๋ค.
์ฐธ๊ณ : ๊ตต๊ฒ ํ์๋ ๋ฆฌ์์ค๋ Ansible 2.9์์ ๊ณํ ๋ฐ ๊ตฌํ๋์์ต๋๋ค.
๊ธฐ์
๊ณ ๊ฐ๊ณผ ์ปค๋ฎค๋ํฐ์ ํผ๋๋ฐฑ์ ๊ธฐ๋ฐ์ผ๋ก ๋คํธ์ํฌ ํ ํด๋ก์ง ํ๋กํ ์ฝ, ๊ฐ์ํ ๋ฐ ์ธํฐํ์ด์ค์ ๊ด๋ จ๋ ๋ชจ๋์ ๋จผ์ ๋ค๋ฃจ๋ ๊ฒ์ด ๋
ผ๋ฆฌ์ ์ด์์ต๋๋ค.
๋ค์ ๋ฆฌ์์ค ๋ชจ๋์ Ansible Network ํ์์ ๊ฐ๋ฐํ์ผ๋ฉฐ Red Hat์์ ์ง์ํ๋ ํ๋ซํผ์ ํด๋นํฉ๋๋ค.
๋ค์ ๋ชจ๋์ Ansible ์ปค๋ฎค๋ํฐ์์ ๊ฐ๋ฐ๋์์ต๋๋ค.
exos_lldp_global
- ์ต์คํธ๋ฆผ ๋คํธ์์ค์์.nxos_bfd_interfaces
- ์์ค์ฝ์์nxos_telemetry
- ์์ค์ฝ์์
๋ณด์๋ค์ํผ ๋ฆฌ์์ค ๋ชจ๋์ ๊ฐ๋ ์ ํ๋ซํผ ์ค์ฌ ์ ๋ต์ ์ ํฉํฉ๋๋ค. ์ฆ, ๋คํธ์ํฌ ๋ชจ๋ ๊ฐ๋ฐ์ ํ์คํ๋ฅผ ์ง์ํ๊ณ Ansible ์ญํ ๋ฐ ํ๋ ์ด๋ถ ์์ค์์ ์ฌ์ฉ์ ์์ ์ ๋จ์ํํ๊ธฐ ์ํด ํ์ํ ๊ธฐ๋ฅ์ Ansible ์์ฒด์ ํฌํจํฉ๋๋ค. ๋ฆฌ์์ค ๋ชจ๋ ๊ฐ๋ฐ์ ํ์ฅํ๊ธฐ ์ํด Ansible ํ์ Module Builder ๋๊ตฌ๋ฅผ ์ถ์ํ์ต๋๋ค.
Ansible 2.10 ์ด์์ ๋ํ ๊ณํ
Ansible 2.9๊ฐ ์ถ์๋๋ฉด ์ฐ๋ฆฌ๋ ๋คํธ์ํฌ ํ ํด๋ก์ง ๋ฐ ์ ์ฑ
์ ์ถ๊ฐ๋ก ๊ตฌ์ฑํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ Ansible 2.10์ ๋ค์ ๋ฆฌ์์ค ๋ชจ๋ ์ธํธ์ ๋ํด ์์
ํ ๊ฒ์
๋๋ค.
๋ฆฌ์์ค ๋ฐ ์์ํ๊ธฐ
์ถ์ฒ : habr.com