๋‚ด๋ถ€ ํ”Œ๋ ˆ์ด๋ถ. ์ƒˆ๋กœ์šด Ansible Engine 2.9์˜ ๋„คํŠธ์›Œํ‚น ๊ธฐ๋Šฅ

๋‚ด๋ถ€ ํ”Œ๋ ˆ์ด๋ถ. ์ƒˆ๋กœ์šด Ansible Engine 2.9์˜ ๋„คํŠธ์›Œํ‚น ๊ธฐ๋Šฅ

Red Hat Ansible Engine 2.9์˜ ํ–ฅํ›„ ๋ฆด๋ฆฌ์Šค์—์„œ๋Š” ํฅ๋ฏธ๋กœ์šด ๊ฐœ์„  ์‚ฌํ•ญ์„ ์ œ๊ณตํ•˜๋ฉฐ ๊ทธ ์ค‘ ์ผ๋ถ€๋Š” ์ด ๋ฌธ์„œ์—์„œ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์–ธ์ œ๋‚˜ ๊ทธ๋ ‡๋“ฏ์ด ์šฐ๋ฆฌ๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ ์ง€์›์„ ํ†ตํ•ด ๊ณต๊ฐœ์ ์œผ๋กœ Ansible Network ๊ฐœ์„  ์‚ฌํ•ญ์„ ๊ฐœ๋ฐœํ•ด ์™”์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์™€ ํ•จ๊ป˜ํ•˜์„ธ์š” โ€“ ์‚ดํŽด๋ณด์„ธ์š” GitHub์˜ ์ด์Šˆ ๋ณด๋“œ ๊ฐœ๋ฐœ ๊ณ„ํš์„ ์—ฐ๊ตฌํ•˜๊ณ  Red Hat Ansible Engine 2.9 ์ถœ์‹œ ์œ„ํ‚ค ํŽ˜์ด์ง€์—์„œ ์•ค์„œ๋ธ” ๋„คํŠธ์›Œํฌ.

์ตœ๊ทผ์— ๋ฐœํ‘œํ•œ ๋ฐ”์™€ ๊ฐ™์ด, Red Hat Ansible ์ž๋™ํ™” ํ”Œ๋žซํผ ์ด์ œ Ansible Tower, Ansible Engine ๋ฐ ๋ชจ๋“  Ansible Network ์ฝ˜ํ…์ธ ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์š”์ฆ˜ ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๋„คํŠธ์›Œํ‚น ํ”Œ๋žซํผ์€ Ansible ๋ชจ๋“ˆ์„ ํ†ตํ•ด ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด:

  • ์•„๋ฆฌ ์Šคํƒ€ EOS
  • ์‹œ์Šค์ฝ” IOS
  • ์‹œ์Šค์ฝ” IOS XR
  • ์‹œ์Šค์ฝ” NX-OS
  • ์ฃผ๋‹ˆํผ ์ฃผ๋…ธ์Šค
  • ๋น„์˜ค์Šค

Ansible Automation ์„œ๋ธŒ์Šคํฌ๋ฆฝ์…˜์„ ํ†ตํ•ด Red Hat์—์„œ ์™„์ „ํžˆ ์ง€์›ํ•˜๋Š” ํ”Œ๋žซํผ์˜ ์ „์ฒด ๋ชฉ๋ก์„ ๋ณด๋ ค๋ฉด ๋‹ค์Œ์„ ์ฐธ์กฐํ•˜์„ธ์š”. ์—ฌ๊ธฐ์— ๊ฒŒ์‹œ.

์šฐ๋ฆฌ๋Š” ๋ฌด์—‡์„ ๋ฐฐ์› ๋‚˜์š”?

