์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

[Ansible] Jinja2์™€ Ansible ๋ฌธ๋ฒ•์—์„œ์˜ >-์™€ \

hyeyeonismm 2024. 9. 12. 17:05
Ansible์„ ์‚ฌ์šฉํ•˜๋ฉด์„œ ์ค„๋ฐ”๊ฟˆ์„ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์—์„œ ๊ฐ‘์ž๊ธฐ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜ ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๋ฉฐ ์•Œ๊ฒŒ๋œ ๊ฒƒ๋“ค์„ ์ •๋ฆฌํ–ˆ๋‹ค.

 

์—๋Ÿฌ & ์›์ธ

์ž˜ ๋™์ž‘ํ•˜๋˜ Ansible ์ฝ”๋“œ์— ๊ฐ‘์ž๊ธฐ ์ด๋Ÿฐ ์˜ค๋ฅ˜๊ฐ€ ๋–ด๋‹ค. 

์ฝ”๋“œ๊ฐ€ ๋ณ€๊ฒฝ๋œ ๊ฒƒ์€ ์—†๊ณ  VSC ๋‚ด์—์„œ YAML Extension์„ ์„ค์น˜ํ•œ ๊ฒŒ ์ „๋ถ€์˜€๋Š”๋ฐ ..
setting.json์—์„œ YAML Extension๊ณผ ๊ด€๋ จ๋œ ์„ค์ •์„ ํ™•์ธํ–ˆ๋Š”๋ฐ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๊ฐ€ true๋กœ ๋˜์–ด์žˆ์—ˆ๋‹ค.

ํ•ด๋‹น ์„ค์ •์„ true๋กœ ํ•ด๋†“์œผ๋ฉด YAML ํŒŒ์ผ์˜ ๊ตฌ์กฐ์™€ ๊ตฌ๋ฌธ์„ ๊ฒ€์‚ฌํ•˜์—ฌ ์˜ค๋ฅ˜๋ฅผ ์ฐพ์•„์ค€๋‹ค. ๋‚˜์˜ ๊ฒฝ์šฐ์ฒ˜๋Ÿผ Jinja2 ํ…œํ”Œ๋ฆฟ์ด ํฌํ•จ๋œ YAML ํŒŒ์ผ์—์„œ, ์ด๋ฅผ ํ‘œ์ค€ ๊ตฌ๋ฌธ์œผ๋กœ ์ธ์‹ํ•˜์ง€ ๋ชปํ•˜๊ณ  ์˜ค๋ฅ˜๋ฅผ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๋‹ค.
๊ฐœ์ธ์ ์œผ๋กœ ์ด๋ ‡๊ฒŒ ๊ทœ์น™์ด ๋นก๋นกํ•œ๊ฑธ ์„ ํ˜ธํ•˜๊ธฐ ๋•Œ๋ฌธ์— true๋กœ ์„ค์ •ํ•ด๋†“๊ณ  ๊ฐœ๋ฐœํ•˜๊ธฐ๋กœ ๊ฒฐ์ • ..

 

>- ์™€ \ ์ฐจ์ด

YAML์—์„œ >- ๋Š” ์ค„๋ฐ”๊ฟˆ์„ ์—†์• ๊ณ  ํ…์ŠคํŠธ๋ฅผ ๋…ผ๋ฆฌ์ ์œผ๋กœ ํ•œ ์ค„๋กœ ์ด์–ด์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. (|-๋„ ๋งˆ์ฐฌ๊ฐ€์ง€)
์ค„๋ฐ”๊ฟˆ์€ ์ œ๊ฑฐ๋˜์ง€๋งŒ ๊ฐ ์ค„ ์‚ฌ์ด์— ๊ณต๋ฐฑ์ด ์ถ”๊ฐ€๋œ๋‹ค๋Š” ํŠน์ง•์ด ์žˆ๋‹ค.

example: >-
  This is line 1
  This is line 2
  This is line 3

์œ„์™€ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ์ถœ๋ ฅํ•ด๋ณธ๋‹ค๋ฉด ๊ฐ ์ค„ ์‚ฌ์ด์— ์•„๋ž˜์™€ ๊ฐ™์ด ๊ณต๋ฐฑ์ด ๋“ค์–ด๊ฐ„๋‹ค.

This is line 1 This is line 2 This is line 3

 

๋ฐฑ์Šฌ๋ž˜์‹œ(\)๋Š” YAML ๋ฌธ๋ฒ•์—์„œ ์ค„๋ฐ”๊ฟˆ์„ ์œ„ํ•ด ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Ansible๊ณผ Jinja2๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ \๋Š” Jinja2 ํ‘œํ˜„์‹ ๋‚ด๋ถ€์—์„œ๋งŒ ์‚ฌ์šฉ๋œ๋‹ค. Jinja2์—์„œ ๋ฐฑ์Šฌ๋ž˜์‹œ๋Š” ์ค„๋ฐ”๊ฟˆ ์—ฐ์† ๊ธฐํ˜ธ๋กœ ํ•ด์„๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

host_info: "{{ host_info | default({}) | combine({ \
  'id': item.id, \
  'name': item.name \
}) }}"

 

YAML Extension์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ YAML ํŒŒ์„œ๋Š” ์ด๋ฅผ ์ธ์ง€ํ•˜์ง€ ๋ชปํ•˜๊ณ  ์˜ค๋ฅ˜๋ฅผ ๋ฑ‰์–ด๋‚ด๊ธฐ ๋•Œ๋ฌธ์—, >- ๋ฅผ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ–ˆ๋‹ค.