์ง€๋‚œ XNUMX๋…„ ๋™์•ˆ ์šฐ๋ฆฌ๋Š” ๋„คํŠธ์›Œํฌ ์ž๋™ํ™” ํ”Œ๋žซํผ ๊ฐœ๋ฐœ์— ๋Œ€ํ•ด ๋งŽ์€ ๊ฒƒ์„ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋˜ํ•œ ๊ทธ๊ฒƒ์„ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค ะบะฐะบ ํ”Œ๋žซํผ ์•„ํ‹ฐํŒฉํŠธ๋Š” ์ตœ์ข… ์‚ฌ์šฉ์ž์˜ Ansible ํ”Œ๋ ˆ์ด๋ถ ๋ฐ ์—ญํ• ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๊ฐ€ ์•Œ์•„๋‚ธ ๋‚ด์šฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์กฐ์ง์€ ํ•˜๋‚˜๊ฐ€ ์•„๋‹Œ ์—ฌ๋Ÿฌ ๊ณต๊ธ‰์—…์ฒด์˜ ์žฅ์น˜๋ฅผ ์ž๋™ํ™”ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ž๋™ํ™”๋Š” ๊ธฐ์ˆ ์  ํ˜„์ƒ์ผ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ฌธํ™”์  ํ˜„์ƒ์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋Œ€๊ทœ๋ชจ ๋„คํŠธ์›Œํฌ๋ฅผ ์ž๋™ํ™”ํ•˜๋Š” ๊ฒƒ์€ ์ž๋™ํ™” ์„ค๊ณ„์˜ ๊ธฐ๋ณธ ์•„ํ‚คํ…์ฒ˜ ์›์น™์œผ๋กœ ์ธํ•ด ์ƒ๊ฐ๋ณด๋‹ค ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

XNUMX๋…„ ์ „ ์šฐ๋ฆฌ๊ฐ€ ์žฅ๊ธฐ์ ์ธ ์„ฑ์žฅ ๊ณ„ํš์„ ๋…ผ์˜ํ–ˆ์„ ๋•Œ ๊ธฐ์—… ๊ณ ๊ฐ๋“ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์‚ฌํ•ญ์„ ์š”์ฒญํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ์‚ฌ์‹ค ์ˆ˜์ง‘์€ ๋” ํ‘œ์ค€ํ™”๋˜์–ด์•ผ ํ•˜๋ฉฐ ๋ชจ๋“  ์žฅ์น˜์˜ ์ž๋™ํ™” ์›Œํฌํ”Œ๋กœ์— ๋งž์ถฐ ์กฐ์ •๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • Ansible ๋ชจ๋“ˆ์ด ์‚ฌ์‹ค์„ ์ˆ˜์ง‘ํ•œ ํ›„ ์ฃผ๊ธฐ์˜ ํ›„๋ฐ˜๋ถ€๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์žฅ์น˜์˜ ๊ตฌ์„ฑ ์—…๋ฐ์ดํŠธ๋„ ํ‘œ์ค€ํ™”๋˜๊ณ  ์ผ๊ด€์„ฑ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์žฅ์น˜ ๊ตฌ์„ฑ์„ ๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ๋กœ ๋ณ€ํ™˜ํ•˜๋ ค๋ฉด ์—„๊ฒฉํ•˜๊ณ  ์ง€์›๋˜๋Š” ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ •๋ณด์˜ ์ถœ์ฒ˜๋ฅผ ๋„คํŠธ์›Œํฌ ์žฅ์น˜์—์„œ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์‹ค ๊ฐœ์„ 

Ansible์„ ์‚ฌ์šฉํ•˜์—ฌ ๋„คํŠธ์›Œํฌ ์žฅ์น˜์—์„œ ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•˜๋Š” ์ผ์€ ์ข…์ข… ๋ฌด์ž‘์œ„๋กœ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์›น ๊ธฐ๋ฐ˜ ํ”Œ๋žซํผ์€ ๋‹ค์–‘ํ•œ ์ˆ˜์ค€์˜ ์‚ฌ์‹ค ์ˆ˜์ง‘ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ”๊ณ  ์žˆ์ง€๋งŒ ํ‚ค-๊ฐ’ ์Œ์˜ ๋ฐ์ดํ„ฐ ํ‘œํ˜„์„ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๊ณ  ํ‘œ์ค€ํ™”ํ•˜๋Š” ๊ธฐ๋Šฅ์€ ๊ฑฐ์˜ ๋˜๋Š” ์ „ํ˜€ ์—†์Šต๋‹ˆ๋‹ค. ์ฝ๋‹ค ๊ฒŒ์‹œ Ken Celenza๊ฐ€ ์‚ฌ์‹ค ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์„ํ•˜๊ณ  ํ‘œ์ค€ํ™”ํ•˜๋Š” ๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ์–ด๋ ต๊ณ  ๊ณ ํ†ต์Šค๋Ÿฌ์šธ ์ˆ˜ ์žˆ๋Š”์ง€ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ Ansible ๋„คํŠธ์›Œํฌ ์—”์ง„ ์—ญํ• ์„ ๋‹ด๋‹นํ•˜๊ณ  ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋ˆˆ์น˜์ฑ„์…จ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹น์—ฐํžˆ 24K ๋‹ค์šด๋กœ๋“œ ์ดํ›„ ๋„คํŠธ์›Œํฌ ์—”์ง„ ์—ญํ• ์€ ๋„คํŠธ์›Œํฌ ์ž๋™ํ™” ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์œ„ํ•ด Ansible Galaxy์—์„œ ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” Ansible ์—ญํ•  ์ค‘ ํ•˜๋‚˜๋กœ ๋น ๋ฅด๊ฒŒ ์ž๋ฆฌ ์žก์•˜์Šต๋‹ˆ๋‹ค. Ansible 2.8์— ํ•„์š”ํ•œ ์‚ฌํ•ญ์„ ์ค€๋น„ํ•˜๊ธฐ ์œ„ํ•ด ์ด ์ค‘ ๋งŽ์€ ๋ถ€๋ถ„์„ Ansible 2.9๋กœ ์ด๋™ํ•˜๊ธฐ ์ „์— ์ด Ansible ์—ญํ• ์€ ๋ช…๋ น์„ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๊ณ , ๋ช…๋ น์„ ๊ด€๋ฆฌํ•˜๊ณ , ๋„คํŠธ์›Œํฌ ์žฅ์น˜์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ์ฒซ ๋ฒˆ์งธ ๋„๊ตฌ ์„ธํŠธ๋ฅผ ์ œ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค.

๋„คํŠธ์›Œํฌ ์—”์ง„์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด ์ด๋Š” Ansible์—์„œ ์‚ฌ์šฉํ•  ํŒฉํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘, ๊ตฌ๋ฌธ ๋ถ„์„ ๋ฐ ํ‘œ์ค€ํ™”ํ•˜๋Š” ๋งค์šฐ ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ด ์—ญํ• ์˜ ๋‹จ์ ์€ ๊ฐ ํ”Œ๋žซํผ๊ณผ ๋ชจ๋“  ๋„คํŠธ์›Œํฌ ํ™œ๋™์— ๋Œ€ํ•ด ์ „์ฒด ํŒŒ์„œ๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํŒŒ์„œ๋ฅผ ์ƒ์„ฑ, ์ œ๊ณต ๋ฐ ์œ ์ง€ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ์–ด๋ ค์šด์ง€ ์ดํ•ดํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์‚ดํŽด๋ณด์‹ญ์‹œ์˜ค. 1200๊ฐœ ์ด์ƒ์˜ ํŒŒ์„œ Cisco ์ง์›๋“ค๋กœ๋ถ€ํ„ฐ.

๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ, ๋Œ€๊ทœ๋ชจ ์ž๋™ํ™”๋ฅผ ์œ„ํ•ด์„œ๋Š” ์žฅ์น˜์—์„œ ์ •๋ณด๋ฅผ ์–ป๊ณ  ์ด๋ฅผ ํ‚ค-๊ฐ’ ์Œ์œผ๋กœ ์ •๊ทœํ™”ํ•˜๋Š” ๊ฒƒ์ด ํ•„์ˆ˜์ ์ด์ง€๋งŒ, ๊ณต๊ธ‰์—…์ฒด์™€ ๋„คํŠธ์›Œํฌ ํ”Œ๋žซํผ์ด ๋งŽ์œผ๋ฉด ์ด๋ฅผ ๋‹ฌ์„ฑํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

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: ๋ฆฌ์†Œ์Šค ๊ตฌ์„ฑ์ด ์‚ญ์ œ/๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ๋ณต์›๋ฉ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ํ”Œ๋ ˆ์ด๋ถ. ์ƒˆ๋กœ์šด Ansible Engine 2.9์˜ ๋„คํŠธ์›Œํ‚น ๊ธฐ๋Šฅ

3) ์ด์ œ ๋ฆฌ์†Œ์Šค ๋ชจ๋“ˆ์— ์•ˆ์ •์ ์ธ ๋ฐ˜ํ™˜ ๊ฐ’์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ ๋ฆฌ์†Œ์Šค ๋ชจ๋“ˆ์ด ๋„คํŠธ์›Œํฌ ์žฅ์น˜์— ํ•„์š”ํ•œ ๋ณ€๊ฒฝ์„ ์ˆ˜ํ–‰(๋˜๋Š” ์ œ์•ˆ)ํ•˜๋ฉด ๋™์ผํ•œ ํ‚ค-๊ฐ’ ์Œ์„ ํ”Œ๋ ˆ์ด๋ถ์— ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • before: ์ž‘์—… ์ „์— ๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ ํ˜•ํƒœ๋กœ ์žฅ์น˜์— ๋Œ€ํ•œ ๊ตฌ์„ฑ์ž…๋‹ˆ๋‹ค.
  • after: ์žฅ์น˜๊ฐ€ ๋ณ€๊ฒฝ๋œ ๊ฒฝ์šฐ(๋˜๋Š” ํ…Œ์ŠคํŠธ ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ) ๊ฒฐ๊ณผ ๊ตฌ์„ฑ์ด ๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ๋กœ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.
  • commands: ๋ชจ๋“  ๊ตฌ์„ฑ ๋ช…๋ น์€ ์žฅ์น˜์—์„œ ์‹คํ–‰๋˜์–ด ์žฅ์น˜๋ฅผ ์›ํ•˜๋Š” ์ƒํƒœ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ํ”Œ๋ ˆ์ด๋ถ. ์ƒˆ๋กœ์šด Ansible Engine 2.9์˜ ๋„คํŠธ์›Œํ‚น ๊ธฐ๋Šฅ

๋‚ด๋ถ€ ํ”Œ๋ ˆ์ด๋ถ. ์ƒˆ๋กœ์šด Ansible Engine 2.9์˜ ๋„คํŠธ์›Œํ‚น ๊ธฐ๋Šฅ

์ด ๋ชจ๋“  ๊ฒƒ์ด ๋ฌด์—‡์„ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ? ์™œ ์ค‘์š” ํ•จ?

์ด ๊ฒŒ์‹œ๋ฌผ์—์„œ๋Š” ๋ณต์žกํ•œ ๊ฐœ๋…์„ ๋งŽ์ด ๋‹ค๋ฃจ์ง€๋งŒ ๊ฒฐ๊ตญ ๊ธฐ์—… ๊ณ ๊ฐ์ด ์‹ค์ œ๋กœ ์ž๋™ํ™” ํ”Œ๋žซํผ์„ ์œ„ํ•œ ์ˆ˜์ง‘, ๋ฐ์ดํ„ฐ ์ •๊ทœํ™” ๋ฐ ๋ฃจํ”„ ๊ตฌ์„ฑ์„ ์š”๊ตฌํ•˜๋Š” ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€ ๋” ์ž˜ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์™œ ์ด๋Ÿฌํ•œ ๊ฐœ์„ ์ด ํ•„์š”ํ•œ๊ฐ€์š”? ์ด์ œ ๋งŽ์€ ์กฐ์ง์ด IT ํ™˜๊ฒฝ์„ ๋”์šฑ ๋ฏผ์ฒฉํ•˜๊ณ  ๊ฒฝ์Ÿ๋ ฅ ์žˆ๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๋””์ง€ํ„ธ ํ˜์‹ ์„ ์ถ”๊ตฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ข‹๋“  ๋‚˜์˜๋“ , ๋งŽ์€ ๋„คํŠธ์›Œํฌ ์—”์ง€๋‹ˆ์–ด๋Š” ์ด๊ธฐ์‹ฌ์ด๋‚˜ ๊ฒฝ์˜์ง„์˜ ์š”์ฒญ์œผ๋กœ ๋„คํŠธ์›Œํฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

์กฐ์ง์€ ๊ฐœ๋ณ„ ๋„คํŠธ์›Œํฌ ํ…œํ”Œ๋ฆฟ์„ ์ž๋™ํ™”ํ•ด๋„ ์‚ฌ์ผ๋กœ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š๊ณ  ์–ด๋Š ์ •๋„ ํšจ์œจ์„ฑ๋งŒ ํ–ฅ์ƒ๋œ๋‹ค๋Š” ์ ์„ ๊นจ๋‹ซ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Red Hat Ansible Automation Platform์€ ๋„คํŠธ์›Œํฌ ์žฅ์น˜์˜ ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ๋ฅผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์—„๊ฒฉํ•˜๊ณ  ๊ทœ๋ฒ”์ ์ธ ๋ฆฌ์†Œ์Šค ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์‚ฌ์šฉ์ž๋Š” ํŠน์ • ๊ณต๊ธ‰์—…์ฒด ๊ตฌํ˜„๋ณด๋‹ค๋Š” ๊ธฐ์ˆ (์˜ˆ: IP ์ฃผ์†Œ, VLAN, LLDP ๋“ฑ)์— ์ค‘์ ์„ ๋‘” ๋ณด๋‹ค ํ˜„๋Œ€์ ์ธ ๋ฐฉ๋ฒ•์„ ์„ ํ˜ธํ•˜์—ฌ ๊ฐœ๋ณ„ ๊ตฌ์„ฑ ๋ฐฉ๋ฒ•์„ ์ ์ฐจ์ ์œผ๋กœ ํฌ๊ธฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Š” ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๊ณ  ์ž…์ฆ๋œ ๋ช…๋ น ๋ชจ๋“ˆ๊ณผ ๊ตฌ์„ฑ์˜ ์‹œ๋Œ€๊ฐ€ ์–ผ๋งˆ ๋‚จ์ง€ ์•Š์•˜์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ? ์–ด๋– ํ•œ ๊ฒฝ์šฐ์—๋„. ์˜ˆ์ƒ๋˜๋Š” ๋„คํŠธ์›Œํฌ ๋ฆฌ์†Œ์Šค ๋ชจ๋“ˆ์€ ๋ชจ๋“  ๊ฒฝ์šฐ ๋˜๋Š” ๋ชจ๋“  ๊ณต๊ธ‰์—…์ฒด์— ์ ์šฉํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ํŠน์ • ๊ตฌํ˜„์„ ์œ„ํ•ด ๋„คํŠธ์›Œํฌ ์—”์ง€๋‹ˆ์–ด๋Š” ์—ฌ์ „ํžˆ ๋ช…๋ น ๋ฐ ๊ตฌ์„ฑ ๋ชจ๋“ˆ์„ ํ•„์š”๋กœ ํ•ฉ๋‹ˆ๋‹ค. ๋ฆฌ์†Œ์Šค ๋ชจ๋“ˆ์˜ ๋ชฉ์ ์€ ๋Œ€๊ทœ๋ชจ Jinja ํ…œํ”Œ๋ฆฟ์„ ๋‹จ์ˆœํ™”ํ•˜๊ณ  ๊ตฌ์กฐํ™”๋˜์ง€ ์•Š์€ ์žฅ์น˜ ๊ตฌ์„ฑ์„ ๊ตฌ์กฐํ™”๋œ JSON ํ˜•์‹์œผ๋กœ ์ •๊ทœํ™”ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฆฌ์†Œ์Šค ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ธฐ์กด ๋„คํŠธ์›Œํฌ๊ฐ€ ์ฝ๊ธฐ ์‰ฌ์šด ์ •๋ณด ์†Œ์Šค๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ตฌ์กฐํ™”๋œ ํ‚ค-๊ฐ’ ์Œ์œผ๋กœ ๊ตฌ์„ฑ์„ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์ด ๋” ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค. ๊ตฌ์กฐํ™”๋œ ํ‚ค-๊ฐ’ ์Œ์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ ์žฅ์น˜์—์„œ ๊ตฌ์„ฑ์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์—์„œ ๋…๋ฆฝ์ ์ธ ๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ๋กœ ์ž‘์—…ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ „ํ™˜ํ•˜๊ณ  ๋„คํŠธ์›Œํฌ๋ฅผ ์ฝ”๋“œํ˜• ์ธํ”„๋ผ ์ ‘๊ทผ ๋ฐฉ์‹์˜ ์ตœ์ „์„ ์œผ๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Ansible Engine 2.9์—๋Š” ์–ด๋–ค ๋ฆฌ์†Œ์Šค ๋ชจ๋“ˆ์ด ์ œ๊ณต๋˜๋‚˜์š”?

Ansible 2.9์—์„œ ์–ด๋–ค ์ผ์ด ์ผ์–ด๋‚ ์ง€ ์ž์„ธํžˆ ์„ค๋ช…ํ•˜๊ธฐ ์ „์— ์ „์ฒด ์ž‘์—… ๋ฒ”์œ„๋ฅผ ์–ด๋–ป๊ฒŒ ๋‚˜๋ˆ„์—ˆ๋Š”์ง€ ๊ธฐ์–ตํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” 7๊ฐ€์ง€ ๋ฒ”์ฃผ๋ฅผ ์‹๋ณ„ํ•˜๊ณ  ๊ฐ ๋ฒ”์ฃผ์— ํŠน์ • ๋„คํŠธ์›Œํฌ ๋ฆฌ์†Œ์Šค๋ฅผ ํ• ๋‹นํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ํ”Œ๋ ˆ์ด๋ถ. ์ƒˆ๋กœ์šด Ansible Engine 2.9์˜ ๋„คํŠธ์›Œํ‚น ๊ธฐ๋Šฅ

์ฐธ๊ณ : ๊ตต๊ฒŒ ํ‘œ์‹œ๋œ ๋ฆฌ์†Œ์Šค๋Š” Ansible 2.9์—์„œ ๊ณ„ํš ๋ฐ ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
๊ธฐ์—… ๊ณ ๊ฐ๊ณผ ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ํ”ผ๋“œ๋ฐฑ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋„คํŠธ์›Œํฌ ํ† ํด๋กœ์ง€ ํ”„๋กœํ† ์ฝœ, ๊ฐ€์ƒํ™” ๋ฐ ์ธํ„ฐํŽ˜์ด์Šค์™€ ๊ด€๋ จ๋œ ๋ชจ๋“ˆ์„ ๋จผ์ € ๋‹ค๋ฃจ๋Š” ๊ฒƒ์ด ๋…ผ๋ฆฌ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค.
๋‹ค์Œ ๋ฆฌ์†Œ์Šค ๋ชจ๋“ˆ์€ Ansible Network ํŒ€์—์„œ ๊ฐœ๋ฐœํ–ˆ์œผ๋ฉฐ Red Hat์—์„œ ์ง€์›ํ•˜๋Š” ํ”Œ๋žซํผ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ํ”Œ๋ ˆ์ด๋ถ. ์ƒˆ๋กœ์šด Ansible Engine 2.9์˜ ๋„คํŠธ์›Œํ‚น ๊ธฐ๋Šฅ

๋‹ค์Œ ๋ชจ๋“ˆ์€ Ansible ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • exos_lldp_global - ์ต์ŠคํŠธ๋ฆผ ๋„คํŠธ์›์Šค์—์„œ.
  • nxos_bfd_interfaces - ์‹œ์Šค์ฝ”์—์„œ
  • nxos_telemetry - ์‹œ์Šค์ฝ”์—์„œ

๋ณด์‹œ๋‹ค์‹œํ”ผ ๋ฆฌ์†Œ์Šค ๋ชจ๋“ˆ์˜ ๊ฐœ๋…์€ ํ”Œ๋žซํผ ์ค‘์‹ฌ ์ „๋žต์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋„คํŠธ์›Œํฌ ๋ชจ๋“ˆ ๊ฐœ๋ฐœ์˜ ํ‘œ์ค€ํ™”๋ฅผ ์ง€์›ํ•˜๊ณ  Ansible ์—ญํ•  ๋ฐ ํ”Œ๋ ˆ์ด๋ถ ์ˆ˜์ค€์—์„œ ์‚ฌ์šฉ์ž ์ž‘์—…์„ ๋‹จ์ˆœํ™”ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์„ Ansible ์ž์ฒด์— ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ๋ฆฌ์†Œ์Šค ๋ชจ๋“ˆ ๊ฐœ๋ฐœ์„ ํ™•์žฅํ•˜๊ธฐ ์œ„ํ•ด Ansible ํŒ€์€ Module Builder ๋„๊ตฌ๋ฅผ ์ถœ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค.

Ansible 2.10 ์ด์ƒ์— ๋Œ€ํ•œ ๊ณ„ํš

Ansible 2.9๊ฐ€ ์ถœ์‹œ๋˜๋ฉด ์šฐ๋ฆฌ๋Š” ๋„คํŠธ์›Œํฌ ํ† ํด๋กœ์ง€ ๋ฐ ์ •์ฑ…์„ ์ถ”๊ฐ€๋กœ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” Ansible 2.10์˜ ๋‹ค์Œ ๋ฆฌ์†Œ์Šค ๋ชจ๋“ˆ ์„ธํŠธ์— ๋Œ€ํ•ด ์ž‘์—…ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ACL, OSPF ๋ฐ BGP. ์•„์ง ๊ฐœ๋ฐœ ๊ณ„ํš์€ ์กฐ์ •๋  ์ˆ˜ ์žˆ์œผ๋‹ˆ ์˜๊ฒฌ์ด ์žˆ์œผ์‹œ๋ฉด ์ œ๋ณด ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค. Ansible ๋„คํŠธ์›Œํฌ ์ปค๋ฎค๋‹ˆํ‹ฐ.

๋ฆฌ์†Œ์Šค ๋ฐ ์‹œ์ž‘ํ•˜๊ธฐ

Ansible ์ž๋™ํ™” ํ”Œ๋žซํผ์— ๋Œ€ํ•œ ๋ณด๋„ ์ž๋ฃŒ
Ansible ์ž๋™ํ™” ํ”Œ๋žซํผ ๋ธ”๋กœ๊ทธ
Ansible ์ฝ˜ํ…์ธ  ์ „๋‹ฌ์˜ ๋ฏธ๋ž˜
Ansible ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ ๋ณ€๊ฒฝ์— ๋Œ€ํ•œ ๊ณ ์ฐฐ

์ถœ์ฒ˜ : habr.com

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