Ansible: TRANSFORM_INVALID_GROUP_CHARS๋Š” ์œ ํšจํ•œ ๊ทธ๋ฃน ํŒจํ„ด์„ ๋ฌธ์„œํ™”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2019๋…„ 05์›” 24์ผ  ยท  104์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: ansible/ansible



์š”์•ฝ

TRANSFORM_INVALID_GROUP_CHARS . ์†Œ์Šค๋ฅผ ์ฝ๋Š” ๊ฒƒ ์™ธ์—๋Š” ์•ž์œผ๋กœ ์–ด๋–ค ๋ฌธ์ž๋ฅผ ํ”ผํ•ด์•ผ ํ•˜๋Š”์ง€ ๋ช…ํ™•ํ•˜์ง€ ์•Š์•˜์œผ๋ฉฐ ๊ฒฝ๊ณ ( -vvvv )๋Š” ํ˜„์žฌ ์‚ฌ์šฉ ์ค‘์ธ ์ž˜๋ชป๋œ ๋ฌธ์ž๋ฅผ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค.

์œ ํšจํ•œ python vars๋กœ ์ด๋ฆ„์„ ํ‘ธ์‹œํ•˜๊ณ  ์žˆ์Œ์„ ๋ช…ํ™•ํžˆ ํ•˜์‹ญ์‹œ์˜ค. ์ด๊ฒƒ์€ cfg ์˜ต์…˜, ๊ฒฝ๊ณ  ๋ฐ ์˜จ๋ผ์ธ ๋ฌธ์„œ์— ๋Œ€ํ•œ ๋ฌธ์„œ์—์„œ ๋ˆ„๋ฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

(https://github.com/ansible/ansible/commit/d241794daa6d413e6447890e2a4f11e0d818cf0e#diff-b77962b6b54a830ec373de0602918318R122)

https://docs.ansible.com/ansible/latest/porting_guides/porting_guide_2.8.html ์—๋„ ์ด์— ๋Œ€ํ•œ ์–ธ๊ธ‰์ด ์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ ์œ ํ˜•
  • ๋ฌธ์„œ ๋ณด๊ณ ์„œ
๊ตฌ์„ฑ ์š”์†Œ ์ด๋ฆ„


๊ทธ๋ฃน

ANSIBLE ๋ฒ„์ „

ansible 2.8.0
  config file = /home/awoodward/ansible-skynet/ansible.cfg
  configured module search path = [u'/home/awoodward/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/site-packages/ansible
  executable location = /usr/local/bin/ansible
  python version = 2.7.5 (default, Apr  9 2019, 14:30:50) [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)]
๊ตฌ์„ฑ

ํ•ด๋‹น ์‚ฌํ•ญ ์—†์Œ

OS / ํ™˜๊ฒฝ

ํ•ด๋‹น ์‚ฌํ•ญ ์—†์Œ

์ถ”๊ฐ€ ์ •๋ณด

ํ•ด๋‹น ์‚ฌํ•ญ ์—†์Œ

affects_2.8 docs has_pr module core system

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๊ทธ๋ฃน ์ด๋ฆ„์—์„œ ๋Œ€์‹œ๋ฅผ ์‚ญ์ œํ•œ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ํŠนํžˆ ๋งŽ์€ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด์— ๋Œ€ํ•œ ํ•ฉ๋‹นํ•œ ์ด์œ ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ๊ณ ๊ตฐ๋ถ„ํˆฌํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  104 ๋Œ“๊ธ€

์„ค๋ช…์—์„œ ์‹๋ณ„๋œ ํŒŒ์ผ:

์ด ํŒŒ์ผ์ด ์ •ํ™•ํ•˜์ง€ ์•Š์œผ๋ฉด ์„ค๋ช…์˜ component name ์„น์…˜์„ ์—…๋ฐ์ดํŠธํ•˜๊ฑฐ๋‚˜ !component ๋ด‡ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์„ธ์š”.

๋ด‡ ๋„์›€๋ง์„ ๋ณด๋ ค๋ฉด ์—ฌ๊ธฐ๋ฅผ ํด๋ฆญํ•˜์„ธ์š”.

์ด ๊ฒฝ๊ณ ๊ฐ€ ํ‘œ์‹œ๋˜๊ธฐ ์‹œ์ž‘ํ–ˆ์ง€๋งŒ ํฌํŒ… ๊ฐ€์ด๋“œ์—์„œ ์ฐธ์กฐ๋ฅผ ์ฐพ์ง€ ๋ชปํ–ˆ๊ณ  ์ˆ˜์ • ๋ฐฉ๋ฒ•์ด๋‚˜ ๋‚ด์šฉ์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ์ฐพ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚ด ๊ฒฝ๊ณ ์˜ ๋Œ€๋ถ€๋ถ„์€ instance_id๊ฐ€ - (์˜ˆ: i-033f62b586143dff7 ) ๋ฐ ์ง€์—ญ(์˜ˆ: eu-central-1c )์„ ์‚ฌ์šฉํ•œ ec2.py์—์„œ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ ์ด๊ฒƒ์— ๋Œ€ํ•œ ์‹ค์ œ ์ˆ˜์ •

๋งˆ์ง€๋ง‰์œผ๋กœ, ์ด๊ฒƒ์€ ๋‚ด๊ฐ€ when: ansible_hostname in groups['varnish'] ๋ฅผ ์‚ฌ์šฉํ–ˆ๊ณ  ansible_hostname ๊ฐ€ varnish-eu-central-1c-001 ํ”Œ๋ ˆ์ด๋ถ ์ค‘ ์ผ๋ถ€๋ฅผ ๊นจ๋œจ๋ ธ์Šต๋‹ˆ๋‹ค.
๊ณผ๊ฑฐ์—๋Š” ์ด๊ฒƒ์ด ์ž˜ ์ž‘๋™ํ–ˆ์ง€๋งŒ ์ง€๊ธˆ์€ inventory_hostname ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ varnish_eu_central_1c_001 ๋ฅผ ์–ป๊ณ  groups['varnish'] ๋Œ€ ๋งค์น˜๋ฅผ ์–ป์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ inventory_hostname ๋ฐ groups[] ๊ฐ€ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ํฌํŒ… ๊ฐ€์ด๋“œ์˜ ๊ฒฝ๊ณ ๊ฐ€ ์ตœ์†Œํ•œ ๊ธด๊ธ‰ํ•˜๊ฒŒ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฃน ์ด๋ฆ„์—์„œ ๋Œ€์‹œ๋ฅผ ์‚ญ์ œํ•œ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ํŠนํžˆ ๋งŽ์€ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด์— ๋Œ€ํ•œ ํ•ฉ๋‹นํ•œ ์ด์œ ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ๊ณ ๊ตฐ๋ถ„ํˆฌํ•ฉ๋‹ˆ๋‹ค.

@ssbarnea ์šฐ์„ , ์œ ํšจํ•œ ํŒŒ์ด์ฌ ์‹๋ณ„์ž์ธ ๋ณ€์ˆ˜ ์ด๋ฆ„ ๋ฐ ๊ธฐํƒ€ ์œ ์‚ฌํ•œ ํ‚ค๋งŒ ํ—ˆ์šฉํ•˜๋„๋ก ํ‘ธ์‹œํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฃน ์ด๋ฆ„์— ๋Œ€ํ•ด ์กฐ๊ธˆ ๋” ์„ค๋ช…ํ•˜์ž๋ฉด, ์‚ฌ์šฉ์ž๊ฐ€ ์˜ˆ์ƒํ•œ ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” groups.foo-group ์™€ ๊ฐ™์€ "์  ๊ตฌ๋ฌธ"์„ ์‚ฌ์šฉํ•˜๋ ค๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด์™€ ๊ฐ™์€ ์ž‘์€ ๋ฌธ์ œ๋กœ ์ธํ•œ ๋ฌธ์ œ ๋ฐ ์ง€์› ์š”์ฒญ์˜ ์ˆ˜๋Š” ์ด์™€ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ์„ธ์ดํ”„ ๊ฐ€๋“œ ์ด๋ฆ„์— ๋Œ€ํ•œ ๊ฒฝ๋กœ๋กœ ์ด๋™ํ•˜๊ฒŒ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์œ ํšจํ•˜์ง€ ์•Š์€ ๋ฌธ์ž๋กœ ๊ฐ„์ฃผ๋˜๋Š” ๊ฒƒ์„ ์œ ์ง€ํ•˜๋ ค๋Š” ์‚ฌ์šฉ์ž๋Š” ์ด ๊ธฐ๋Šฅ์„ ์„ ํƒ ํ•ด์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

๊ทธ๋ž˜์„œ, ansible.cfg์— force_valid_group_names = false ๋ฅผ ๊ฐ„๋‹จํžˆ ์„ค์ •ํ•ฉ๋‹ˆ๊นŒ? https://github.com/ansible/ansible/commit/d241794daa6d413e6447890e2a4f11e0d818cf0e#diff -fd24ad93fbc32f454761746c1ac908f2๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ๊ฒƒ์ด ๋งž๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

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

๊ทธ๋ž˜์„œ, ansible.cfg์— force_valid_group_names = false ๋ฅผ ๊ฐ„๋‹จํžˆ ์„ค์ •ํ•ฉ๋‹ˆ๊นŒ? d241794#diff-fd24ad93fbc32f454761746c1ac908f2๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๊ฒƒ์ด ๋งž๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

export ANSIBLE_TRANSFORM_INVALID_GROUP_CHARS=never ๋˜๋Š” export ANSIBLE_TRANSFORM_INVALID_GROUP_CHARS=ignore -- ํ›„์ž๋Š” ์•„์ง ๋ฌธ์„œ์— ์—†์Šต๋‹ˆ๋‹ค: https://github.com/ansible/ansible/pull/57318

๊ณ ๋งˆ์›Œ, ์ œ์ž„์Šค. ์‚ฌ๋žŒ๋“ค์ด ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€์— ๋Œ€ํ•œ ํ›„์† ์กฐ์น˜๋ฅผ ์ทจํ•˜๊ธฐ ์œ„ํ•ด ์ด ๋ฌธ์ œ๋ฅผ ๋ฐฉ๋ฌธํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์œ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐ๋˜๋Š” ์ •๋ณด๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

์ธ๋ฒคํ† ๋ฆฌ์—์„œ ์ž˜๋ชป๋œ ๊ทธ๋ฃน์„ ์ œ๊ฑฐํ•  ์ค€๋น„๊ฐ€ ๋  ๋•Œ๊นŒ์ง€ โ‰ฅ2.10 ๊ทธ๋ฃน ์ด๋ฆ„ ์ž๋™ ๋ณ€ํ™˜์„ ๋ณด๋‹ค ์ด์‹์„ฑ/์˜๊ตฌ์ ์œผ๋กœ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด force_valid_group_names = never ๋ฅผ [defaults] INI ์„น์…˜์— ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์˜ค. ansible.cfg .

๊ฒฝ๊ณ ๋ฅผ ์œ ๋ฐœํ•˜๋Š” ๋ชจ๋“  ๊ทธ๋ฃน๊ณผ ์ž˜๋ชป๋œ ๋ฌธ์ž๋ฅผ ๋ณด๋ ค๋ฉด(์•„๋งˆ๋„ ๋‹จ๊ณ„์  ์ค‘๋‹จ ๋Œ€์ƒ์œผ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Œ) ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฐ€๋Šฅํ•œ CLI no-op ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ansible-inventory -vvvv --host=localhost 2>&1 | grep replacing

์ด๋Ÿฌํ•œ ์ž˜๋ชป๋œ ๋ฌธ์ž๋Š” (2019-06-04 ๊ธฐ์ค€) ๋‹ค์Œ์—์„œ ์ƒ์ˆ˜ INVALID_VARIABLE_NAMES ๋กœ ์ •์˜๋ฉ๋‹ˆ๋‹ค.
https://github.com/ansible/ansible/blob/devel/lib/ansible/constants.py#L119
'^[\d\W]|[^\w]' ,
์ฆ‰: any leading non-alpha character OR any character other than alpha-numeric and underscore .
(๋งž์•˜์œผ๋ฉด ์ข‹๊ฒ ๋‹ค)

์‚ฌ์šฉ ์ค‘๋‹จ ๊ฒฝ๊ณ ๊ฐ€ ์งœ์ฆ๋‚˜๋Š” ๊ฒฝ์šฐ ansible- ๋ช…๋ น ๋˜๋Š” ansible ์ž„์‹œ ๋ช…๋ น์— ๋Œ€ํ•ด deprecation_warnings = False ๋ฅผ ๋™์ผํ•œ [defaults] ์— ์ถ”๊ฐ€ํ•˜์—ฌ ์˜๊ตฌ์ ์œผ๋กœ ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค ansible.cfg , ํ•˜์ง€๋งŒ (์ค‘์š”ํ•œ ์†Œ์‹์„ ๋†“์น  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ) ์ด์— ๋ฐ˜๋Œ€ํ•˜๊ณ  ๋Œ€์‹  ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ธ๋ผ์ธ ์…ธ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
ANSIBLE_DEPRECATION_WARNINGS=False ansible-inventory --host=localhost

๊ทธ๋Ÿฌ๋‚˜ ์ธ๋ฒคํ† ๋ฆฌ ํŒŒ์‹ฑ [WARNING] ์€ ์‚ฌ๋ผ์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒฝ๊ณ ๋ฅผ ๋„๋Š” ํŠน์ • ๊ตฌ์„ฑ์ด๋‚˜ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋Š” ์—†์ง€๋งŒ(์•„์ง?), ์ •๋ง ๋ฒ„๊ทธ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๋ชจ๋“  stderr์„ /dev/null ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์—ฌ๊ธฐ์— "๋ชจ๋ฒ” ์‚ฌ๋ก€" ์ฃผ์˜ ์‚ฌํ•ญ ์‚ฝ์ž…).

2>/dev/null ansible-inventory --host=localhost

์ด๊ฒƒ์ด ๋ˆ„๊ตฐ๊ฐ€๋ฅผ ๋•๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

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

์ด์™€ ๊ฐ™์€ ์ ‘๊ทผ ๋ฐฉ์‹์€ ๋ถˆ์™„์ „ํ•œ ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€๋ฅผ ๊ฐœ์„ ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ถ”๊ฐ€ ์ž‘์—…์„ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”์‹œ์ง€๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ๋ช‡ ๊ฐ€์ง€ ๋ฒ„์ „์œผ๋กœ ๋ฐฑํฌํŠธํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ถ”์‹ . ์ง€์› ์ค‘๋‹จ ๊ฒฝ๊ณ ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ์€ ๋ˆ„๊ตฌ์—๊ฒŒ๋„ ๊ถŒ์žฅํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ํ”„๋กœ์ ํŠธ๊ฐ€ ์ด๋ฏธ ๊ถ๊ทน์ ์ธ ์šด๋ช…์— ์ง๋ฉดํ•œ ๊ฒฝ์šฐ์—๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ;)

์ด ๊ฒฝ๊ณ ๊ฐ€ ํ‘œ์‹œ๋˜๊ธฐ ์‹œ์ž‘ํ–ˆ์ง€๋งŒ ํฌํŒ… ๊ฐ€์ด๋“œ์—์„œ ์ฐธ์กฐ๋ฅผ ์ฐพ์ง€ ๋ชปํ–ˆ๊ณ  ์ˆ˜์ • ๋ฐฉ๋ฒ•์ด๋‚˜ ๋‚ด์šฉ์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ์ฐพ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚ด ๊ฒฝ๊ณ ์˜ ๋Œ€๋ถ€๋ถ„์€ instance_id๊ฐ€ - (์˜ˆ: i-033f62b586143dff7 ) ๋ฐ ์ง€์—ญ(์˜ˆ: eu-central-1c )์„ ์‚ฌ์šฉํ•œ ec2.py์—์„œ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ ์ด๊ฒƒ์— ๋Œ€ํ•œ ์‹ค์ œ ์ˆ˜์ •

๋งˆ์ง€๋ง‰์œผ๋กœ, ์ด๊ฒƒ์€ ๋‚ด๊ฐ€ when: ansible_hostname in groups['varnish'] ๋ฅผ ์‚ฌ์šฉํ–ˆ๊ณ  ansible_hostname ๊ฐ€ varnish-eu-central-1c-001 ํ”Œ๋ ˆ์ด๋ถ ์ค‘ ์ผ๋ถ€๋ฅผ ๊นจ๋œจ๋ ธ์Šต๋‹ˆ๋‹ค.
๊ณผ๊ฑฐ์—๋Š” ์ด๊ฒƒ์ด ์ž˜ ์ž‘๋™ํ–ˆ์ง€๋งŒ ์ง€๊ธˆ์€ inventory_hostname ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ varnish_eu_central_1c_001 ๋ฅผ ์–ป๊ณ  groups['varnish'] ๋Œ€ ๋งค์น˜๋ฅผ ์–ป์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ inventory_hostname ๋ฐ groups[] ๊ฐ€ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ํฌํŒ… ๊ฐ€์ด๋“œ์˜ ๊ฒฝ๊ณ ๊ฐ€ ์ตœ์†Œํ•œ ๊ธด๊ธ‰ํ•˜๊ฒŒ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

EC2 ๋™์  ์ธ๋ฒคํ† ๋ฆฌ ์Šคํฌ๋ฆฝํŠธ์— ์˜ํ•ด ์ƒ์„ฑ๋˜๋Š” ๊ฒฝ๊ณ ์— ๋Œ€ํ•œ ๋ฌธ์„ ์—์ฝ”ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. instance_id( group_by_instance_id = False )๋ณ„๋กœ ํ˜ธ์ŠคํŠธ ๊ทธ๋ฃนํ™”๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ec2.ini ๊ตฌ์„ฑ ์„ค์ •์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค. ๋กœ์ปฌ ์ธ๋ฒคํ† ๋ฆฌ ์บ์‹œ๋ฅผ ์ง€์› ์Šต๋‹ˆ๋‹ค.

ํŠนํžˆ EC2 ๋™์  ์ธ๋ฒคํ† ๋ฆฌ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์ด๋Ÿฌํ•œ ์ž˜๋ชป๋œ ๋ฌธ์ž๋Š” (2019-06-04 ๊ธฐ์ค€) ๋‹ค์Œ์—์„œ ์ƒ์ˆ˜ INVALID_VARIABLE_NAMES ๋กœ ์ •์˜๋ฉ๋‹ˆ๋‹ค.
https://github.com/ansible/ansible/blob/devel/lib/ansible/constants.py#L119
'^[\d\W]|[^\w]' ,
์ฆ‰: any leading non-alpha character OR any character other than alpha-numeric and underscore .
(๋งž์•˜์œผ๋ฉด ์ข‹๊ฒ ๋‹ค)

๋‚˜์—๊ฒŒ ์ •ํ™•ํ•œ ์†Œ๋ฆฌ. ํ•ด๋‹น ์ •๋ณด์™€ ํ•จ๊ป˜ ๋ฌธ์„œ PR์„ ์ œ์ถœํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ ์ค‘๋‹จ ๊ฒฝ๊ณ ๊ฐ€ ์งœ์ฆ๋‚˜๋ฉด ansible- ๋ช…๋ น ๋˜๋Š” ansible ์ž„์‹œ ๋ช…๋ น์— ๋Œ€ํ•ด ๋™์ผํ•œ [defaults] deprecation_warnings = False ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์˜๊ตฌ์ ์œผ๋กœ ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค [defaults] ์„น์…˜ ansible.cfg , ํ•˜์ง€๋งŒ (์ค‘์š”ํ•œ ์†Œ์‹์„ ๋†“์น  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ) ์ด์— ๋ฐ˜๋Œ€ํ•˜๊ณ  ๋Œ€์‹  ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ธ๋ผ์ธ ์…ธ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
ANSIBLE_DEPRECATION_WARNINGS=False ansible-inventory --host=localhost

๊ทธ๋Ÿฌ๋‚˜ ์ธ๋ฒคํ† ๋ฆฌ ๊ตฌ๋ฌธ ๋ถ„์„ [WARNING] ์€ ์‚ฌ๋ผ์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒฝ๊ณ ๋ฅผ ๋„๋Š” ํŠน์ • ์„ค์ •์ด๋‚˜ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋Š” ์—†์ง€๋งŒ(์•„์ง?), ์ •๋ง ๋ฒ„๊ทธ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๋ชจ๋“  stderr์„ /dev/null ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์—ฌ๊ธฐ์— "๋ชจ๋ฒ” ์‚ฌ๋ก€" ์ฃผ์˜ ์‚ฌํ•ญ ์‚ฝ์ž…).

๋ฌธ์„œํ™”๋˜์ง€ ์•Š์€ ignore ์˜ต์…˜์ด ์ด ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ๋ฌธ์„œ PR: https://github.com/ansible/ansible/pull/57318

2.8.2๋ถ€ํ„ฐ ์„ ํƒ ํ•ญ๋ชฉ์„ ๋ช…์‹œ์ ์œผ๋กœ ์„ค์ •ํ•˜๋ฉด ์ด ์‚ฌ์šฉ ์ค‘๋‹จ ๊ฒฝ๊ณ ๊ฐ€ ์ง€์›Œ์ง‘๋‹ˆ๋‹ค.

๊ฐ€๋Šฅํ•œ ๊ฐœ๋ฐœ ํŒ€์€ ์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ ๊ฒฐ์ •์— ๋Œ€ํ•ด ์–ด๋””์—์„œ ๋…ผ์˜ํ•ฉ๋‹ˆ๊นŒ? ์šฐ๋ฆฌ ์‚ฌ์šฉ์ž๊ฐ€ ์ด์— ๋Œ€ํ•œ ์ถ”๋ก ์„ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ์‹ค์šฉ์ ์ธ ์ถ”๋ก ์ด ์•„๋‹ˆ๋ผ ์ˆœ์ˆ˜ํ•œ "ํŒŒ์ด์ฌ ์Šคํƒ€์ผ" ์ถ”๋ก ์ด๋ผ๋ฉด ์žฌ๊ณ ํ•ด ๋ณผ ๊ฐ€์น˜๊ฐ€ ์žˆ์ง€ ์•Š์„๊นŒ์š”? ๊ทธ๋ฃน ์ด๋ฆ„์˜ ๋Œ€์‹œ๊ฐ€ ํ–ฅํ›„ ๋ฆด๋ฆฌ์Šค์—์„œ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค๋ฉด ๊ทธ๋ฃน ์ด๋ฆ„๋ณด๋‹ค ๊ตฌํ˜„์— ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚˜์—๊ฒŒ ์ด๊ฒƒ์€ ์ œ๋Œ€๋กœ ์ƒ๊ฐํ•œ ๊ฒƒ๋ณด๋‹ค ์™ธ๊ด€์ƒ์˜ ๋ณ€ํ™”์ฒ˜๋Ÿผ ๋“ค๋ฆฝ๋‹ˆ๋‹ค.

๊ทธ๋ฃน๋ช…์€ ๋ณ€์ˆ˜๋ช…์ด ์•„๋‹ˆ๋ผ ๊ทธ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. ํ•˜์ดํ”ˆ/๋Œ€์‹œ๋Š” ๋ฌธ์ž์ผ ๋ฟ์ด๋ฉฐ ์ด๋ฆ„ ์ง€์ • ๊ทœ์น™์—์„œ ์ •๋ณด๋ฅผ ๊ทธ๋ฃนํ™”ํ•˜๋Š” ๋งค์šฐ ์ธ๊ธฐ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ๋Š๋‚Œํ‘œ๋‚˜ ๋ณ„๊ณผ ๋น„๊ตํ•˜์—ฌ ๊ทนํ•œ์ ˆ์— ํŠน๋ณ„ํ•œ ์˜๋ฏธ๋Š” ์—†๋‹ค.

์ˆ˜์ฒœ ๊ฐœ์˜ ์‚ฌ์ดํŠธ๊ฐ€ ์ธ๋ฒคํ† ๋ฆฌ์˜ ๊ทธ๋ฃน ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ชจ๋“  ํ”Œ๋ ˆ์ด๋ถ๊ณผ ์ž์ฒด ๊ฐœ๋ฐœํ•œ ์—ญํ• ์„ ๊ฒ€ํ† ํ•˜๊ณ  ๋ชจ๋‘ ๋‹ค์‹œ ํ…Œ์ŠคํŠธํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ฌธ์ œ๋ฅผ ์™„ํ™”ํ•˜๋Š” ๋ฐ ๋“œ๋Š” ๋น„์šฉ์€ ์–ด๋งˆ์–ด๋งˆํ•ฉ๋‹ˆ๋‹ค.

"๋†๋ถ€"๊ฐ€ ์ž์‹ ์˜ ๋ชฉ์†Œ๋ฆฌ๋ฅผ ๋“ค์„ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค๋ฉด ์ œ ์˜๊ฒฌ์„ ์ข€ ๋” ๋“ค์–ด๋ณด๊ณ  ์ด ์•„์ด๋””์–ด๊ฐ€ ์–ด๋–ป๊ฒŒ ๋‚˜์˜ค๊ฒŒ ๋˜์—ˆ๋Š”์ง€ ์ดํ•ดํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์‚ฌ์šฉ์ž๋Š” ์‚ฌ์šฉํ•˜๋ ค๊ณ ํ•˜๋Š” ๋“ฑ์˜ ์‹ค์ˆ˜๋ฅผํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€ํ™”๊ฐ€ ansible์— ๋งŒ๋“ค์–ด์ง„ ๊ฒƒ์œผ๋กœ ์•Œ๊ณ  ์™”์–ด์š” groups.group-name ๋ณด๋‹ค๋Š” groups['group-name'] . AIUI, ์ˆœ์ „ํžˆ ์ง€์› ๋ฌธ์ œ๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. (์ €๋Š” ๊ฐœ์ธ์ ์œผ๋กœ ๋ณ€๊ฒฝ์— ๋ฐ˜๋Œ€ํ•ฉ๋‹ˆ๋‹ค.)

์˜ค๋ž˜๋œ ํ–‰๋™์€ ์‚ฌ๋ผ์ง€์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด์ „ ๋™์ž‘์„ ๋ช…์‹œ์ ์œผ๋กœ ์„ ํƒํ•˜์ง€ ์•Š๊ณ ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์Šฌํ”„๋‹ค.

๋‚ด ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” Vagrant ํŒŒ์ผ์— "ansible-inventory" ๋ช…๋ น์„ ์ž„๋ฒ ๋”ฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์€ ๋ฌผ๊ฑด์„ ansible.cfg์— ๋„ฃ๋Š” ๊ฒƒ์ด ๋ฌด๋ก€ํ•˜๊ณ  ์žฌ์ •์˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ๋ช…๋ น์ค„ ์˜ต์…˜์œผ๋กœ ๋™์ž‘(ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์•„๋‹˜).

์ผ๋ฐ˜์ ์œผ๋กœ ์ด์™€ ๊ฐ™์€ ๋ณ€ํ™”๋Š” ์ข‹์€ ์˜๋„์—์„œ ๋น„๋กฏ๋˜์ง€๋งŒ ํ•ญ์ƒ ๋งˆ์Œ์†์— ์žˆ๋Š” ๊ฒฐ๊ณผ๋กœ ์ด์–ด์ง€๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

์ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•œ ๋‚ด ๋ฌธ์ œ๋Š” ๊ทธ๋ฃน ์ด๋ฆ„์ด ์ด์ œ ๋‹ค์†Œ "ํŠน์ˆ˜"ํ•˜๊ฒŒ ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์—๋Š” ๋Œ€์‹œ๊ฐ€ ํ—ˆ์šฉ๋˜์ง€๋งŒ ๊ทธ๋ฃน ์ด๋ฆ„์—๋Š” ํ—ˆ์šฉ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ hosts: ์„น์…˜์˜ ํ”Œ๋ ˆ์ด๋ถ ์‹œ์ž‘ ๋ถ€๋ถ„์„ ๊ณ ๋ คํ•˜๋ฉด ์•ฝ๊ฐ„ ์ด์ƒํ•ฉ๋‹ˆ๋‹ค. ํ˜ธ์ŠคํŠธ ๋ฐ/๋˜๋Š” ๊ทธ๋ฃน ์ด๋ฆ„์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@sivel ์ด ์ œ๊ณตํ•œ ์„ค๋ช…์ด ์ด ๋ณ€๊ฒฝ์˜ ์œ ์ผํ•œ ์ด์œ ์ž…๋‹ˆ๊นŒ? ๊ทธ๋Ÿผ hosvars['foo-host'] ์€? ์•„๋ฌด๋„ ์ธ๋ฒคํ† ๋ฆฌ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์—์„œ ๋Œ€์‹œ๋ฅผ ์ž˜๋ชป๋œ ๋ฌธ์ž๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜์ง€ ์•Š๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค...
hostvars ์™ธ์—๋„ "์  ํ‘œ๊ธฐ๋ฒ•"์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๋‹ค๋ฅธ ์˜ˆ๊ฐ€ ๋งŽ์ด ์žˆ์œผ๋ฏ€๋กœ ์–ธ์ œ ์–ด๋–ค ํ˜•์‹์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๋ฃน ์ด๋ฆ„์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ๋‹ค์†Œ ์ž„์˜์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

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

๊ทธ๋ฃน ์ด๋ฆ„์˜ ๋Œ€์‹œ๋Š” ๋ชจ๋‘ ์œ ํšจํ•œ INI์™€ ์œ ํšจํ•œ YAML์ž…๋‹ˆ๋‹ค. ์ด๋ฆ„์„ Python ๋ณ€์ˆ˜ ์ด๋ฆ„์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž๊ฐ€ ๋ชจ๋“  ๊ทธ๋ฃน์˜ ์ด๋ฆ„์„ ๋ฐ”๊ฟ”์•ผ ํ•˜๋Š” ์ด์œ ๋ฅผ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ๊ทธ๋ฃน ์ด๋ฆ„์—์„œ - ๋ฅผ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ๋กœ ๊ฒฐ์ •ํ•œ ์ด ๊ฒฐ์ •์˜ ๊ทผ๊ฑฐ์— ๋Œ€ํ•ด ์˜๋ฌธ์„ ์ œ๊ธฐํ•ฉ๋‹ˆ๋‹ค. ๋™์  ์ธ๋ฒคํ† ๋ฆฌ keyed_groups ์—์„œ ๋Œ€์‹œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์€ ์ด๋ฏธ ์ถฉ๋ถ„ํžˆ ์„ฑ๊ฐ€์‹  ์ผ์ด์ง€๋งŒ ๊ฐ€์ƒ์˜ ๊ตฌ๋ฌธ ๊ด€๋ จ ์ง€์› ๋ฌธ์ œ๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ์ธ๋ฒคํ† ๋ฆฌ ํŒŒ์ผ ๋ฐ ansible-playbook -l ... ๋ช…๋ น์— ์žˆ๋Š” ๋ชจ๋“  ๊ทธ๋ฃน์˜ ์ด๋ฆ„์„ ๋ฐ”๊ฟ”์•ผ ํ•˜๋Š” ๊ฒƒ์€ ๊ณ ํ†ต์Šค๋Ÿฌ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

FWIW์—๋Š” foo_server ์™€ ๊ฐ™์€ ์—ญํ•  ๊ทธ๋ฃน๊ณผ foo-dev ๋˜๋Š” foo-test ์™€ ๊ฐ™์€ ํ˜ธ์ŠคํŠธ ๊ทธ๋ฃน์˜ ์ด๋ฆ„ ์ง€์ • ๊ทœ์น™์ด ์žˆ์Šต๋‹ˆ๋‹ค. Ansible ์‚ฌ์šฉ์˜ ๊ฑฐ์˜ 100%๋Š” ansible-playbook -l foo-dev ์™€ ๊ฐ™์€ ๋ช…๋ น์ด๋ฏ€๋กœ ์ด ๋ณ€๊ฒฝ์€ ๊ทผ์œก ๋ฉ”๋ชจ๋ฆฌ์™€ ์‹ธ์šฐ๊ธฐ ์œ„ํ•ด ๋งŽ์€ ๋…ธ๋ ฅ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์— ๋˜ ๋‹ค๋ฅธ me 2๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ์ด ํŠน์ • ๊ฒฐ์ •์„ ๋’ค์ง‘์„ ์ˆ˜ ์žˆ์„์ง€ ํ™•์‹ ํ•  ์ˆ˜ ์—†์ง€๋งŒ, ์ €๋Š” ๊ทธ๋ฃน ์ด๋ฆ„์ด ์œ ํšจํ•œ ํŒŒ์ด์ฌ ์‹๋ณ„์ž์—ฌ์•ผ ํ•œ๋‹ค๋Š” ์š”๊ตฌ ์‚ฌํ•ญ์— ๋Œ€ํ•ด ๋ฐ˜๋Œ€ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์˜ ์˜๊ฒฌ์— ๋™์˜ํ•˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฃน ์ด๋ฆ„์—์„œ ๋ฌธ์ž, ์ˆซ์ž ๋ฐ ๋ฐ‘์ค„๊ณผ ํ•จ๊ป˜ ํ•˜์ดํ”ˆ์„ ์ง€์›ํ•˜์‹ญ์‹œ์˜ค(ํ•˜์ง€๋งŒ ์ ์— ๋ฐ˜๋Œ€ํ•˜๋Š” ๊ฒƒ๋„ ์—†์Šต๋‹ˆ๋‹ค)!

์šฐ๋ฆฌ๋Š” ๊ทธ๋ฃน ์ด๋ฆ„์— ํ•˜์ดํ”ˆ์„ ๋งŽ์ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ทธ๋ฃนํ™” ์ด๋ฆ„์˜ ๊ฒฝ์šฐ ๋‘˜ ๋‹ค:

[server-3x]
server-31.example.com
server-32.example.com
server-33.example.com

๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ธ๋ฒคํ† ๋ฆฌ๋ฅผ _abuse_ํ•˜์—ฌ ํ˜ธ์ŠคํŠธ ๋ชฉ๋ก์„ ํ•œ ๊ณณ์— ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค(๋‹ค๋ฅธ var ํŒŒ์ผ์— ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์„ ์œ ์ง€ํ•˜๋Š” ๋Œ€์‹ ).

[prometheus_node-exporter_cluster1:children]
server-3x
server-5x
````
We use such groups in templates like this:

{% set _hostgroup = [_service, _job, _cluster]|join('_') %}
{% set _hostlist = ๊ทธ๋ฃน[_hostgroup]|d([])|์ •๋ ฌ %}
{% if _hostlist %}
{ _hostlist %}์˜ ํ˜ธ์ŠคํŠธ์— ๋Œ€ํ•œ %
...
```

์šฐ๋ฆฌ๋Š” ๊ทธ๋ฃน๊ณผ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„ ์‚ฌ์ด์— ๊ฐ€์‹œ์ ์ธ ์ฐจ์ด๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์ ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

TRANSFORM_INVALID_GROUP_CHARS INVALID ๋ผ๋Š” ๋‹จ์–ด๋Š” ์žฅ๊ธฐ์ ์œผ๋กœ ๊ณ„์† ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ํ™•์‹ ์„ ์ฃผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ ค๋ฉด _UNSAFE_ ๋ฌธ์ž๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๊ฒฝ๊ณ ๋ฅผ ํ‘œ์‹œํ•˜๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ์ด ๊ฒฝ๊ณ ๋ฅผ ๋ณผ์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฌํ•œ ๋ฌธ์ž๋ฅผ ํ—ˆ์šฉํ•˜๊ฑฐ๋‚˜ ๋Œ€์ฒดํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค!

์‚ฌ์šฉ์ž๋Š” a) ์ด ๊ฒฝ๊ณ ๋ฅผ ์Œ์†Œ๊ฑฐํ•˜๊ณ (ALLOW_UNSAFE_GROUP_CHARS์™€ ๊ฐ™์€ ํ‚ค์›Œ๋“œ ์‚ฌ์šฉ), b) ๊ทธ๋ฃน ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜(๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ) c) ํ•ด๋‹น ๊ฒฝ๊ณ ๋ฅผ ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ๋Œ€๋ถ€๋ถ„์€ ์ฒ˜์Œ ๋‘ ๊ฐ€์ง€ ์˜ต์…˜ ์ค‘์—์„œ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

๋Œ€์‹œ "-"๋Š” ๊ฑฐ์˜ ๋ชจ๋“  ์œ ํ˜•์˜ ์ปดํ“จํ„ฐ ๊ด€๋ จ ๋„๊ตฌ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ํ‘œ์ค€ ๊ตฌ๋ถ„ ๋ฌธ์ž์ด๊ณ  ํ•˜๋‚˜์˜ "์ข…๊ต"๋ฅผ ๋”ฐ๋ฅด๋ ค๋Š” ์‹œ๋„๊ฐ€ ์ œํ•œ์ ์ธ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์ด ๋ฌด์˜๋ฏธํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค!!!

์˜ค๋ž˜๋œ ํ–‰๋™์€ ์‚ฌ๋ผ์ง€์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด์ „ ๋™์ž‘์„ ๋ช…์‹œ์ ์œผ๋กœ ์„ ํƒํ•˜์ง€ ์•Š๊ณ ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฃน ์ด๋ฆ„์—์„œ ๋Œ€์‹œ๋ฅผ ์‹ค์ œ๋กœ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ด ์ง€์› ์ค‘๋‹จ์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ƒˆ๋กœ์šด ์‚ฌ์šฉ์ž ๊ด€์ ์—์„œ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์‚ฌ์šฉ ์ค‘๋‹จ ๊ฒฝ๊ณ ๋Š” TRANSFORM_INVALID_GROUP_CHARS=never ์˜ต์…˜์ด Ansible 2.10์—์„œ ์‚ฌ๋ผ์งˆ ๊ฒƒ์ž„์„ ์˜๋ฏธํ•˜๋ฏ€๋กœ Ansible 2.10์ด ์ถœ์‹œ๋˜๊ธฐ ์ „์— ๋ชจ๋“  ๊ทธ๋ฃน์˜ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

[DEPRECATION WARNING]: TRANSFORM_INVALID_GROUP_CHARS ์„ค์ •์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ทธ๋ฃน ์ด๋ฆ„์— ์ž˜๋ชป๋œ ๋ฌธ์ž๋ฅผ ํ—ˆ์šฉํ•˜๋„๋ก ์„ค์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์„ค์ •์€ ๋ณ€๊ฒฝ๋˜์ง€๋งŒ ์‚ฌ์šฉ ์ค‘๋‹จ ์‹œ ์‚ฌ์šฉ์ž๊ฐ€ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ ๋ฒ„์ „ 2.10์—์„œ ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ ์ค‘๋‹จ ๊ฒฝ๊ณ ๋Š” ansible.cfg์—์„œ deprecation_warnings=False๋ฅผ ์„ค์ •ํ•˜์—ฌ ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ, ํ”Œ๋Ÿฌ๊ทธ๋ฅผ ์ด์šฉํ•œ ๋™์  ์ธ๋ฒคํ† ๋ฆฌ keyed_groups ํ•˜๋”๋ผ๋„ ํž˜ ๊ทธ๋ฃน ์ด๋ฆ„ ๋ณ€ํ™˜ TRANSFORM_INVALID_GROUP_CHARS=never ์„ค์ •๋œ๋‹ค https://github.com/ansible/ansible/blob/db0fe4b1884e6bb9c25e970c7585abb7edd9d664/lib/ansible/ ํ”Œ๋Ÿฌ๊ทธ์ธ/์ธ๋ฒคํ† ๋ฆฌ/__init__.py#L45 https://github.com/ansible/ansible/blob/db0fe4b1884e6bb9c25e970c7585abb7edd9d664/lib/ansible/inventory/group.py#L39

์›ํ•˜๋Š” ํ–‰๋™

  • TRANSFORM_INVALID_GROUP_CHARS=never ์‚ฌ์šฉ์€ ์•ž์œผ๋กœ๋„ ๊ณ„์† ์ง€์›๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    ํŽธ์ง‘: ์ฝ”๋“œ๋ฅผ ์ฝ์œผ๋ฉด TRANSFORM_INVALID_GROUP_CHARS ๋ฅผ ์œ ์ง€ํ•˜์ง€๋งŒ 2.10์—์„œ ๊ธฐ๋ณธ๊ฐ’์„ always ๋กœ ๋ณ€๊ฒฝํ•˜๋ ค๋Š” ์˜๋„์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์‚ฌ์šฉ ์ค‘๋‹จ ๊ฒฝ๊ณ ๊ฐ€ ์ž˜ ํ‘œํ˜„๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค: https:/ /github.com/ansible/ansible/blob/db0fe4b1884e6bb9c25e970c7585abb7edd9d664/lib/ansible/inventory/group.py#L50

  • TRANSFORM_INVALID_GROUP_CHARS=never ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‚ฌ์šฉ ์ค‘๋‹จ ๊ฒฝ๊ณ ๊ฐ€ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

    ์ด๊ฒƒ์€ ๋ฌธ์„œํ™”๋˜์ง€ ์•Š์€ ignore ์˜ต์…˜์œผ๋กœ ์ด๋ฏธ ๊ฐ€๋Šฅํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค: https://github.com/ansible/ansible/pull/57318

  • TRANSFORM_INVALID_GROUP_CHARS=never ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋™์  ์ธ๋ฒคํ† ๋ฆฌ keyed_groups ์—์„œ๋„ ๋Œ€์‹œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ํŽธ์ง‘: ์ด๊ฒƒ์€ ์ƒ์„ฑ๋œ ๊ทธ๋ฃน ์ด๋ฆ„์„ ๋ฌด์กฐ๊ฑด ๋ณ€ํ™˜ํ•œ Ansible 2.7์— ๋Œ€ํ•œ ์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ์„ ๋ถ„๋ช…ํžˆ ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ๋ช…์‹œ์ ์ธ ์˜ตํŠธ์•„์›ƒ์ด ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ณ€์ˆ˜ ์ด๋ฆ„๊ณผ ๊ด€๋ จํ•˜์—ฌ ์‚ฌ์ „ ํ‚ค ํ˜•์‹์ด ๋ณ€์ˆ˜ ์ด๋ฆ„ ๊ตฌ๋ฌธ๊ณผ ๋™์ผํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋ฅผ ์ดํ•ดํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๊นŒ? AFAIK์—๋Š” ์ด๋Ÿฌํ•œ ์ œํ•œ์ด ์žˆ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. Python์—์„œ๋Š” ๊ฑฐ์˜ ๋ชจ๋“  ๋ฌธ์ž์—ด์„ ์‚ฌ์ „ ํ‚ค๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

"๊ทธ๋ฃน"์€ ์‚ฌ์ „ ์œ ํ˜• ๋ณ€์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ฉฐ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„๊ณผ ๊ทธ๋ฃน ์ด๋ฆ„์€ ๋ชจ๋‘ Ansible์˜ ์ผ๋ฐ˜ ์‚ฌ์ „ ํ‚ค์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ๋“ค์€ ์†์„ฑ์ด๋‚˜ ๋ณ€์ˆ˜ ์ž์ฒด๊ฐ€ ์•„๋‹ˆ๊ฑฐ๋‚˜ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š” groups["foo-group"]๋ณด๋‹ค groups.foo-group ๊ตฌ๋ฌธ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. g = "foo-group"์ด๋ฉด groups.g ๋˜๋Š” groups[g]๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๊นŒ?

ansible.cfg [default] force_valid_group_names = ignore ๋˜๋Š” export ANSIBLE_TRANSFORM_INVALID_GROUP_CHARS=ignore ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Ansible 2.8.1์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ์‚ฌ์šฉ ์ค‘๋‹จ ๊ฒฝ๊ณ ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

$ ANSIBLE_TRANSFORM_INVALID_GROUP_CHARS=ignore ANSIBLE_VAULT_PASSWORD_FILE=vault-password.secret ansible-playbook --diff -i xyz-dev.ini xyz-infra-install.yml -l xyz-dev --check
[DEPRECATION WARNING]: The TRANSFORM_INVALID_GROUP_CHARS settings is set to allow bad characters in group names by default, this will change, but still be user configurable on deprecation. This feature will be removed in version 2.10. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.

์œ ํšจํ•œ choices ์•„์ง ๋‚˜์—ด๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๊นŒ? https://github.com/ansible/ansible/blob/v2.8.1/lib/ansible/config/base.yml#L1501

ansible.cfg [default] force_valid_group_names = ignore ๋˜๋Š” export ANSIBLE_TRANSFORM_INVALID_GROUP_CHARS=ignore ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Ansible 2.8.1์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ์‚ฌ์šฉ ์ค‘๋‹จ ๊ฒฝ๊ณ ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

$ ANSIBLE_TRANSFORM_INVALID_GROUP_CHARS=ignore ANSIBLE_VAULT_PASSWORD_FILE=vault-password.secret ansible-playbook --diff -i xyz-dev.ini xyz-infra-install.yml -l xyz-dev --check
[DEPRECATION WARNING]: The TRANSFORM_INVALID_GROUP_CHARS settings is set to allow bad characters in group names by default, this will change, but still be user configurable on deprecation. This feature will be removed in version 2.10. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.

์œ ํšจํ•œ choices ์•„์ง ๋‚˜์—ด๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๊นŒ? https://github.com/ansible/ansible/blob/v2.8.1/lib/ansible/config/base.yml#L1501

์ด๊ฒƒ์€ ๊ณง ๋‚˜์˜ฌ ๋ฒ„์ „ 2.8.2์—์„œ ์ˆ˜์ •๋œ ๋ฒ„๊ทธ์ž…๋‹ˆ๋‹ค. export ANSIBLE_TRANSFORM_INVALID_GROUP_CHARS=ignore ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ชจ๋“  ๊ฒฝ๊ณ ๋ฅผ ์Šค์ฟผ์‹œํ•ฉ๋‹ˆ๋‹ค.

(๋ฌด์‹œ ์˜ต์…˜์€ ์•„์ง ๋ฌธ์„œํ™”๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค: https://github.com/ansible/ansible/pull/57318 )

์ด๊ฒƒ์€ ๋ชจ๋‘๋ฅผ ๊นจ๋œจ๋ฆด ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ž˜๋ชป๋œ ๊ฒฐ์ •์ž…๋‹ˆ๋‹ค.

์ด์— ๋Œ€ํ•ด ์œ ์ง€ ๊ด€๋ฆฌ์ž์™€ ์ถ”๋ก ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์•„๋งˆ๋„ ์œ ์ง€ ๊ด€๋ฆฌ์ž ์ค‘ ํ•œ ๋ช…์ด ์ง€์› ๋ฌธ์ œ์ด๊ฑฐ๋‚˜ ์‹ค์ œ๋กœ ์ค‘๋‹จ๋˜๋Š” python ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์—ฌ๊ธฐ์—์„œ ์•ฝ๊ฐ„ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š” ์ด๊ฒƒ์„ ๋งค์šฐ ์„ฑ๊ฐ€์‹  ๊ฒƒ์œผ๋กœ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ค์ œ๋กœ ๋ฌธ์ œ๋ฅผ ํŒŒ์•…ํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ๋„ ์„ฑ๊ฐ€์‹  ์ผ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋ฌธ์ œ๋ฅผ ํŒŒ์•…ํ•˜๊ธฐ ์œ„ํ•ด ๊ฑฐ์˜ ansible-playbook "insert yaml file here" > output.txt ๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—์„œ ๋Œ€๋ถ€๋ถ„์˜ ํฌ์Šคํ„ฐ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฃน ์ด๋ฆ„์—์„œ ๋Œ€์‹œ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์€ ์ œ๋Œ€๋กœ ์ƒ๊ฐํ•˜์ง€ ๋ชปํ•œ ๊ฒฐ์ •์ด๋‚˜ ์˜๋ฏธ๊ฐ€ ์•„๋‹Œ ๊ตฌํ˜„์— ๋”ฐ๋ฅธ ๊ฒฐ์ •์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

์ด ๋ณ€ํ™”๋Š” ๋‚˜์—๊ฒŒ ์ „ํ˜€ ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. Ansible ๊ฐœ๋ฐœ์ž๋Š” ๊ทธ๋ฃน ์•ก์„ธ์Šค๋ฅผ ์œ„ํ•œ ์ถ”๊ฐ€ ๊ตฌ๋ฌธ(๋ˆ„๋ฝ๋˜์ง€ ์•Š์€ ๊ตฌ๋ฌธ์ด ์•„๋‹˜)์„ ์›ํ•œ๋‹ค๋Š” ์ด์œ ๋กœ ์ˆ˜์ฒœ ๋ช…์˜ ์‚ฌ์šฉ์ž๊ฐ€ ๊ทธ๋ฃน ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•˜๋„๋ก ๊ฐ•์ œํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๊นŒ? ๋†๋‹ด์ด์•ผ?

์šฐ๋ฆฌ๋Š” ํฐ ์„ค์ •์—์„œ ๋Œ€์‹œ์™€ ์ ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
์šฐ๋ฆฌ์˜ ํŒจํ„ด์€ product-name.environment.datacenter ์ด๋ฉฐ ๋งค์šฐ ๋ช…ํ™•ํ•ฉ๋‹ˆ๋‹ค.
- ๋ฐ . ๋ฅผ ๋–จ์–ด๋œจ๋ฆฌ๋ฉด ์ธ๋ฒคํ† ๋ฆฌ๋ฅผ ์™„์ „ํžˆ ์ฝ์„ ์ˆ˜ ์—†๊ฒŒ ๋˜๋ฏ€๋กœ ์ƒ์ƒํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋Œ€์‹œ๋ฅผ ํฌํ•จํ•˜๋Š”(๊ทธ๋ฆฌ๊ณ  ๊ณ„์† ํฌํ•จํ• ) ๊ทธ๋ฃน ์ด๋ฆ„์— ๋Œ€ํ•ด ๋กœ์ปฌ CMDB๋ฅผ ์ฟผ๋ฆฌํ•˜๋Š” ๊ฐ€๋Šฅํ•œ ์ธ๋ฒคํ† ๋ฆฌ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ฏธ๋ž˜์— ์œ ํšจํ•˜์ง€ ์•Š๋‹ค๋ฉด ๋งŽ์€ ๊ฒƒ์„ ๊นจ๋œจ๋ฆด ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ํฐ ์„ค์ •์—์„œ ๋Œ€์‹œ์™€ ์ ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
์šฐ๋ฆฌ์˜ ํŒจํ„ด์€ product-name.environment.datacenter ์ด๋ฉฐ ๋งค์šฐ ๋ช…ํ™•ํ•ฉ๋‹ˆ๋‹ค.
- ๋ฐ . ๋ฅผ ๋–จ์–ด๋œจ๋ฆฌ๋ฉด ์ธ๋ฒคํ† ๋ฆฌ๋ฅผ ์™„์ „ํžˆ ์ฝ์„ ์ˆ˜ ์—†๊ฒŒ ๋˜๋ฏ€๋กœ ์ƒ์ƒํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๊ณ„์ธต์  ๋ช…๋ช… ์ฒด๊ณ„์™€ ์œ ์‚ฌํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
๋ฐ‘์ค„๋กœ ๋˜๋Œ์•„๊ฐ€์•ผ ํ•˜๋Š” ๊ฒƒ์€ ์ ˆ๋Œ€์ ์ธ ๊ณตํฌ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ—ค. ์šฐ๋ฆฌ๋„ ๊ทธ ๋ฌธ์ œ์— ์ง๋ฉดํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฃน ์ด๋ฆ„์— ๋Œ€์‹œ๋ฅผ ์ง‘์ค‘์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์‚ฌ์ „์—์„œ ๋Œ€์‹œ ์‚ฌ์šฉ์œผ๋กœ ์ธํ•ด ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š”์ง€ ์„ค๋ช… ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๊ธฐ๊บผ์ด ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ฃผ๋กœ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๋งํ•œ ๊ฒƒ์„ ๋ฐ˜๋ณตํ•˜์ง€๋งŒ ๋ช‡ ๊ฐ€์ง€ ์˜๊ฒฌ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๊ตฌํ˜„๋˜๋ฉด ๋Œ€์‹œ๋ฅผ ํ—ˆ์šฉํ•˜๋Š” ํ”Œ๋ž˜๊ทธ๊ฐ€ ์œ ์ง€๋˜๊ณ  ์œ ์ง€๋˜์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. Python์ด ๋ฐ‘์ค„์„ ๊ธฐ๋Œ€ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•˜์ง€๋งŒ ๋Œ€์‹œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„๊ณผ ํ˜ธ์ŠคํŠธ ๊ทธ๋ฃน ์ด๋ฆ„์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ํ™˜๊ฒฝ์—์„œ๋Š” LDAP/Kerberos ๋””๋ ‰ํ† ๋ฆฌ์˜ ํ˜ธ์ŠคํŠธ ๋ฐ ํ˜ธ์ŠคํŠธ ๊ทธ๋ฃน์—์„œ ์ธ๋ฒคํ† ๋ฆฌ๋ฅผ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ํ˜ธ์ŠคํŠธ ๋ฐ ๊ทธ๋ฃน ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ๋ฐ”๋žŒ์งํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ์–ธ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค.

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

๊ทธ๋ž˜์„œ, ansible.cfg์— force_valid_group_names = false ๋ฅผ ๊ฐ„๋‹จํžˆ ์„ค์ •ํ•ฉ๋‹ˆ๊นŒ? d241794#diff-fd24ad93fbc32f454761746c1ac908f2๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๊ฒƒ์ด ๋งž๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Ansible 2.8.2์—์„œ ํ…Œ์ŠคํŠธํ•˜๋ฉด ์ด INI ์„ค์ •์ด ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด DEPRECATION WARNING๋งŒ ์ œ๊ฑฐ๋˜์ง€๋งŒ Ansible์ด ๋ถˆํ‰ํ•˜์ง€ ์•Š๊ณ  ๋Œ€์‹œ๊ฐ€ ์žˆ๋Š” ๊ทธ๋ฃน์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ์—†๋Š” ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค.

[DEPRECATION WARNING]: TRANSFORM_INVALID_GROUP_CHARS ์„ค์ •์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ทธ๋ฃน ์ด๋ฆ„์— ์ž˜๋ชป๋œ ๋ฌธ์ž๋ฅผ ํ—ˆ์šฉํ•˜๋„๋ก ์„ค์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์„ค์ •์€ ๋ณ€๊ฒฝ๋˜์ง€๋งŒ ์‚ฌ์šฉ ์ค‘๋‹จ ์‹œ ์‚ฌ์šฉ์ž๊ฐ€ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ ๋ฒ„์ „ 2.10์—์„œ ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. ์ฒœ์นญ
๊ฒฝ๊ณ ๋Š” ansible.cfg์—์„œ deprecation_warnings=False๋ฅผ ์„ค์ •ํ•˜์—ฌ ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
[๊ฒฝ๊ณ ]: ๊ทธ๋ฃน ์ด๋ฆ„์— ์ž˜๋ชป๋œ ๋ฌธ์ž๊ฐ€ ์žˆ์ง€๋งŒ ๋Œ€์ฒด๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์„ ๋ณด๋ ค๋ฉด -vvvv๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.

๊ทธ๋ฆฌ๊ณ sible.cfg์—์„œ "false" ๋กœ

[๊ฒฝ๊ณ ]: ๊ทธ๋ฃน ์ด๋ฆ„์—์„œ ์ž˜๋ชป๋œ ๋ฌธ์ž๊ฐ€ ๋ฐœ๊ฒฌ๋˜์–ด ์ž๋™์œผ๋กœ ๋Œ€์ฒด๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์„ ๋ณด๋ ค๋ฉด -vvvv๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.

ansible.cfg [default] force_valid_group_names = ignore ๋˜๋Š” export ANSIBLE_TRANSFORM_INVALID_GROUP_CHARS=ignore ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Ansible 2.8.1์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ์‚ฌ์šฉ ์ค‘๋‹จ ๊ฒฝ๊ณ ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

$ ANSIBLE_TRANSFORM_INVALID_GROUP_CHARS=ignore ANSIBLE_VAULT_PASSWORD_FILE=vault-password.secret ansible-playbook --diff -i xyz-dev.ini xyz-infra-install.yml -l xyz-dev --check
[DEPRECATION WARNING]: The TRANSFORM_INVALID_GROUP_CHARS settings is set to allow bad characters in group names by default, this will change, but still be user configurable on deprecation. This feature will be removed in version 2.10. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.

์œ ํšจํ•œ choices ์•„์ง ๋‚˜์—ด๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๊นŒ? https://github.com/ansible/ansible/blob/v2.8.1/lib/ansible/config/base.yml#L1501

์ด๊ฒƒ์€ ๊ณง ๋‚˜์˜ฌ ๋ฒ„์ „ 2.8.2์—์„œ ์ˆ˜์ •๋œ ๋ฒ„๊ทธ์ž…๋‹ˆ๋‹ค. export ANSIBLE_TRANSFORM_INVALID_GROUP_CHARS=ignore ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ชจ๋“  ๊ฒฝ๊ณ ๋ฅผ ์Šค์ฟผ์‹œํ•ฉ๋‹ˆ๋‹ค.

(๋ฌด์‹œ ์˜ต์…˜์€ ์•„์ง ๋ฌธ์„œํ™”๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค: #57318 )

๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ๋‹จ์ง€ ๊ฒฝ๊ณ ๋ฅผ ๋ถ€์ˆ˜๋Š” ๊ฒƒ์ž…๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ๊ทธ๋ฃน์—์„œ ๋Œ€์‹œ๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
์ด๊ฒƒ์€ ๋งค์šฐ ๋ช…ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์—ฌ๊ธฐ ๋ชจ๋“  ๋น„๋ฐฉ์ž๋“ค์˜ ์˜๊ฒฌ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

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

Ansible ๊ทธ๋ฃน ์ด๋ฆ„์€ ๊ทธ๋“ค์ด ๋‚˜ํƒ€๋‚ด๋Š” ์‹ค์ œ ๊ทธ๋ฃน์˜ ์ด๋ฆ„์„ ์กด์ค‘ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ๋ชจ๋“  ๋„๊ตฌ๊ฐ€ ํ˜ธ์ŠคํŠธ ์ง‘ํ•ฉ์„ my-backend-service ํ˜ธ์ถœํ•˜๋Š” ๊ฒฝ์šฐ ์™œ ์—ฐ์‚ฐ์ž๋Š” ํŒŒ์ด์ฌ์˜ ๋ช…๋ช… ๊ทœ์น™์„ ์ถฉ์กฑํ•˜๊ธฐ ์œ„ํ•ด ์ด๋ฅผ my_backend_service ๋กœ ๋ณ€ํ™˜ํ•ด์•ผ ํ• ๊นŒ์š”?

์˜ค๋Š˜์€ ์ •๋ง ์Šฌํ”ˆ ๋‚ ์ž…๋‹ˆ๋‹ค.. JR ๋™๋ฃŒ๊ฐ€ ์ €์—๊ฒŒ ์ด ๋น„์ถ”์ฒœ์„ ์ œ๊ธฐํ–ˆ์„ ๋•Œ ์ €๋Š” Ansible ํŒ€์ด ํ˜„์‹ค๊ณผ ๋™๋–จ์–ด์ ธ ๊ทธ๋ ‡๊ฒŒ ์ด๊ธฐ์ ์ธ ์„ ํƒ์„ ํ•  ์ˆ˜ ์—†์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” Ansible์ด ๋ฌด์—‡์„ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•ด ์ ˆ๋Œ€์ ์œผ๋กœ ์‚ฌ๋ž‘ํ•ฉ๋‹ˆ๋‹ค(Python์œผ๋กœ ์ž‘์„ฑ๋œ ๊ฒƒ๊ณผ ๊ด€๋ จ์ด ์—†๋Š” ์‚ฌ์šฉ์ž ๊ด€์ ์—์„œ) ์ตœ์ข… ์‚ฌ์šฉ์ž์—๊ฒŒ PEP ํ‘œ์ค€์„ ์ ์šฉํ•˜๋ ค๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ์ธํ•ด ํ•ต์‹ฌ Ansible ๊ฐœ๋ฐœ ํŒ€์˜ ํ•ฉ๋ฆฌ์ ์ธ ๊ฒฐ์ •. IBM์—์„œ ํ•ด๊ฒฐํ•ด์ฃผ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค..
๋˜๋Š”
์•„๋งˆ๋„ ์šฐ๋ฆฌ๊ฐ€ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ์ƒˆ๋กญ๊ณ  ๋ฐ˜์ง์ด๋Š” GO๊ฐ€ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ํ–‰๋™์€ ๋ถ„๋ช…ํžˆ ๋งค์šฐ ๋…ผ๋ž€์˜ ์—ฌ์ง€๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์ด ์™„๋ฃŒ๋œ ๊ฑฐ๋ž˜์ธ์ง€ ๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์ด ์–ด๋–ค ๊ฒฝ์šฐ์—๋„ ๊ตฌํ˜„๋  ๊ฒƒ์ธ์ง€ ์Šค์Šค๋กœ์—๊ฒŒ ๋ฌป๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด ๊ฒฐ์ • ๋’ค์— ์žˆ๋Š” ์‚ฌ๋žŒ๋“ค์˜ ์‘๋‹ต์— ๋Œ€ํ•ด ๋งค์šฐ ๊ฐ์‚ฌํ•˜๊ณ  "์ด๊ฒƒ์€ ํŒŒ์ด์ฌ ํ‘œ์ค€์ž…๋‹ˆ๋‹ค" ์ด์ƒ์˜ ์„ค๋ช…์„ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค.

์ด ํ–‰๋™์€ ๋ถ„๋ช…ํžˆ ๋งค์šฐ ๋…ผ๋ž€์˜ ์—ฌ์ง€๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์ด ์™„๋ฃŒ๋œ ๊ฑฐ๋ž˜์ธ์ง€ ๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์ด ์–ด๋–ค ๊ฒฝ์šฐ์—๋„ ๊ตฌํ˜„๋  ๊ฒƒ์ธ์ง€ ์Šค์Šค๋กœ์—๊ฒŒ ๋ฌป๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด ๊ฒฐ์ • ๋’ค์— ์žˆ๋Š” ์‚ฌ๋žŒ๋“ค์˜ ์‘๋‹ต์— ๋Œ€ํ•ด ๋งค์šฐ ๊ฐ์‚ฌํ•˜๊ณ  "์ด๊ฒƒ์€ ํŒŒ์ด์ฌ ํ‘œ์ค€์ž…๋‹ˆ๋‹ค" ์ด์ƒ์˜ ์„ค๋ช…์„ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค.

๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์ตœ๊ทผ์— "go" ํ”„๋กœ์ ํŠธ๊ฐ€ ์ธ๊ธฐ ์—†๋Š” ์ œ์•ˆ์—์„œ ์ฒ ํšŒ๋˜์—ˆ์œผ๋ฏ€๋กœ(https://github.com/golang/go/issues/32437#issuecomment-512035919 ์ฐธ์กฐ), ์ด์™€ ๊ฐ™์€ ๊ฒƒ์€ ๋‹ค์‹œ ๋ฐฉ๋ฌธํ•  ์ˆ˜ ์žˆ๊ณ (๋•Œ๋กœ๋Š” ํ•ด์•ผ ํ•จ) ๊ฒฐ๊ตญ ์—ญ์‹œ ๋ฌผ๋Ÿฌ์„ฐ๋‹ค.

์ด ๊ธฐ๋Šฅ ๋ณ€๊ฒฝ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํฅ๋ฏธ๋กœ์šด ์ฃผ์ œ์™€ ํ† ๋ก ์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ์ œํ’ˆ์œผ๋กœ์„œ์˜ Ansible์˜ ๊ฑฐ๋ฒ„๋„Œ์Šค๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ํŒŒ์•…ํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ _๋ˆ„๊ตฐ๊ฐ€_๊ฐ€ https://www.ansible.com/ansiblefest์— ๊ฐ€์ ธ์™€์•ผ ํ•ฉ๋‹ˆ๊นŒ?

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

๊ทธ๋“ค์ด ๋ณ€์ˆ˜ ์ด๋ฆ„๊ณผ ๊ตฌ์กฐ์— ๋Œ€ํ•œ ์ฝ”๋”ฉ ์Šคํƒ€์ผ์„ ์œ ์ง€ํ•˜๊ธฐ๋ฅผ ์›ํ•˜๋Š”์ง€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ฐฐ์—ด ๋˜๋Š” ๋ณ€์ˆ˜์˜ ๋‚ด์šฉ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋‹ค์Œ์€ dicts์˜ ์  ํ‘œ๊ธฐ๋ฒ•์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ์„ค๋ช…์ž…๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์ถ”ํ•ฉ๋‹ˆ๋‹ค. https://stackoverflow.com/questions/16279212/how-to-use-dot-notation-for-dict-in-python

์ด๊ฒƒ์„ ๋‘˜๋Ÿฌ์‹ผ ์ง€์› ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์€ ์ œ ์ƒ๊ฐ์—๋Š” ๊ธฐ๋Šฅ ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋ผ ๋ฌธ์„œ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๋ฃน ์ด๋ฆ„์ด ๋ณ€์ˆ˜๊ฐ€ ๋˜์–ด์„œ๋Š” ์•ˆ๋œ๋‹ค๊ณ  ์ฃผ์žฅํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ๋ฌธ์„œ๊ฐ€ ์ œ๊ณต๋˜๊ธฐ ์ „์— ๊ตฌํ˜„๋˜์—ˆ๋‹ค๋Š” ์‚ฌ์‹ค๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด ๋ณ€๊ฒฝ์˜ ์˜ํ–ฅ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๊ทธ๋ฃน ์ด๋ฆ„์— ๋Œ€์‹œ๊ฐ€ ์—†๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์ธ๋ฒคํ† ๋ฆฌ๋ฅผ ์‹ ์ค‘ํ•˜๊ฒŒ ํŽธ์ง‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

@CMoH IMO ํ˜„์žฌ ๊ฐ€์žฅ ์ข‹์€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ๊ตฌ์„ฑ์— force_valid_group_names = ignore ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ansible 2.8.2 ์ด์ƒ์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@skyscooby , /etc/ansible.cfg ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ๋‘๊ณ  ๋‹ค๋ฅธ ๊ตฌ์„ฑ์„ ์œ„ํ•ด ํ”Œ๋ ˆ์ด๋ถ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ๋กœ์ปฌ ansible.cfg ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ๊ธฐ์กด์˜ ๋ชจ๋“  ansible.cfg ํŒŒ์ผ์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์•„๋‹ˆ๋ฉด ์ „์—ญ ๊ธฐ๋ณธ๊ฐ’์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ(์‚ฌ์šฉ์ž ํ™˜๊ฒฝ์— ๋‹ค๋ฅธ ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๊ณ )?

@Cougar ๋Š” Ansible์˜ ์ด ์„ ํƒ์ด

๊ทธ๋Ÿฌ๋‚˜ ๊ท€ํ•˜์˜ ๋ฌธ์ œ๋Š” ์ด ์„ค์ •์—๋งŒ ๊ตญํ•œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋น„์Šทํ•œ ๊ณ ํ†ต์„ ๊ฒช์—ˆ๊ณ  ์ด์ œ ๋Œ€๋ถ€๋ถ„์˜ ์„ค์ •์ด cfg ํŒŒ์ผ ์„ค์ •์„ ์žฌ์ •์˜ํ•˜๋Š” ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํ”„๋กœ์ ํŠธ๋ณ„sible.cfg ํŒŒ์ผ์˜ ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ ๋ชจํ˜ธํ•œ ์ด์œ ๋Š” ํŠน์ • ์„ค์ •์ด ํ•„์š”ํ•˜๋ฏ€๋กœ ๋ณ€๊ฒฝํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ๋‚˜๋จธ์ง€ ์„ค์ •์„ ๊ธฐ์—… ํ‘œ์ค€์œผ๋กœ ์„ค์ •ํ•˜๋Š” ENV ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋„๋ก ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด ํ‘œ์ค€ ๊ตฌ์„ฑ์œผ๋กœ ๊ธฐ๋ณธ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ตฌ์ถ•ํ•˜๊ณ  ๊ฐœ๋ณ„ ํ”„๋กœ์ ํŠธ๋Š” ๊ธฐ๋ณธ ansible ์ปจํ…Œ์ด๋„ˆ์˜ ์ด๋ฏธ์ง€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ๋™์•ˆ ENV ํ•ญ๋ชฉ์„ ์ž์ฒด Dockerfile์— ์ถ”๊ฐ€ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฐ€๋Šฅํ•œ ๊ฒƒ์€ ์ปจํ…Œ์ด๋„ˆ ๋‚ด์—์„œ ์‹คํ–‰๋˜๋ฏ€๋กœ ๋ชจ๋“  pip ๋ชจ๋“ˆ, ๊ฐ€๋Šฅํ•œ ๋ฒ„์ „ ๋ฐ ๋Ÿฐํƒ€์ž„ ๋„๊ตฌ๊ฐ€ ๋์—์„œ ๋๊นŒ์ง€ ๋™์ผํ•˜๋‹ค๋Š” ๊ฒƒ์„ ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค.

ํŽธ์ง‘: ์ด๊ฒƒ์€ ๋˜ํ•œ ํšŒ์‚ฌ์˜ ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์ด ๋ฌธ์ œ๋ฅผ ๊ฒช๊ธฐ ์ „์— ์ด์™€ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ์ƒˆ ๋ฒ„์ „์„ ์ค€๋น„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. :)

๋ฐœ๊ตด์„ ์ข€ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ธฐ๋Šฅ์€ ์›๋ž˜ ๊ธฐ๋Šฅ ์š”์ฒญ https://github.com/ansible/ansible/issues/40581 ์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด PR https://github.com/ansible/ansible/pull/52748์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ชฉํ‘œ์— ๋Œ€ํ•œ ์„ค๋ช…: https://github.com/ansible/ansible/pull/52748#issuecomment -467976473

์ด ์ฆ์ƒ์˜ ์ฒซ ๋ฒˆ์งธ ๋ฒ„์ „(์›์ธ์€ ๋‹ค๋ฆ„): https://github.com/ansible/ansible/issues/51844

์•ผ, ๋‚œ ์ง€๊ธˆ #52748์„ ๋„ˆ๋ฌด ๋งŽ์ด ์ฝ์—ˆ์–ด.

๋‚ด๊ฐ€ ์ดํ•ดํ•˜๋Š” ํ•œ, ๊ทธ๋ฃน ์ด๋ฆ„์€ ์ด์ „์— ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ ์ฝ”์–ด์—์„œ ์‚ญ์ œ๋˜์—ˆ์œผ๋ฉฐ ๋ˆ„๊ตฐ๊ฐ€(์–ด๋–ค ์ด์œ ๋กœ๋“  ์—ฌ์ „ํžˆ ์ด์œ ๊ฐ€ ๋ช…ํ™•ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—) ๊ทธ๋ฃน ์ด๋ฆ„์ด python ๋ณ€์ˆ˜ ๋ช…๋ช… ๊ทœ์น™์„ ๋”ฐ๋ผ์•ผ ํ•œ๋‹ค๊ณ  ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ #52748์€ ๋Œ€์‹  ์œ„์ƒ ์‹œ์„ค์„ ์ธ๋ฒคํ† ๋ฆฌ๋กœ ๋ฐ€์–ด ๋„ฃ์—ˆ๊ณ , ์ด๋Š” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋ฌธ์ œ๋ฅผ ์ผ์œผ์ผฐ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ AWS, Azure ๋“ฑ์˜ ์˜๋ฆฌํ•œ ๋ช…๋ช… ๊ทœ์น™์„ ์‚ฌ์šฉํ•˜์—ฌ ํ˜ธ์ŠคํŠธ๋ฅผ ๊ทธ๋ฃน์— ๋งคํ•‘ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค.

ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์— ๋™์ผํ•œ ํ‘œ์ค€/์ด๋ฆ„ ์ง€์ • ๊ทœ์น™์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ํ™•์‹คํžˆ ์ถ”์ง„๋ ฅ์„ ์žƒ๊ณ  ์‚ฌ์šฉ์ž๋ฅผ ์žƒ๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฃน ์ด๋ฆ„์€ ๋ณ€์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ํ˜ธ์ŠคํŠธ ์ด๋ฆ„๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ทธ๋ฃน ์ด๋ฆ„์— ๋Œ€์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋ฒˆ์—ญ(์œ„์ƒ)์€ ์ธ๋ฒคํ† ๋ฆฌ ์ˆ˜์ค€(์šฐ๋ฆฌ, ์‚ฌ์šฉ์ž)์—์„œ ์ˆ˜ํ–‰ํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฉฐ ๋ชจ๋“  ์„ธ๊ณ„์˜ ์ตœ๊ณ ์—์„œ๋Š” ์‹ค์ œ๋กœ ์ ˆ๋Œ€ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์„ ์‹œํ–‰ํ•˜๋Š” ๊ฒƒ์˜ ์ด์ ์„ ์ •๋ง๋กœ ๋ณด์ง€ ๋ชปํ•œ๋‹ค. "." ๋ฐ ":", ์ผ๋ถ€ ์‚ฌ๋žŒ๋“ค์€ ๊ทธ๋ฃน ์ด๋ฆ„์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ ๋‚˜๋Š” ๊ทธ๊ฒƒ๋“ค์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์ง€๋งŒ ๊ทธ๋ ‡๊ฒŒ ํ•˜๋Š” ๊ฒƒ์˜ ํ”ผํ•ด๋ฅผ ๋ณด์ง€๋„ ์•Š์Šต๋‹ˆ๋‹ค.

ํด๋ผ์šฐ๋“œ ๊ณต๊ธ‰์ž๊ฐ€ ๋ฉ”ํƒ€ ์ •๋ณด์— ๋Œ€์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ•œ ๊ทธ๋ฃนํ™”์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์‹ค, ๊ทธ๊ฒƒ์€ ์‹ฌ์ง€์–ด ์šด์ „์ž๊ฐ€๋˜์–ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฃน ์ด๋ฆ„์„ abcde๋กœ ์ง€์ •ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์‹ค์ œ๋กœ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋งค์šฐ ์œ ์šฉํ•œ ๊ตฌ๋ถ„ ๊ธฐํ˜ธ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ด ์Šค๋ ˆ๋“œ๋Š” ๊ฐœ๋ฐœ์ž๋‚˜ ์œ ์ง€ ๊ด€๋ฆฌ์ž์˜ ๊ด€์‹ฌ์„ ๋Œ์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ๊ท€๋จธ๊ฑฐ๋ฆฌ์—๊ฒŒ ๋งํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž/๊ด€๋ฆฌ์ž: ๊ทธ๋ฃน ์ด๋ฆ„์— ๋Œ€์‹œ๋ฅผ ํ—ˆ์šฉํ•ด ์ฃผ์„ธ์š”!

๋ช‡ ๊ฐ€์ง€ ์˜คํ•ด๋ฅผ ๋ช…ํ™•ํžˆ ํ•˜๊ธฐ ์œ„ํ•ด, ๊ทธ ์ค‘ ์ผ๋ถ€๋Š” ๋‚ด ์‹ค์ˆ˜๋กœ ์ธํ•œ ๊ฒƒ์ด๊ณ  ์ดˆ๊ธฐ ๋ฉ”์‹œ์ง€๊ฐ€ ๋ถˆ๋ช…ํ™•ํ•ด์กŒ์Šต๋‹ˆ๋‹ค. ์ตœ์‹  ๋ฒ„์ „์—๋Š” ์‚ฌ๋žŒ๋“ค์ด ์—ฌ๊ธฐ์—์„œ ๊ณ„์† ์ œ๊ธฐํ•˜๋Š” ๋ฌธ์ œ ์ค‘ ์ผ๋ถ€์— ๋Œ€ํ•œ ์ˆ˜์ • ์‚ฌํ•ญ์ด ์žˆ์œผ๋ฉฐ ๋‹ค๋ฅธ ์ˆ˜์ • ์‚ฌํ•ญ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์ œ๊ณต๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ง์„ ํ•œ ๋ฒˆ๋งŒ ํ•˜์ž๋ฉด, ๊ทธ๋ฃน ์ด๋ฆ„์— ๋Œ€์‹œ๋ฅผ ํ•ญ์ƒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” ์•„๋‹ˆ์ง€๋งŒ ํ˜„์žฌ '์œ ํšจํ•˜์ง€ ์•Š์€' ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋˜๋Š” ์  ๋ฐ ๊ธฐํƒ€ ๋ฌธ์ž๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด '๊ธฐ๋ณธ๊ฐ’'์€ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋ฉฐ ๊ธฐ๋ณธ๊ฐ’์€ 2.11์—์„œ '์•ˆ์ „'ํ•˜์ง€๋งŒ ํ•ญ์ƒ ์ด์ „ ๋™์ž‘์— '์„ ํƒ'ํ•  ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๊ฐ€ ์—ฌ๊ธฐ๊นŒ์ง€ ์˜จ ์ด์œ ์™€ ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด:

์ฒซ์งธ, ๊ทธ๋ฃน ์ด๋ฆ„์€ ํ•ญ์ƒ ์‚ญ์ œ๋˜์—ˆ์œผ๋ฉฐ ์‚ฌ์šฉ ์ค‘์ธ ์ธ๋ฒคํ† ๋ฆฌ ์œ ํ˜•์— ๋”ฐ๋ผ ์„œ๋กœ ๋‹ค๋ฅธ ์ผ๊ด€์„ฑ ์—†๋Š” ๊ทœ์น™์ด ์žˆ์—ˆ๊ณ  ์Šคํฌ๋ฆฝํŠธ๋Š” ์–ด๋””์—๋‚˜ ์žˆ์—ˆ๊ณ  YAML ๋ฐ INI ํ˜•์‹์€ ๊ฐ๊ฐ ๊ณ ์œ ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ '์œ„์ƒ์˜ ์ค‘์•™ ์ง‘์ค‘ํ™” ๋ฐ ์ •์ƒํ™”'์˜€์Šต๋‹ˆ๋‹ค. ์ด๋Š” 2.4์—์„œ ๋‹ค์‹œ ๊ฒฐ์ •๋˜์—ˆ์ง€๋งŒ 2.8๊นŒ์ง€ ์™„์ „ํžˆ ๊ตฌํ˜„๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์˜๋„๋Š” Ansilbe์—์„œ ๋ชจ๋‘๊ฐ€ ์•ˆ์ „ํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ‘œ์ค€ ๋˜๋Š” ๊ธฐ์ค€์„ ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋ณ€์ˆ˜์— '์•ˆ์ „ํ•˜์ง€ ์•Š์€' ๋˜๋Š” '์ž˜๋ชป๋œ' ๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ๋งŽ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์ „์—ญ์ ์œผ๋กœ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ผ๋ถ€ ์ธ๋ฒคํ† ๋ฆฌ ํ”Œ๋Ÿฌ๊ทธ์ธ.

์ดˆ๊ธฐ ๊ตฌํ˜„์—๋Š” ๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ œ์™€ ๋งŽ์€ ํ† ๋ก ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. /meetings/README.md) ๋ฐ ๋งŽ์€ ํ”ผ๋“œ๋ฐฑ์ด ํ†ตํ•ฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. . 2.8์—์„œ ๋‚˜์˜จ ์ดํ›„์— ์šฐ๋ฆฌ๋Š” ๋˜ ๋‹ค๋ฅธ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›์•˜๊ณ , ๊ธฐ๋ณธ๊ฐ’์„ ์‚ฌ์šฉํ•  ๋•Œ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํŠนํžˆ ์„ค๋ช…์„œ ๋ฐ ๊ฒฝ๊ณ  ๋ฌธ๊ตฌ์™€ ํ•จ๊ป˜ ํ•ญ์ƒ ์‚ฌ์šฉ ์ค‘๋‹จ๋˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๋ช‡ ๊ฐ€์ง€ ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • '์™œ ํŒŒ์ด์ฌ ์ด๋ฆ„์ธ๊ฐ€?'
    ๋Œ€๋ถ€๋ถ„ Ansible์€ Python๊ณผ JInja(Python๋„ ์‚ฌ์šฉ)๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๊ทธ๋ฃน์˜ ์ผ๋ถ€ ์‚ฌ์šฉ(๋Œ€๋ถ€๋ถ„ ์ดˆ๊ธฐ ์˜ˆ์ œ์ด์ง€๋งŒ ํƒ€์‚ฌ์˜ ๊ฒฝ์šฐ๋„ ๋งŽ์Œ)์€ ํ”Œ๋ ˆ์ด๋ถ์— ์˜ค๋ฅ˜๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ: stuff: '{{ groups.gropup-name-with-dash ... }}' ๋˜๋Š” ๋” ๋‚˜์œ group.name.with.dots . ์ด๋Š” '๋ณ€์ˆ˜ ์ ‘๊ทผ์„ ์œ„ํ•œ ์  ํ‘œ๊ธฐ๋ฒ•'์˜ Jinja ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ ค๋Š” ๋งŽ์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ํ˜ผ๋ž€์„ ์•ผ๊ธฐํ•˜๋ฉฐ ์ด๊ฒƒ์ด ๊ธฐ๋ณธ๊ฐ’์ด ๋ชจ๋“  ์‚ฌ์šฉ์ž์—๊ฒŒ ์•ˆ์ „ํ•ด์•ผ ํ•˜๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค. ์ด ๊ฒŒ์‹œ๋ฌผ์˜ ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์€ ์ด์— ๋™์˜ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์ง€๋งŒ ์ด๊ฒƒ์€ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์‹ค์ œ ๋ฌธ์ œ์ด๋ฉฐ ์‹ ๊ทœ ๋˜๋Š” ๊ธฐ์กด Ansible ์‚ฌ์šฉ์ž๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” 'ํŠธ๋žฉ'์ด ๋˜์–ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ '์˜ตํŠธ์•„์›ƒ'ํ•œ ์‚ฌ์šฉ์ž๋Š” Ansible์˜ ๋‹ค๋ฅธ ๋ถ€๋ถ„์—์„œ ์‚ฌ์šฉ ์ค‘๋‹จ์„ ๋ฐฉ์ง€ํ•  ์ฑ…์ž„์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • '์ธ๋ฒคํ† ๋ฆฌ๋งˆ๋‹ค ์œ„์ƒ ์ƒํƒœ๊ฐ€ ๋‹ค๋ฅธ ๊ฒƒ์ด ๋งˆ์Œ์— ๋“ ๋‹ค๋ฉด?'
    ๊ธ€์Ž„, ์—ฌ์ „ํžˆ '์ค‘์•™' ์œ„์ƒ์„ ๋„๊ณ  ํŠน์ • ์ธ๋ฒคํ† ๋ฆฌ ์†Œ์Šค์— ๋Œ€ํ•ด ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ „ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋Œ€์ฒดํ•˜๋Š” ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” ์ƒˆ ์ธ๋ฒคํ† ๋ฆฌ ํ”Œ๋Ÿฌ๊ทธ์ธ์—๋Š” ์Šคํฌ๋ฆฝํŠธ ๋™์ž‘, ์ตœ์•…์˜ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์—๋ฎฌ๋ ˆ์ดํŠธํ•˜๋Š” ์˜ต์…˜์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ธ๋ฒคํ† ๋ฆฌ ์Šคํฌ๋ฆฝํŠธ .

  • 'ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์ด ์•„๋‹Œ ์ด์œ ๋Š”/๋‹ค์Œ์€ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์ž…๋‹ˆ๊นŒ?'
    ๊ทธ๋ฃน๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์˜ ์ •๋ฆฌ๋Š” ํ•ญ์ƒ ์กด์žฌํ–ˆ์ง€๋งŒ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์€ DNS๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ์š”๊ตฌ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
    ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ์˜ ๊ฒฝ์šฐ ๋˜๋Š” chroot ์—ฐ๊ฒฐ์˜ ๊ฒฝ์šฐ ์œ ํšจํ•œ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ๋‹คํ–‰์Šค๋Ÿฝ๊ฒŒ๋„ ์  ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๋Š” ์˜ˆ๊ฐ€ ๊ฑฐ์˜ ๋˜๋Š” ์ „ํ˜€ ์—†์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ผ๋ฐ˜์ ์ธ ๊ด€ํ–‰์ด ์•„๋‹ˆ๋ฉฐ ์‚ฌ๋žŒ๋“ค์ด ๊ฐ‘์ž๊ธฐ ์‚ฌ์šฉํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ๋  ๊ฒƒ์ด์ง€๋งŒ ๊ทธ๋ฃน ์ด๋ฆ„๊ณผ ๋‹ฌ๋ฆฌ ์ด๊ฒƒ์€ ์ง€๊ธˆ๊นŒ์ง€ ํ”ผํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์•ž์œผ๋กœ ๋ฌธ์ œ๊ฐ€ ๋œ๋‹ค๋ฉด... ์—ญ์‹œ ์ข‹์€ ํ•ด๊ฒฐ์ฑ…์€ ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ํŠน์ • ํ‹ฐ์ผ“(์„ค๋ช…/์ •๋ณด๊ฐ€ ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์Œ)์€ ์ œ๊ฐ€ ์ด๋ฏธ ํ•ด๊ฒฐํ•˜๊ณ  ์žˆ๋Š” ๋ฌธ์ œ์ด๋ฏ€๋กœ ๊ณง ์ˆ˜์ •๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๋‚˜๋จธ์ง€ ํ† ๋ก ๊ณผ ๊ด€๋ จํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๋Š” Github์„ ํฌ๋Ÿผ์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉฐ ์ผ๋ถ€ ํ‹ฐ์ผ“์€ ๊ทธ๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค. ๋‹ซํ˜€ ์žˆ๊ณ  ๊ธด ์Šค๋ ˆ๋“œ๊ฐ€ ์žˆ๋Š” ์ด์ „ ํ‹ฐ์ผ“์€ ์ตœ๊ทผ๊นŒ์ง€ ๋ฌด์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋‹ซํžŒ ๋ฌธ์ œ๋ฅผ ํ•„ํ„ฐ๋งํ•˜๊ณ  IRC์˜ ๋ฉ”์ผ๋ง ๋ฆฌ์ŠคํŠธ ๋˜๋Š” ์ƒˆ๋กœ์šด ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ† ๋ก ์„ ๊ธฐ๋Œ€ํ•˜์‹ญ์‹œ์˜ค.

๋‚˜๋Š” ์ด๊ฒƒ์ด ๋ชจ๋“  ์ฃผ์š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ํ•ญ์ƒ ํ† ๋ก ์„ ์œ„ํ•ด ์—ด๋ ค ์žˆ๊ณ  ์ž์œ ๋กญ๊ฒŒ ML์ด๋‚˜ IRC์— ๋“ค๋Ÿฌ์ฃผ์‹ญ์‹œ์˜ค. github๋Š” ๊ทธ๋Ÿฐ ์ผ์— ์ข‹์€ ์žฅ์†Œ๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์„ ํ”ผํ•ฉ๋‹ˆ๋‹ค.

๋งŽ์€ ์„ค๋ช… ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

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

@skyscooby ๋ฌธ์ œ๋Š” Ansible์ด ๊ทธ๋ ‡๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ Jinja๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ๋ง์„ ํ•œ ๋ฒˆ๋งŒ ํ•˜์ž๋ฉด, ๊ทธ๋ฃน ์ด๋ฆ„์— ๋Œ€์‹œ๋ฅผ ํ•ญ์ƒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” ์•„๋‹ˆ์ง€๋งŒ ํ˜„์žฌ '์œ ํšจํ•˜์ง€ ์•Š์€' ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋˜๋Š” ์  ๋ฐ ๊ธฐํƒ€ ๋ฌธ์ž๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. ์„ค๋ช… ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์€ ์ •๋ง๋กœ ๊ฐœ์„ ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹น์‹ ์€ "์ง€์‹์˜ ์ €์ฃผ"๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์‚ฌ์šฉ์ž ์ž…์žฅ์—์„œ ์ƒ์ƒํ•ด ๋ณด์‹ญ์‹œ์˜ค .

[DEPRECATION WARNING]: TRANSFORM_INVALID_GROUP_CHARS ์„ค์ •์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ทธ๋ฃน ์ด๋ฆ„์— ์ž˜๋ชป๋œ ๋ฌธ์ž๋ฅผ ํ—ˆ์šฉํ•˜๋„๋ก ์„ค์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ณ€๊ฒฝ๋˜์ง€๋งŒ ์—ฌ์ „ํžˆ
์‚ฌ์šฉ ์ค‘๋‹จ ์‹œ ์‚ฌ์šฉ์ž๊ฐ€ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ ๋ฒ„์ „ 2.10์—์„œ ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ ์ค‘๋‹จ ๊ฒฝ๊ณ ๋Š” ansible.cfg์—์„œ deprecation_warnings=False๋ฅผ ์„ค์ •ํ•˜์—ฌ ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
[๊ฒฝ๊ณ ]: ๊ทธ๋ฃน ์ด๋ฆ„์— ์ž˜๋ชป๋œ ๋ฌธ์ž๊ฐ€ ์žˆ์ง€๋งŒ ๋Œ€์ฒด๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์„ ๋ณด๋ ค๋ฉด -vvvv๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.

๊ทธ๊ฒƒ์€ ๋ฉ€๊ณ ๋„ ๋จผ ๊ธธ์ด๋‹ค.

[์‚ฌ์šฉ ์ค‘๋‹จ ๊ฒฝ๊ณ ] ๊ทธ๋ฃน ์ด๋ฆ„ 'my-servers'์— '-'๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ Ansible 2.11๋ถ€ํ„ฐ ๊ธฐ๋ณธ์ ์œผ๋กœ ์œ ํšจํ•˜์ง€ ์•Š๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ์–ต์ œํ•˜๋ ค๋ฉด ansible.cfg ๋˜๋Š” ANSIBLE_TRANSFORM_INVALID_GROUP_CHARS ํ™˜๊ฒฝ ๋ณ€์ˆ˜์—์„œ force_valid_group_names๋ฅผ "ignore"๋กœ ์„ค์ •ํ•˜์‹ญ์‹œ์˜ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ https://docs.ansible.com/something ์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

... ์‚ฌ์šฉ์ž๋กœ์„œ ๋‚ด๊ฐ€ ์ •๋ง ๋ณด๊ณ  ์‹ถ์—ˆ๋˜ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ํ•œ ์‹œ๊ฐ„ ์ด์ƒ ๋‚˜๋ฅผ ๊ตฌํ–ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด์ œ ์ด ๋ฌธ์ œ์— ์ง๋ฉดํ–ˆ๊ฑฐ๋‚˜ ์ง๋ฉดํ•˜๊ฒŒ ๋  ์‚ฌ๋žŒ๋“ค์˜ ์ˆ˜๋ฅผ ๊ณฑํ•˜์‹ญ์‹œ์˜ค.

๊ทธ๋ฃน ์ด๋ฆ„์—์„œ ๋Œ€์‹œ์™€ ์ ์ด ์œ ํšจํ•˜์ง€ ์•Š์€ ๊ฒƒ์€ ํ•ฉ๋ฆฌ์ ์ธ ๊ธฐ๋ณธ๊ฐ’์ด ์•„๋‹™๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์€ ํ•ญ์ƒ ๊ทธ๋ฃน ์ด๋ฆ„์œผ๋กœ ๊ทธ๋“ค์„ ๊ฐ€์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•ฉ๋ฆฌ์ ์ธ ํ–‰๋™์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ๊ตฌ์„ฑ ํŒŒ์ผ์—์„œ ๋˜ ๋‹ค๋ฅธ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜๋„๋ก ์š”๊ตฌํ•˜๋Š” ๊ฒƒ์€ IMHO๋ฅผ ๋ฐฉ์–ดํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์œ„์˜ ์˜๊ฒฌ์— ๋Œ€ํ•ด @bcoca ์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋งค์šฐ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ ๊ฒฐ์ •์— ๋งŒ์กฑํ•˜์ง€ ์•Š์ง€๋งŒ ํ† ๋ก ์ด ์žˆ์—ˆ๊ณ  ๊ฒฐ์ •์ด ๋‚ด๋ ค์กŒ๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ๊ฒฐ์ •์ด ์—ฌ์ „ํžˆ ํ† ๋ก ์„ ์œ„ํ•ด ์—ด๋ ค ์žˆ๋‹ค๋ฉด ๋ฉ”์ผ๋ง ๋ฆฌ์ŠคํŠธ๋‚˜ IRC์—์„œ ๊ณ„์†๋˜์–ด์•ผ ํ•˜์ง€๋งŒ ์ด ๋ฌธ์ œ๋ฅผ ํฌ์ฐฉํ•˜์ง€ ๋ชปํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ์˜ ์ฃผ์ œ์— ๋Œ€ํ•ด ๊ณต์‹ ๋ฌธ์„œ ๋ฐ ํฌํŒ… ๊ฐ€์ด๋“œ์—์„œ ๋‹ค์Œ ์ •๋ณด๋ฅผ ์ฐพ์•„ ์ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

  • ๊ธฐ๋ณธ์ ์œผ๋กœ ์œ ํšจํ•œ ๊ทธ๋ฃน ์ด๋ฆ„์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
  • ๋Œ€์‹œ, ํ•˜์ดํ”ˆ, ์  ๋ฐ ์ฝœ๋ก ์„ ํฌํ•จํ•œ ๊ทธ๋ฃน ์ด๋ฆ„์„ ๊ณ„์† ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

์šฐ๋ฆฌ๋Š” ๋ชจ๋“  ๊ทธ๋ฃน๊ณผ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์— ๋Œ€์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ƒˆ ์„ค์น˜/ํ™˜๊ฒฝ์„ ์„ค์ •ํ•  ๋•Œ๋งˆ๋‹ค ๋‚ด ansible.cfg ๋ฅผ ์„ ํƒํ•˜๊ณ  ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋‚˜์—๊ฒŒ ๋ถˆํ–‰ํ•œ ์ผ์ด์ง€๋งŒ ์–ด๋–ป๊ฒŒ๋“  ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๊ธฐ๋Œ€ํ•˜๋Š” ์ตœ์†Œํ•œ์˜ ๊ฒƒ์€ ์ด์— ๋”ฐ๋ผ ๋ฌธ์„œํ™”๋˜์–ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ๋ณ€๊ฒฝ์ด ํ˜„๋ช…ํ•œ์ง€ ์•„๋‹Œ์ง€์— ๋Œ€ํ•œ ํ† ๋ก ์„ ๊ณ„์†ํ•˜๊ธฐ ์œ„ํ•ด Ansible Development ๊ทธ๋ฃน์—์„œ ์Šค๋ ˆ๋“œ ๋ฅผ ์—ด์—ˆ์Šต๋‹ˆ๋‹ค.

์นœ์• ํ•˜๋Š”,
ํŠธ๋ก ๋ฐ

์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋ชจ๋“  ๊ธฐ์—ฌ์ž์—๊ฒŒ ๊ฐ์‚ฌ๋ฅผ ์ „ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์—ฌ๊ธฐ ์ฝ์€ ๊ฒƒ์„ ๋ฐ”ํƒ•์œผ๋กœ ๋‚ด๊ฐ€ ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŠธ ์“ฐ๊ธฐ๋กœํ–ˆ๋‹ค https://docs.sbarnea.com/ansible/naming-hosts-and-groups ํฌ๋ง์ด ์‚ฌ์šฉ์ž๊ฐ€ํ•ด์•ผ ํ•  ์ผ์„ ์š”์•ฝ ๊ฒƒ์„ -.

@loop-evgeny ์ €๋Š” ์šฐ๋ฆฌ๊ฐ€ ํ•ต์‹ฌ ํŒ€์œผ๋กœ์„œ "์ง€์‹์˜ ์ €์ฃผ"๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ ์œ ์šฉํ•œ ๋ฌธ์„œ์™€ ์˜ค๋ฅ˜๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ๋ฐฉํ•ดํ•œ๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์šฐ๋ฆฌ๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ์— ์ „์ ์œผ๋กœ ์˜์กดํ•˜์—ฌ ๊ฐ€๋Šฅํ•œ ํ•œ ๋งŽ์€ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•ด ๋‹จ์ˆœํ•˜๊ฒŒ ๋งŒ๋“ค๊ณ  ๊ฐ€๋Šฅํ•œ ํ•œ ๋งŽ์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ œ๊ณตํ•˜๋ฏ€๋กœ ์‚ฌ๋žŒ๋“ค์ด ๋ฌธ์„œ ๋ฐ ์˜ค๋ฅ˜/๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€ ๊ฐœ์„ ์— ๋Œ€ํ•œ ๊ถŒ์žฅ ์‚ฌํ•ญ์ด ์žˆ์œผ๋ฉด ํ•ญ์ƒ ๋‹ค์Œ์„ ๋ณด๋‚ด ๋„์›€์„ ์ค„ ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ํ’€ ๋ฆฌํ€˜์ŠคํŠธ. ์ง€์ ํ•˜์‹  ๋ฉ”์‹œ์ง€๋Š” ๋‹ค์Œ ํŒŒ์ผ์— ๋ณด๊ด€๋˜์–ด ์žˆ์œผ๋ฉฐ, ์ œ์•ˆ๋œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ๊ณผ ํ•จ๊ป˜ PR์„ ๋ณด๋‚ด์ฃผ์‹œ๋ฉด ๋Œ€๋‹จํžˆ ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค...

https://github.com/ansible/ansible/blob/4ef2545eb5d661566e06629015967c2d1b8924e3/lib/ansible/inventory/group.py#L54 -L55

@jctanner ์ผ๋ฐ˜์ ์œผ๋กœ ์ €๋Š” ์ œ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋ฌด๋ฃŒ์ด๊ณ  ์œ ์šฉํ•œ ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด PR์„ ์ œ์ถœํ•˜๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์‚ฌ์šฉ์„ฑ์— ๋Œ€ํ•œ Ansible ๊ฐœ๋ฐœ์ž์˜ ์ผ๋ฐ˜์ ์ธ ํƒœ๋„, ๋‚ด๊ฐ€ ์ž๋ช…ํ•œ ๋ฒ„๊ทธ๋กœ ๊ฐ„์ฃผํ•˜๋Š” "์˜๋„ํ•œ ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š”" ๋ฌธ์ œ๋กœ ๋‹ซ์œผ๋ ค๋Š” ์—ด๋ง(๋””์ž์ธ ๋ฒ„๊ทธ๋ผ๋„), Ansible์— ํ˜„์žฌ 2025๋…„(์ฆ‰, 2,000๊ฐœ )์ด ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค !) ๊ณต๊ฐœ PR์€ ๋‚ด ์ž‘์—…์ด ๋‚ญ๋น„๋˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๋Š” ํ™•์‹ ์„ ๊ฑฐ์˜ ์ฃผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ๋งํ–ˆ๋“ฏ์ด ์ •๋ง๋กœ "์ปค๋ฎค๋‹ˆํ‹ฐ์— ์˜์กด"ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์ƒ๋‹นํ•œ ๋ฌธํ™” ๋ณ€ํ™”๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

ํ .. ์ €์—๊ฒŒ๋„ ๊ธฐํšŒ๊ฐ€ ์™”์Šต๋‹ˆ๋‹ค.

๋ถˆํ–‰ํžˆ๋„ ์šฐ๋ฆฌ๋Š” ๋„คํŠธ์›Œํฌ ์ด๋ฆ„์„ ๊ทธ๋ฃน ์ด๋ฆ„์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉฐ ์‰ฝ๊ฒŒ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๋ฃน ์ด๋ฆ„์— ๋Œ€ํ•ด ๋„ํŠธ ๊ตฌ๋ฌธ ์„คํƒ•์„ ์„ ํƒ ํ•ด์ œํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•œ ์ ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค(๋‹ค๋ฅธ ๋ณ€์ˆ˜์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜์ง€๋งŒ).

์•ž์œผ๋กœ๋Š” ansible-playbook whatever.yaml -l some.network.to.use ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ ์ด์™ธ์˜ ๋‹ค๋ฅธ ์ด๋ฆ„์„ ๊ทธ๋ฃน ์ด๋ฆ„์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉด ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ํฌ๊ฒŒ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”,
๋‚˜๋Š” ์ง€๊ธˆ ์•ฝ๊ฐ„ ํ˜ผ๋ž€์Šค๋Ÿฝ๋‹ค. ๋‚˜์ค‘์— ๊ทธ๋ฃน ์ด๋ฆ„์— ์ž˜๋ชป๋œ ๋ฌธ์ž๋ฅผ ํ—ˆ์šฉํ•˜๋ ค๋ฉด ansible.cfg ์— ๋ฌด์—‡์„ ์„ค์ •ํ•ด์•ผ ํ•˜๋Š”์ง€ ์•Œ๋ ค์ฃผ์‹ค ์ˆ˜ ์žˆ๋‚˜์š”?

force_valid_group_names = ignore

์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์žฌํ‰๊ฐ€์˜ ๋ฏธ๋ž˜ ๋ฒ„์ „์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์–ธ์  ๊ฐ€ ansible์€ force_valid_group_names ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๊ทธ๋ฃน ์ด๋ฆ„์˜ ๋ชจ๋“  ๋Œ€์‹œ๋ฅผ ๊ฑฐ๋ถ€ํ•  ๊ฒƒ์ž…๋‹ˆ๊นŒ? (๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•ด ์–ด๋ ค์›€์„ ๊ฒช์—ˆ๊ณ  ๊ทธ๋ฃน ์ด๋ฆ„์— ํ•˜์ดํ”ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ๊ฒช์ง€ ์•Š์€ ์‚ฌ์šฉ์ž์˜ ํ”ผ๋“œ๋ฐฑ์„ ๋“ฃ์ง€ ์•Š์Œ)

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. @bcoca ์˜ ๋Œ“๊ธ€์„ ์ฝ๊ณ  ๋‚˜์ค‘์— ์›ํ•˜๋ฉด ํ•˜์ดํ”ˆ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์œผ๋กœ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”,
๋™์ผํ•œ ๊ฒฝ๊ณ ๊ฐ€ ํ‘œ์‹œ๋˜์ง€๋งŒ ๋ฌด์—‡์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š”์ง€, ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š”์ง€ ์ดํ•ดํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.
ํŒŒ์ด์ฌ๊ณผ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๊นŒ?
ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•?

force_valid_group_names = ignore๋กœ ๋ฌด์‹œํ•˜๋ฉด ํ•„์š”ํ•˜๊ฒŒ ๋˜๋ฉฐ Ansible >= 2.10์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•  ๋•Œ?

๋ฌธ์•ˆ ์ธ์‚ฌ,
์„ธ์ž๋ฅด ํ˜ธ๋ฅดํ—ค

๋‚ด๊ฐ€ ์ด๊ฒƒ์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ดํ•ดํ•œ๋‹ค๋ฉด. ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ์œ ์ผํ•œ ๊ฒƒ์€ ๊ทธ๋ฃน ์ด๋ฆ„์˜ ์ž๋™ ๋ณ€ํ™˜์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ 2.10 ์ดํ›„์— force_valid_group_names = ignore ๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์™„์ „ํžˆ ๊ดœ์ฐฎ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

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

์ธ๋ฒคํ† ๋ฆฌ์— foo-bar.xyz ๊ทธ๋ฃน์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ํ•ด๋‹น ๊ทธ๋ฃน์— ์†ํ•˜๋Š” ํ˜ธ์ŠคํŠธ ๋ชฉ๋ก์„ ์ƒ์„ฑํ•˜๋Š” ํ…œํ”Œ๋ฆฟ์„ ์ž‘์„ฑํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

{% for host in groups['foo-bar.xyz'] %}
{{ host }}
{% endfor %}

๋‹ค์Œ ๋ฒ„์ „์˜ ํ…œํ”Œ๋ฆฟ์€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

{% for host in groups.foo-bar.xyz %}
{{ host }}
{% endfor %}

์ด ๊ฒฝ์šฐ - ์™€ . ๊ฐ€ ํŠน๋ณ„ํ•œ ์˜๋ฏธ๋ฅผ ๊ฐ–๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ…œํ”Œ๋ฆฟ์ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋ฃน์˜ ์ด๋ฆ„์ด foo_bar_xyz ๊ฒฝ์šฐ ์ ์œผ๋กœ ๊ตฌ๋ถ„๋œ ํ‘œ๊ธฐ๋ฒ•์€ ์™„์ „ํžˆ ๊ดœ์ฐฎ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

{% for host in groups.foo_bar_xyz %}
{{ host }}
{% endfor %}

๋ฌผ๋ก  ์™„์ „ํžˆ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž๊ฐ€ ์ž‘์—…์„ ๋” ์‰ฝ๊ฒŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก Ansible์€ ํ•ญ์ƒ ๊ทธ๋ฃน ์ด๋ฆ„์— ๋Œ€ํ•ด ์•ฝ๊ฐ„์˜ ์œ„์ƒ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๊ทธ๋ฃน์ด ์‹ค์ œ๋กœ foo-bar.xyz ๋ผ๊ณ  ํ–ˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์œ„์˜ ์˜ˆ์—์„œ foo_bar_xyz ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด (๊ทธ๋ฆฌ๊ณ  2.10๊นŒ์ง€๋Š” ์—ฌ์ „ํžˆ ๊ฐ€๋Šฅํ•จ์„) ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ ๋‚˜๋Š” ์ด๊ฒƒ์ด ์ผ์„ ๋” ์‰ฝ๊ฒŒ ๋งŒ๋“ ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์œผ๋ฉฐ ํ•ต์‹ฌ ํŒ€๋„ ์ด์ œ ๊ทธ๊ฒƒ์— ๋™์˜ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋‹ค์Œ ์‹œ๋„๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ "์œ ํšจํ•˜์ง€ ์•Š์€" ๊ทธ๋ฃน ์ด๋ฆ„์„ ๊ฐ–๋Š” ๊ฒƒ์„ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚ด๊ฐ€ ์ดํ•ดํ•˜๋Š” ํ•œ force_valid_group_names = ignore ์„ ์„ค์ •ํ•˜์—ฌ ์ด ์ œํ•œ์„ ์„ ํƒ ํ•ด์ œํ•˜๋Š” ๊ฒƒ์ด ํ•ญ์ƒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ ์‹ค์ œ๋กœ ์„œ๋กœ ์–ฝํžŒ[1] ๋‘ ๊ฐ€์ง€ ๋‹ค๋ฅธ ๋ณ€ํ™”์ž…๋‹ˆ๋‹ค. ๊ฒฝ๊ณ ์˜ ํ˜ผ๋ž€์Šค๋Ÿฌ์šด ์ด๋ฆ„๊ณผ ๋ฌธ๊ตฌ.

๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ ์ด๊ฒƒ์€ ๋‚ด๊ฐ€ ๋ฌธ์ œ๋ฅผ ์ดํ•ดํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ํ‹€๋ ธ๋‹ค๋ฉด ์ €๋ฅผ ์ˆ˜์ •ํ•˜์‹ญ์‹œ์˜ค!

[1] ์ž์„ธํ•œ ๋‚ด์šฉ์€ RFC1925 ๋‹จ๋ฝ 2, ํฌ์ธํŠธ (5)๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

๋‚˜๋Š” ๋Œ€์‹œ > ๋ฐ‘์ค„์˜ ํŽธ์— ์„œ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— 2ยข๋ฅผ ๋‚จ๊ธฐ๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋น ๋ฅธ

๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋„ ์„œ๋ฒ„ ๋ ˆ์ด๋ธ” ๋ฐ ๊ทธ๋ฃน๊ณผ ๊ฐ™์€ ํ•ญ๋ชฉ์— ๋Œ€์‹œ๊ฐ€ ๋ฐ‘์ค„๋ณด๋‹ค ํ›จ์”ฌ ๋” ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์„ ๋ณธ๋‹ค๋Š” ์‚ฌ์‹ค์€ ์ด๊ฒƒ์ด ๋‚ด๊ฐ€ ๋‚ด ๋ชจ๋“  ๋ฐ ๋‚ด ๊ณ ๊ฐ์˜ ansible.cfg ํŒŒ์ผ(์ €๋Š” ํ”Œ๋ ˆ์ด๋ถ๋‹น ํ•˜๋‚˜์”ฉ ๋ณด์œ ํ•˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค).

Ansible์ด ๋” ์—„๊ฒฉํ•œ ๊ธฐ๋ณธ๊ฐ’์„ ์ ์šฉํ•˜์—ฌ ๊ฒฝํ—˜์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์—†์ง€๋งŒ ๋จผ์ € ๋‚ด ์—ญํ•  ์ด๋ฆ„์— ๋Œ€์‹œ๋ฅผ ์ž…๋ ฅํ•˜๊ณ (๋•Œ๋กœ๋Š” ๊ธฐ์กด ์—ญํ• ์— ๋Œ€ํ•ด ๋‹จ์ผ ์˜ˆ์™ธ๋ฅผ ํ—ˆ์šฉํ•จ) ๋Œ€์‹œ๋ฅผ ์ž…๋ ฅํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ์ปฌ๋ ‰์…˜(๊ทธ๋“ค์€ ์–ด๋–ค ์‹์œผ๋กœ๋“ , ๋ชจ์–‘์ด๋‚˜ ํ˜•ํƒœ๋กœ ํ—ˆ์šฉ๋˜์ง€ ์•Š์Œ), ๊ทธ๋ฆฌ๊ณ  ์ด์ œ ๋‚ด ์ธ๋ฒคํ† ๋ฆฌ์—์„œ ๋Œ€์‹œ๋ฅผ ์ฐพ์œผ๋Ÿฌ ์™”์Šต๋‹ˆ๋‹ค!

๊ฑฐ๊ธฐ์— ๋Œ€์‹œ์™€์˜ ์ „์Ÿ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์–ด๋”˜๊ฐ€์— ์„ ์„ ๊ธ‹๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๋งŽ์€ ๋™์  ์ธ๋ฒคํ† ๋ฆฌ ๊ณต๊ธ‰์ž๊ฐ€ ๊ทธ๋ฃน์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ค๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ๋žŒ๋“ค์ด ๋Œ€์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๋ง‰๋Š” ๊ฒƒ์ด ์‹ค์ œ๋กœ ๋ถˆ๊ฐ€๋Šฅํ•œ ํ•œ ๊ณณ ์„œ๋ฒ„ ์ด๋ฆ„๊ณผ ๋ ˆ์ด๋ธ”, ๊ทธ๋ฆฌ๊ณ  ๋งŽ์€(๋Œ€๋ถ€๋ถ„์€ ์•„๋‹ˆ์ง€๋งŒ) ์กฐ์ง์—์„œ ๋Œ€์‹œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ ˆ์ด๋ธ”์„ ์ง€์ •ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค(์˜ˆ: us-east-1a ๊ฐ€ ์•„๋‹Œ us_east_1a ).

์†Œํ”„ํŠธ์›จ์–ด ์ž‘๋™์„ ์œ„ํ•ด ๊ฑฐ์˜ ํ•ญ์ƒ ์žฌ์ •์˜ํ•ด์•ผ ํ•˜๋Š” ๊ธฐ๋ณธ๊ฐ’์„ ๊ฐ–๋Š” ๊ฒƒ์€ ์žฌ๋ฏธ๊ฐ€ ์—†์ง€๋งŒ Ansible 2.11์—์„œ๋Š” ๊ทธ๋ ‡๊ฒŒ ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๋ชจ๋‘ Jinja2 ๋ฐ Python์— ์ต์ˆ™ํ•˜์ง€ ์•Š์€ ์ผ๋ถ€ ์‚ฌ์šฉ์ž๊ฐ€ something.with-some-dashes ๊ฐ€ ์œ ํšจํ•˜์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ซ์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋ผ๋ฉด "๋Œ€์‹œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ dict ์•ก์„ธ์Šค์— ๋Œ€๊ด„ํ˜ธ ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด something['with-some-dashes'] . ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋‘˜์„ ์„ž์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์™„์ „ํ•˜๊ณ  ์™„์ „ํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ์—ฌ๊ธฐ์—์„œ ์šฐ๋ฆฌ ๋ชจ๋‘๊ฐ€ Rust ๊ฐœ๋ฐœ์ž๋Š” ์•„๋‹™๋‹ˆ๋‹ค...

์•„์ฃผ ์ž˜ํ–ˆ์–ด, ์ œํ”„. ์—ฌ๊ธฐ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ณ€๊ฒฝ์€ ๋งค์šฐ ํŒŒ๊ดด์ ์ด๋ฉฐ ์ผํšŒ์„ฑ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์š”๊ตฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ˆ˜๋งŽ์€ ์‚ฌ์šฉ์ž์˜ ์›Œํฌํ”Œ๋กœ๋ฅผ ๋ณ€๊ฒฝํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. Ansible์€ ๋” ์ด์ƒ ์ฆ‰์‹œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์€ ๋ฐ‘์ค„์„ ํฌํ•จํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์ •์ƒ์ ์ธ ์ƒํ™ฉ์—์„œ๋Š” ์ธ๋ฒคํ† ๋ฆฌ_ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์ด ๊ฐ•์ œ๋กœ ์ ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋ฐ‘์ค„์„ ํฌํ•จํ•  ์ˆ˜ ์—†๋Š” ํ˜ธ์ŠคํŠธ ์ด๋ฆ„๊ณผ ํ•˜์ดํ”ˆ์„ ํฌํ•จํ•  ์ˆ˜ ์—†๋Š” ๊ทธ๋ฃน๊ณผ ํ•จ๊ป˜ ์ธ๋ฒคํ† ๋ฆฌ๊ฐ€ ๋งค์šฐ ์ผ๊ด€์„ฑ์ด ์—†์–ด ๋ณด์ž…๋‹ˆ๋‹ค.

๊ธฐ๋ณธ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

https://en.m.wikipedia.org/wiki/ํ˜ธ์ŠคํŠธ ์ด๋ฆ„

์•ˆ๋…•ํ•˜์„ธ์š”,
๋‚˜๋Š” ์—ฌ๊ธฐ ์—์„œ

๊ทธ๋Ÿฌ๋‚˜ ์œ„์—์„œ @bcoca๊ฐ€ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ๋Œ€๋ถ€๋ถ„์˜ ๊ฐœ๋ฐœ์ž๋Š” ์—ฌ๊ธฐ์—์„œ ์ด๋Ÿฌํ•œ ํ† ๋ก ์„ ์ •๊ธฐ์ ์œผ๋กœ ๋ณด์ง€ ์•Š์œผ๋ฉฐ ์ด ๋ฌธ์ œ๋Š” ์˜ฌ๋ฐ”๋ฅธ ๋ฌธ์„œ์— ๋Œ€ํ•œ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋…ผ์˜ํ•˜๊ธฐ์— ์ ์ ˆํ•œ ์žฅ์†Œ๊ฐ€ ์•„๋‹ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ† ๋ก ์„ ์œ„ํ•ด ์Šค๋ ˆ๋“œ์— ์ฐธ์—ฌํ•˜์‹ญ์‹œ์˜ค. TRANSFORM_INVALID_GROUP_CHARS์˜ ๊ธฐ๋ณธ ์„ค์ •์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด ์ข‹์€ ์ƒ๊ฐ์ž…๋‹ˆ๊นŒ? Google ๊ทธ๋ฃน์Šค์—์„œ

์ข‹์€ ์ง€์  ์ œํ”„.

์†Œํ”„ํŠธ์›จ์–ด ์ž‘๋™์„ ์œ„ํ•ด ๊ฑฐ์˜ ํ•ญ์ƒ ์žฌ์ •์˜ํ•ด์•ผ ํ•˜๋Š” ๊ธฐ๋ณธ๊ฐ’์„ ๊ฐ–๋Š” ๊ฒƒ์€ ์žฌ๋ฏธ๊ฐ€ ์—†์ง€๋งŒ Ansible 2.11์—์„œ๋Š” ๊ทธ๋ ‡๊ฒŒ ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ์ด ๋ชจ๋“  ํ† ๋ก ์—์„œ ๋‚˜์—๊ฒŒ ํฐ ์‹œ์‚ฌ์ ์„ ์ค๋‹ˆ๋‹ค. ํ•ด๊ฒฐํ•ด์•ผ ํ•  ๋ฌธ์ œ๋Š” ์ดํ•ดํ•˜์ง€๋งŒ ํ•ด๊ฒฐํ•ด์•ผ ํ•  ๋ฌธ์ œ๊ฐ€ ์ •๋ฐ˜๋Œ€์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ง€์›ํ•˜๊ธฐ๋Š” ์‰ฝ์ง€๋งŒ ์‚ฌ์šฉ์ž์—๊ฒŒ๋Š” ์–ด๋ ค์šด ์ผ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ์—ญ๋ฐฉํ–ฅ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๋ชจ๋‘ Jinja2 ๋ฐ Python์— ์ต์ˆ™ํ•˜์ง€ ์•Š์€ ์ผ๋ถ€ ์‚ฌ์šฉ์ž๊ฐ€ ๋ฌด์–ธ๊ฐ€๋ฅผ ์ธ์‹ํ•˜์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋ผ๋ฉด.with-some-dashes๊ฐ€ ์œ ํšจํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ "๋Œ€์‹œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ dict ์•ก์„ธ์Šค์— ๋Œ€๊ด„ํ˜ธ ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ญ”๊ฐ€['with-some-dash'] ํ•„์š”ํ•˜๋‹ค๋ฉด ๋‘˜์„ ์„ž์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์ˆ˜๋…„ ๋™์•ˆ ์‚ฌ์šฉ ๋œ ๊ฒƒ์„ ๊นจ๋œจ๋ฆฌ์ง€ ์•Š๋Š” ์ตœ์ƒ์˜ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค.

@geerlingguy์˜ ๋ฉ‹์ง„ ๋Œ“๊ธ€ - ๋ฐ”๋กœ ํ™•์ธํ•˜์„ธ์š”!

Ansible ์‚ฌ์šฉ์ž๋กœ์„œ ์ด๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์œ ํšจํ•œ Python ๊ตฌ๋ฌธ์ด ๋ฌด์—‡์ธ์ง€ ์•Œ์•„์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? Ansible์„ ์˜ค๋žซ๋™์•ˆ ์‚ฌ์šฉํ•ด ์™”๊ธฐ ๋•Œ๋ฌธ์— Ansible(๋ฐ ํ•ด๋‹น ๋ชจ๋“ˆ)์ด Python์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์Œ์„ ์ดํ•ดํ•˜์ง€๋งŒ ์™œ ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์‹ ๊ฒฝ์„ ์จ์•ผ ํ•ฉ๋‹ˆ๊นŒ? ๊ทธ ์‚ฌ์‹ค์„ ์ตœ์ข… ์‚ฌ์šฉ์ž์—๊ฒŒ ๋…ธ์ถœ์‹œํ‚ค๋Š” ๊ฒƒ์€ ๋‚˜์œ ๋””์ž์ธ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.

์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‚ฌ์šฉ์ž ์ด๋ฆ„๊ณผ ๊ฐ™์€ ๊ฒƒ์— ๋Œ€ํ•ด ์œ ํšจํ•œ JavaScript/Ruby/.NET/๋ฌด์—‡์ด๋“  ํ—ˆ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ตœ์ข… ์‚ฌ์šฉ์ž๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ž‘์„ฑ๋œ ์–ธ์–ด์— ๊ด€์‹ฌ์„ ๊ฐ–๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

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

์‹œ์Šคํ…œ์ด ๋‚ด๋ถ€์ ์œผ๋กœ ์—„๊ฒฉํ•˜๊ฒŒ ์ค€์ˆ˜ํ•˜๋Š” ํ† ํฐ์„ ์š”๊ตฌํ•˜๋Š” ๊ฒฝ์šฐ ์‹œ์Šคํ…œ์€ ๋‚ด๋ถ€์ ์œผ๋กœ ํ† ํฐ์„ ์ƒ์„ฑํ•˜๊ณ  ๋‚ด๋ถ€ ํ† ํฐ์„ ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ์™€ ์—ฐ๊ฒฐํ•˜๋Š” ์กฐํšŒ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์œผ๋กœ Ansible์€ ํ•„์š”์— ๋”ฐ๋ผ ํ† ํฐ ๊ทœ์น™์„ ๋ณ€๊ฒฝํ•˜๊ณ  ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ์˜ํ–ฅ์„ ์ œํ•œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ์ž์‹ ์ด๋‚˜ ๊ณ ๊ฐ์ด ์ ์ ˆํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๋Œ€๋กœ ์ธ๋ฒคํ† ๋ฆฌ, ์—ญํ•  ๋“ฑ์˜ ์ด๋ฆ„์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ณ€๊ฒฝ์ด ์˜๋„ํ•œ ๊ฒƒ๊ณผ ๋ฐ˜๋Œ€๋˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค(์ง€์› ์ฟผ๋ฆฌ ๊ฐ์†Œ).

์ด์ œ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„(DNS๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ, ์ฆ‰, ๋ฐ‘์ค„์„ ํฌํ•จํ•˜์ง€ ์•Š์•„์•ผ ํ•จ)๊ณผ ๊ทธ๋ฃน ์ด๋ฆ„(๋Œ€์‹œ๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š์•„์•ผ ํ•จ)์—์„œ ์ง€์›๋˜๋Š” ๊ตฌ๋ถ„ ๊ธฐํ˜ธ(๊ธฐ๋ณธ์ ์œผ๋กœ)๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์„ ์ž์œ ๋กญ๊ฒŒ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

El miรฉ., 14๋…„ ์ „. 2019๋…„ 16์‹œ 16๋ถ„, Christian Pointner ์•Œ๋ฆผ @github.com
๊ธฐ๋ก:

๋‚ด๊ฐ€ ์ด๊ฒƒ์„ ์ดํ•ดํ•œ๋‹ค๋ฉด
https://github.com/ansible/ansible/issues/56930#issuecomment-516863432
๋ฐ”๋ฅด๊ฒŒ. ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ์œ ์ผํ•œ ๊ฒƒ์€ ์ž๋™์ž…๋‹ˆ๋‹ค.
๊ทธ๋ฃน ์ด๋ฆ„์˜ ๋ณ€ํ˜•. ์ด๊ฒƒ์€ force_valid_group_names๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์™„์ „ํžˆ ๊ดœ์ฐฎ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
= 2.10 ์ดํ›„๋ถ€ํ„ฐ๋Š” ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค.

๋Œ€์‹œ๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋„ ๊ดœ์ฐฎ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๊ทธ๋ฃน ์ด๋ฆ„์— ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Ansible์ด ๋ฏธ๋ž˜์— ํ•˜์ง€ ์•Š์„ ๊ฒƒ์€
"์ž˜๋ชป๋œ" ๊ทธ๋ฃน ์ด๋ฆ„์— ๋Œ€ํ•ด์„œ๋„ ์  ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„์œ„ํ•œ
์˜ˆ์‹œ:

์ธ๋ฒคํ† ๋ฆฌ์— foo-bar.xyz๋ผ๋Š” ๊ทธ๋ฃน์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๋‹น์‹ ์€ ์“ฐ๊ณ  ์‹ถ์–ด
ํ•ด๋‹น ๊ทธ๋ฃน์— ์†ํ•˜๋Š” ํ˜ธ์ŠคํŠธ ๋ชฉ๋ก์„ ์ƒ์„ฑํ•˜๋Š” ํ…œํ”Œ๋ฆฟ:

{๊ทธ๋ฃน์˜ ํ˜ธ์ŠคํŠธ์— ๋Œ€ํ•œ %['foo-bar.xyz'] %}
{{ ์ฃผ์ธ }}
{% endfor %}

์ด ๋ฒ„์ „์˜ ํ…œํ”Œ๋ฆฟ์€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

{groups.foo-bar.xyz %์˜ ํ˜ธ์ŠคํŠธ์— ๋Œ€ํ•œ %}
{{ ์ฃผ์ธ }}
{% endfor %}

์ด๊ฒƒ์€ -์™€ . ์ด ๊ฒฝ์šฐ ํŠน๋ณ„ํ•œ ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. NS
๊ทธ๋Ÿฌ๋‚˜ ๋‹น์‹ ์˜ ๊ทธ๋ฃน์ด
ํ…œํ”Œ๋ฆฟ์ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฆ„ foo_bar_xyz

{groups.foo_bar_xyz %์˜ ํ˜ธ์ŠคํŠธ์— ๋Œ€ํ•œ %}
{{ ์ฃผ์ธ }}
{% endfor %}

๋ฌผ๋ก  ์™„์ „ํžˆ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•ด ์ผ์„ ๋” ์‰ฝ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด Ansible์€ ๋ถ„๋ช…ํžˆ ํ•ญ์ƒ
๊ทธ๋ฃน ์ด๋ฆ„์„ ์œ„ํ•ด ์•ฝ๊ฐ„์˜ ์œ„์ƒ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ (๊ทธ๋ฆฌ๊ณ  2.10๊นŒ์ง€)
์—ฌ์ „ํžˆ) ์œ„์˜ ์˜ˆ์—์„œ foo_bar_xyz๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ
๊ทธ๋ฃน์€ ์‹ค์ œ๋กœ foo-bar.xyz๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ ๋‚˜๋Š” ์ด๊ฒƒ์„ ์ƒ๊ฐํ•˜์ง€ ์•Š๋Š”๋‹ค.
์ผ์„ ๋” ์‰ฝ๊ฒŒ ๋งŒ๋“ค๊ณ  ํ•ต์‹ฌ ํŒ€๋„ ์ด์ œ ๋™์˜ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
๊ทธ๊ฒƒ์œผ๋กœ.
๋”ฐ๋ผ์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋‹ค์Œ ์‹œ๋„๋Š”
์ฒ˜์Œ์— "์ž˜๋ชป๋œ" ๊ทธ๋ฃน ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚ด๊ฐ€ ์ดํ•ดํ•˜๋Š” ํ•œ
force_valid_group_names๋ฅผ ์„ค์ •ํ•˜์—ฌ ์ด ์ œํ•œ์„ ์„ ํƒ ํ•ด์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
= ๋ฌด์‹œ.

๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ ์‹ค์ œ๋กœ ๋‘ ๊ฐ€์ง€ ๋‹ค๋ฅธ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
์„œ๋กœ ์–ฝํ˜€[1]. ํ˜ผ๋ž€์Šค๋Ÿฌ์šด ์ด๋ฆ„๊ณผ ๋‹จ์–ด์˜ ์ถœ์ฒ˜
๊ฒฝ๊ณ .

๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ ์ด๊ฒƒ์€ ๋‚ด๊ฐ€ ๋ฌธ์ œ๋ฅผ ์ดํ•ดํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ €๋ผ๋ฉด ์ •์ •ํ•ด์ฃผ์„ธ์š”
์ž˜๋ชป๋œ!

[1] ์ž์„ธํ•œ ๋‚ด์šฉ์€ RFC1925๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.
http://www.faqs.org/rfcs/rfc1925.html ๋‹จ๋ฝ 2, ์š”์  (5)

โ€”
๋‹น์‹ ์ด ๋Œ“๊ธ€์„ ๋‹ฌ์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/ansible/ansible/issues/56930?email_source=notifications&email_token=AA5N2CJCIELW7JWHC6OJ35DQEQHSPA5CNFSM4HPRGLKKY5DWWWWK3TUL52HS4DFVREXG43VMVBW63
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AA5N2CIVT5PLD2QCAGGBK6LQEQHSPANCNFSM4HPRGLKA
.

์ด๊ฒƒ์€ ๋‚ด ์†”์งํ•œ ์ƒ๊ฐ์œผ๋กœ๋Š” ์ •๋ง ์ž˜๋ชป๋œ ๊ฒฐ์ •์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ž˜๋ชป๋œ ์ด์œ ๋กœ. ์ง€์› ์š”์ฒญ ์ˆ˜๋ฅผ ์ค„์ด๋Š” ๊ฒƒ์ด ์ •๋ง์ž…๋‹ˆ๊นŒ?

Ansible์€ ๋„๊ตฌ๋กœ์„œ ์ตœ์ข… ์‚ฌ์šฉ์ž์—๊ฒŒ ์–ธ์–ด๋ณ„ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ๋ถ€๊ณผํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ์ €๋Š” ์ด๋ฏธ Terraform์ด Golang์„ ๋ชฉ๊ตฌ๋ฉ์— ์ง‘์–ด๋„ฃ๋Š” ๊ฒƒ์— ๋„ˆ๋ฌด ํ™”๊ฐ€ ๋‚ฌ์Šต๋‹ˆ๋‹ค. ์ด์ œ Ansible๊ณผ "pythonic" ์Šคํƒ€์ผ์—์„œ๋„ ๋™์ผํ•œ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์˜คํ•ดํ•˜์ง€ ๋งˆ์„ธ์š”. ์ €๋Š” Go์™€ Python ๋ชจ๋‘์—์„œ ์ž˜ ์ž‘๋™ํ•˜์ง€๋งŒ ์ฝ”๋“œ๋กœ์„œ์˜ ์ธํ”„๋ผ์— ๊ด€ํ•ด์„œ๋Š” ์™œ ์‹ ๊ฒฝ์„ ์จ์•ผ ํ•ฉ๋‹ˆ๊นŒ? ๊ทธ๋ฆฌ๊ณ  YAML์ด ๊ด€๋ฆฌํ•  ์ฝ”๋“œ ๊ธฐ๋ฐ˜์˜ ํ˜•ํƒœ๋ฅผ ์ง€์‹œํ•˜๋„๋ก ํ•˜๋Š” ์•ฝ์†์€ ์–ด๋–ป๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๊นŒ? "์ฝ๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋กœ์„œ์˜ ์ธํ”„๋ผ"๋ผ๋Š” ๋ง์„ ๋งŽ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค... ๋‚ด๊ฐ€ ์•„๋Š” ํ•œ YAML์€ ๋Œ€์‹œ์™€ ๋ฐ‘์ค„์„ ์ „ํ˜€ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

BTW, ๋ฐ‘์ค„์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ๋“ค์ด ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ •๋ง ์ค‘์š”ํ•œ ๋ช‡ ๊ฐ€์ง€๋งŒ ์–ธ๊ธ‰ํ•˜์ž๋ฉด ๋ง ๊ทธ๋Œ€๋กœ ๋ชจ๋“  ๊ฒƒ์— ๋Œ€ํ•œ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„, AWS ๋ฆฌ์ „ ๋ฐ ID. ๋ณ€ํ™˜์ด ์ผ์–ด๋‚˜์ง€ ์•Š์•„์•ผ ํ•˜๋Š” ๋ชจ๋“  ์˜ˆ์™ธ๋ฅผ ์œ ์ง€ํ•˜๋Š” ํ–‰์šด์„ ๋น•๋‹ˆ๋‹ค...

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋น ๋ฅธ ์†”๋ฃจ์…˜์„ ์ฐพ๊ณ  ์žˆ๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด ansible.cfg force_valid_group_names = ignore ๋ผ์ธ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ๋งŒ์กฑํ•˜์„ธ์š”.

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

์ด๊ฒƒ์€ ํŠนํžˆ Openstack(๋ฐ AWS)๊ณผ ๊ฐ™์ด ๋™์  ์ธ๋ฒคํ† ๋ฆฌ ์ž‘์—…๊ณผ ๊ด€๋ จํ•˜์—ฌ ๋งค์šฐ ๋‘๋ ค์šด ๊ฒฐ์ •์ž…๋‹ˆ๋‹ค.
"๊ธˆ์ง€๋œ ๋ฌธ์ž"๊ฐ€ ํฌํ•จ๋œ ์ธ์Šคํ„ด์Šค ์ด๋ฆ„ ๋ฐ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํ‚ค๋Š” ๊ธฐ๋ณธ ํด๋ผ์šฐ๋“œ์—์„œ ์ธ๋ฒคํ† ๋ฆฌ ํ•ญ๋ชฉ ๋ฐ/๋˜๋Š” ๊ทธ๋ฃน ๋ณ€์ˆ˜๋กœ ๋ฐ˜ํ™˜๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋ฉ”ํƒ€ ํƒœ๊ทธ ๋ฐ/๋˜๋Š” ์ธ์Šคํ„ด์Šค ID๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ง‘ํ•ฉ์„ ๊ด€๋ฆฌํ•˜๋ ค๋Š” ๋งŽ์€ Openstack(๋ฐ AWS) ๊ด€๋ฆฌ์ž์˜ ์‚ถ์„ ์ง€์˜ฅ์œผ๋กœ ๋งŒ๋“ค ๊ฒƒ์ž…๋‹ˆ๋‹ค.
instance-8ca09c33-f255-440f-9544-b0ab318c79d9
๋ฉ”ํƒ€ OS_์šฐ๋ถ„ํˆฌ

Ansible ๊ฐœ๋ฐœ์ž๋Š” @geerlingguy ์˜๊ฒฌ์„ ์ง„์ง€ํ•˜๊ฒŒ ๋ฐ›์•„๋“ค์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Š” Ansible Galaxy์˜ ๊ฐ€์žฅ ํฐ ๊ธฐ์—ฌ์ž ์ค‘ ํ•œ ๋ช…์ด๋ฉฐ ๊ทธ์˜ ์—ญํ• ์€ ์ˆ˜๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ณ€๊ฒฝ์€ $env-$role-[0..99] ์™€ ๊ฐ™์€ ์ˆ˜์ฒœ ๊ฐœ์˜ ํ˜ธ์ŠคํŠธ๋ฅผ ๊ฐ€์ง„ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ •๋ง ์ข‹์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. Ansible ๋Œ€๊ตฐ์ฃผ๋ฅผ ๋‹ฌ๋ž˜๊ธฐ ์œ„ํ•ด ๋ชจ๋“  ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

@ssbarnea ์šฐ์„ , ์œ ํšจํ•œ ํŒŒ์ด์ฌ ์‹๋ณ„์ž์ธ ๋ณ€์ˆ˜ ์ด๋ฆ„ ๋ฐ ๊ธฐํƒ€ ์œ ์‚ฌํ•œ ํ‚ค๋งŒ ํ—ˆ์šฉํ•˜๋„๋ก ํ‘ธ์‹œํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฃน ์ด๋ฆ„์— ๋Œ€ํ•ด ์กฐ๊ธˆ ๋” ์„ค๋ช…ํ•˜์ž๋ฉด, ์‚ฌ์šฉ์ž๊ฐ€ ์˜ˆ์ƒํ•œ ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” groups.foo-group ์™€ ๊ฐ™์€ "์  ๊ตฌ๋ฌธ"์„ ์‚ฌ์šฉํ•˜๋ ค๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด์™€ ๊ฐ™์€ ์ž‘์€ ๋ฌธ์ œ๋กœ ์ธํ•œ ๋ฌธ์ œ ๋ฐ ์ง€์› ์š”์ฒญ์˜ ์ˆ˜๋Š” ์ด์™€ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ์„ธ์ดํ”„ ๊ฐ€๋“œ ์ด๋ฆ„์— ๋Œ€ํ•œ ๊ฒฝ๋กœ๋กœ ์ด๋™ํ•˜๊ฒŒ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์œ ํšจํ•˜์ง€ ์•Š์€ ๋ฌธ์ž๋กœ ๊ฐ„์ฃผ๋˜๋Š” ๊ฒƒ์„ ์œ ์ง€ํ•˜๋ ค๋Š” ์‚ฌ์šฉ์ž๋Š” ์ด ๊ธฐ๋Šฅ์„ ์„ ํƒ ํ•ด์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์ด๊ฒƒ์ด 2.11+์—์„œ ์—„๊ฒฉํ•œ ์ œํ•œ ์‚ฌํ•ญ์ด ๋˜๋ฉด ์กฐ์ง์˜ ์ œ์•ฝ ์กฐ๊ฑด์— ๋ฌถ์ธ ๊ณ ๊ฐ์„ ์žƒ๊ฒŒ ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค(๋ชจ๋“  ansible ์‚ฌ์šฉ์ž๊ฐ€ ํšŒ์‚ฌ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ช… ๊ทœ์น™์„ ์ง€์‹œํ•  ๊ถŒํ•œ์ด ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค). ์ด๋Ÿฌํ•œ ๋ณ€ํ™”๋Š” ๋˜ํ•œ ๋Œ€์‹œ๊ฐ€ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ๋Š” ํด๋ผ์šฐ๋“œ ์ธํ”„๋ผ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ€๋Šฅ์„ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ค‘๋Œ€ํ•œ ๋„์ „์„ ์•ผ๊ธฐํ•  ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ ์ „์ฒด ์Šค๋ ˆ๋“œ๋ฅผ ์ฝ์ง€ ์•Š์€ ์‚ฌ๋žŒ๋“ค์„ ์ƒ๊ธฐ์‹œํ‚ค๊ธฐ ์œ„ํ•ด. ๊ฐœ๋ฐœ ๋ฉ”์ผ๋ง ๋ชฉ๋ก์—๋„ ์Šค๋ ˆ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. https://groups.google.com/forum/#!topic/ansible -devel/bjAcM9ferIw

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

๊ทธ๋Ÿฌ๋‚˜ ์œ„์—์„œ @bcoca๊ฐ€ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ๋Œ€๋ถ€๋ถ„์˜ ๊ฐœ๋ฐœ์ž๋Š” ์—ฌ๊ธฐ์—์„œ ์ด๋Ÿฌํ•œ ํ† ๋ก ์„ ์ •๊ธฐ์ ์œผ๋กœ ๋ณด์ง€ ์•Š์œผ๋ฉฐ ์ด ๋ฌธ์ œ๋Š” ์˜ฌ๋ฐ”๋ฅธ ๋ฌธ์„œ์— ๋Œ€ํ•œ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋…ผ์˜ํ•˜๊ธฐ์— ์ ์ ˆํ•œ ์žฅ์†Œ๊ฐ€ ์•„๋‹ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@Tronde : ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์†”๋ฃจ์…˜์„ ์ฝ”๋”ฉํ•˜๊ธฐ ํ›จ์”ฌ ์ „์— ์˜ํ–ฅ์„ ์ดํ•ดํ•˜๊ณ  ํ”ผ๋“œ๋ฐฑ์„ ์ˆ˜์ง‘ํ•˜๊ธฐ ์œ„ํ•ด ์Šคํ† ๋ฆฌ๊ฐ€ ์ž‘์„ฑ๋˜๊ธฐ ์ „์— ๊ธฐ๊ณ ์ž์™€ ๊ณ ๊ฐ์ด ์ƒ์˜ํ•œ๋‹ค๊ณ  ์ฃผ์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ์ด ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ์ด๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ ๋‘ ๋ฒˆ ์ด์ƒ ๋ณธ ์ œํ’ˆ ๊ด€๋ฆฌ ์‹คํŒจ์ž…๋‹ˆ๋‹ค.

@andyfeller ๊ฐ€ ์ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๋Š” ์ƒํ™ฉ์˜ ์˜ˆ:

์šฐ๋ฆฌ ์‚ฌ์ดํŠธ์— ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

Red Hat Identity Manager๋ฅผ ์™ธ๋ถ€ ์ธ๋ฒคํ† ๋ฆฌ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์ œ์–ดํ•˜์ง€ ์•Š์œผ๋ฉฐ ๋ฐ‘์ค„ ๋Œ€์‹  ๋Œ€์‹œ๊ฐ€ ์žˆ๋Š” ๋งŽ์€ ํ˜ธ์ŠคํŠธ ๊ทธ๋ฃน์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(ํ•ด๋‹น ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์—ฌ ์กด์žฌํ•˜๋Š” ๋‹ค๋ฅธ ๋ชจ๋“  ํ•ญ๋ชฉ ๋•Œ๋ฌธ์—).

๋”ฐ๋ผ์„œ ๋‹ค์Œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  • ํ˜„์žฌ ๋™์ž‘์„ ์œ ์ง€ํ•˜๋„๋ก Ansible์„ ๊ตฌ์„ฑํ•˜๋ ค๋ฉด
  • ์ง€์› ์ค‘๋‹จ ๊ฒฝ๊ณ  ๋„๊ธฐ
  • ๋ช…๋ น์ค„ Ansible ๋ฐ Ansible Tower์— ๋Œ€ํ•ด ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ ๋กœ ํ™๋ณด https://github.com/ansible/ansible/pull/66650 (๊ฐˆํ€ด ์—†์Œ)์€ 2.10(ํ˜„์žฌ ์‹œ์  ๊ธฐ์ค€)์œผ๋กœ ์˜ˆ์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ํ˜„์žฌ ์ด ๊ฒฝ๊ณ ๋ฅผ ๋ณด๋Š” ์‚ฌ๋žŒ์€ ๋ˆ„๊ตฌ๋‚˜(2.10์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ฉด, ๊ทธ๋“ค์ด ๋‹ค์‹œ ์„ค์ • ๋  ๋•Œ๊นŒ์ง€ (๊ฐ๋ณธ ๋Œ€์‹  ์‹คํŒจ๋ฅผ ๊ฐ–๋Š”) PR ๋ณ‘ํ•ฉ๋˜์–ด ์‹œ์ž‘ ๊ฐ€์ • force_valid_group_names = ignore ์— ansible.cfg ).

๊ทธ๋ƒฅ ๊ฐ€์‹œ์„ฑ์„ ์œ„ํ•ด ๊ฒŒ์‹œํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์‹œ ๋˜๋Š” ๋Œ€์‹œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ทธ๋ฃน ์ด๋ฆ„์„ ์ƒ์„ฑํ•˜๋Š” ๋™์  ์ธ๋ฒคํ† ๋ฆฌ ์Šคํฌ๋ฆฝํŠธ(Ansible ์ž์ฒด์˜ ์ผ๋ถ€ ๋˜๋Š” ํ˜„์žฌ '๊ณต์‹์ ์ธ' ์ปฌ๋ ‰์…˜์œผ๋กœ ์ด๋™)๊ฐ€ ์—ฌ์ „ํžˆ ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์ด ์‚ฌ์šฉ์ž ์ ๋Œ€์  ๊ธฐ๋ณธ๊ฐ’์ด๋ผ๋Š” ์ด์ „ ์ฃผ์žฅ ๋’ค์— ์—ฌ์ „ํžˆ ํ™•๊ณ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์œ ํšจํ•œ DNS ๋ฌธ์ž.

์‹ค์ œ๋กœ AWS์™€ ํ•จ๊ป˜ Ansible์„ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ์€ ๋ˆ„๊ตฌ๋‚˜ ๊ธฐ๋ณธ๊ฐ’์„ ์žฌ์ •์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@geerlingguy ๋งž๋Š” ํ™๋ณด๋ฒˆํ˜ธ์ธ๊ฐ€์š”? ์ด ๋ฌธ์ œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ ๋กœ ์ด๊ฒƒ์€ 19:06:55 ์—์„œ ์‹œ์ž‘ ํ•˜๋Š” ํ•ต์‹ฌ ํšŒ์˜์—์„œ ๋…ผ์˜

@apple4ever oops, ๋งํฌ๋ฅผ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค. https://github.com/ansible/ansible/pull/66650์ž…๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ๋‚˜๋Š” ์ด๋ฏธ ๋‹ต๋ณ€๋œ/ํญ๋กœ๋œ/๋“ฑ์— ๋Œ€ํ•œ ๋งŽ์€ ์˜๊ฒฌ์„ ์œ„์—์„œ ๋ณด์•˜์œผ๋ฏ€๋กœ ์—ฌ๊ธฐ์— ๋‚ด ์ด์ „ ๊ฒŒ์‹œ๋ฌผ์„ ๋งํฌํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

https://github.com/ansible/ansible/issues/56930#issuecomment -516863432

ํ† ๋ก ์„ ์œ„ํ•ด ์ƒˆ ํ•ญ๋ชฉ์„ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๋Š” ์ƒˆ ๊ฒŒ์‹œ๋ฌผ์€ ์ด๋ฏธ ๋‹ต๋ณ€๋œ ์ด์ „ ํ•ญ๋ชฉ์„ ์ˆจ๊ธฐ๋ฏ€๋กœ ์ถ”๊ฐ€ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ , ์œ ํšจํ•œ ๋ณ€์ˆ˜ ์ด๋ฆ„์ด ์–ด๋–ป๊ฒŒ ์ƒ๊ฒผ๋Š”์ง€์— ๋Œ€ํ•œ Python ๋ฌธ์„œ์—์„œ ๋งํฌํ•˜๊ธฐ์— ์ข‹์€ ๊ณณ์€ ์–ด๋””์ž…๋‹ˆ๊นŒ? https://docs.python.org/3/reference/lexical_analysis.html#grammar -token-identifier๊ฐ€ ์žˆ์ง€๋งŒ ์ปดํ“จํ„ฐ ๊ณผํ•™์— ๋Œ€ํ•œ ๋ฐฐ๊ฒฝ ์ง€์‹์ด ์—†๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋Š” ์‹ค์ œ๋กœ ์‚ฌ์šฉ์ž ์นœํ™”์ ์ด๊ฑฐ๋‚˜ ์ฝ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์งˆ๋ฌธํ•˜๋Š” ์ด์œ ๋Š” ์‹ค์ œ ์ดˆ๊ธฐ ๋ถˆ๋งŒ ์‚ฌํ•ญ์ด ์‹ค์ œ๋กœ ์ฒ˜๋ฆฌ๋˜์—ˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋ญ”๊ฐ€ ์ž˜๋ชป๋˜์—ˆ๋‹ค๋Š” ๊ฒฝ๊ณ ๊ฐ€ ์žˆ์„ ๋ฟ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ •ํ™•ํžˆ ๋ฌด์—‡์„, ๊ทธ๋ฆฌ๊ณ  ์–ด๋–ป๊ฒŒ - ๊ธฐ๊บผ์ด ๋˜๋Š” ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด - ์œ ํšจํ•œ ๊ทธ๋ฃน ์ด๋ฆ„์„ ์‹ค์ œ๋กœ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ์•„๋‚ด๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋งŽ์€ ํŒŒ๊ณ ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. "๊ทธ๋ฃน ์ด๋ฆ„ foo-bar ์— ์ž˜๋ชป๋œ ๋ฌธ์ž๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค( - ). ์œ ํšจํ•œ ๊ทธ๋ฃน ์ด๋ฆ„์€ ์œ ํšจํ•œ Python ์‹๋ณ„์ž์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค(์ž์„ธํ•œ ๋‚ด์šฉ์€ https://docs.python.org/??? ์ฐธ์กฐ)" "๋‚˜์œ ๋ฌธ์ž๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. -vvvv๋กœ ๋‹ค์‹œ ํ™•์ธํ•˜์—ฌ ์‹ค์ œ๋กœ ์–ด๋–ค ๋ฌธ์ž๋ฅผ ์ฐพ์œผ์‹ญ์‹œ์˜ค!"๋ผ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ด์ƒ์ ์œผ๋กœ๋Š” ์ด๊ฒƒ์ด ๋น„ํ™œ์„ฑํ™”๋  ์ˆ˜ ์žˆ์ง€๋งŒ ๋‹ค๋ฅธ ์˜ˆ๊ธฐ์น˜ ์•Š์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ์„ ์–ธ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: Ansible์ด foo-bar , foo.bar ๋ฐ foo_bar ๊ทธ๋ฃน์„ ๊ตฌ๋ณ„ํ•˜๊ธฐ ์–ด๋ ต๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€). ).

ํ˜„์žฌ๋Š” "๋‹น์‹ ์ด ๋ญ”๊ฐ€ ์ž˜๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ์ˆ˜์ •ํ•˜์‹ญ์‹œ์˜ค"๋ผ๋Š” ๋ฉ”์‹œ์ง€์— ๋” ๊ฐ€๊น๊ณ  ์—ฌ๊ธฐ์— ๊ฐ•๋ ฅํ•œ ์‘๋‹ต์— ๊ธฐ์—ฌํ–ˆ์„ ์ˆ˜๋„ ์žˆ๋Š” ์ง„ํ–‰ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋ช…ํ™•ํ•œ ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค.

@geerlingguy ๊ฐ€ ๋Œ“๊ธ€ 56930์— ์ผ์Šต๋‹ˆ๋‹ค.

(ansible.cfg์—์„œ force_valid_group_names = false๋กœ ์„ค์ •ํ•  ๋•Œ๊นŒ์ง€)

์„ค๋ช…์„œ ์—๋Š” ์ด ํ‚ค์˜ ์œ ํšจํ•œ ๊ฐ’์œผ๋กœ '๊ฑฐ์ง“'์ด ์–ธ๊ธ‰

์ด์ „ ๋Œ“๊ธ€์˜ @bcoca :

์ด ๋ง์„ ํ•œ ๋ฒˆ๋งŒ ํ•˜์ž๋ฉด, ๊ทธ๋ฃน ์ด๋ฆ„์— ๋Œ€์‹œ๋ฅผ ํ•ญ์ƒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” ์•„๋‹ˆ์ง€๋งŒ ํ˜„์žฌ '์œ ํšจํ•˜์ง€ ์•Š์€' ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋˜๋Š” ์  ๋ฐ ๊ธฐํƒ€ ๋ฌธ์ž๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด '๊ธฐ๋ณธ๊ฐ’'์€ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋ฉฐ ๊ธฐ๋ณธ๊ฐ’์€ 2.11์—์„œ '์•ˆ์ „'ํ•˜์ง€๋งŒ ํ•ญ์ƒ ์ด์ „ ๋™์ž‘์— '์„ ํƒ'ํ•  ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ ๋™์ž‘์„ ๋ณด์กดํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๋ฐ˜๋ณตํ•ด์„œ ๋ง์”€ํ•˜์…จ์ง€๋งŒ ์ด๋ฅผ _์ง€๊ธˆ_ ์ˆ˜ํ–‰ํ•˜๊ณ  ์‚ฌ์šฉ ์ค‘๋‹จ ๊ฒฝ๊ณ ๋ฅผ ์Šค์ฟผ์‹œํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ •ํ™•ํ•œ ansible.cfg ์„ค์ •์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

@geerlingguy ๊ฐ€ ๋Œ“๊ธ€ 56930์— ์“ด ๊ฒƒ์ฒ˜๋Ÿผ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค.

(ansible.cfg์—์„œ force_valid_group_names = false๋กœ ์„ค์ •ํ•  ๋•Œ๊นŒ์ง€)

ํ•˜์ดํ”ˆ์ด ์žˆ๋Š” ํ˜ธ์ŠคํŠธ ๋˜๋Š” ๊ทธ๋ฃน์„ ์ฐพ์„ ์ˆ˜ ์—†์„ ๋•Œ ๋‚ด ํ”Œ๋ ˆ์ด๋ถ์ด ์‹คํŒจํ•˜๋Š” ์›์ธ์ด ๋ฉ๋‹ˆ๋‹ค(์šฐ๋ฆฌ๊ฐ€ BTW๋ฅผ ์ž‘์„ฑํ•œ ์ธ๋ฒคํ† ๋ฆฌ ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ ๋“ค์–ด์˜ค๊ณ , ํ…Œ์ œ๋„ ๋ณ€ํ™˜์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด Ansible์—์„œ ์ธ๋ฒคํ† ๋ฆฌ๋ฅผ ์ˆ˜์ง‘ํ•  ๋•Œ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๊นŒ? ํ”Œ๋Ÿฌ๊ทธ์ธ?)

@geerlingguy ๊ฐ€ ๋Œ“๊ธ€ 56930์— ์“ด ๊ฒƒ์ฒ˜๋Ÿผ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค.

(ansible.cfg์—์„œ force_valid_group_names = false๋กœ ์„ค์ •ํ•  ๋•Œ๊นŒ์ง€)

ํ•˜์ดํ”ˆ์ด ์žˆ๋Š” ํ˜ธ์ŠคํŠธ ๋˜๋Š” ๊ทธ๋ฃน์„ ์ฐพ์„ ์ˆ˜ ์—†์„ ๋•Œ ๋‚ด ํ”Œ๋ ˆ์ด๋ถ์ด ์‹คํŒจํ•˜๋Š” ์›์ธ์ด ๋ฉ๋‹ˆ๋‹ค(์šฐ๋ฆฌ๊ฐ€ BTW๋ฅผ ์ž‘์„ฑํ•œ ์ธ๋ฒคํ† ๋ฆฌ ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ ๋“ค์–ด์˜ค๊ณ , ํ…Œ์ œ๋„ ๋ณ€ํ™˜์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด Ansible์—์„œ ์ธ๋ฒคํ† ๋ฆฌ๋ฅผ ์ˆ˜์ง‘ํ•  ๋•Œ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๊นŒ? ํ”Œ๋Ÿฌ๊ทธ์ธ?)

์ด๊ฒƒ์€ ์—ฌ๋Ÿฌ ์ฃผ์„ ์—์„œ ์–ธ๊ธ‰๋˜์—ˆ์œผ๋ฉฐ ์„ค๋ช…์„œ์— ์žˆ์Šต๋‹ˆ๋‹ค. Never ๋˜๋Š” ignore ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด 'us-east-1', 'us-east-2' ๋“ฑ์œผ๋กœ ๋ชจ๋“  ๊ฒƒ์„ ๊ทธ๋ฃนํ™”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— EC2 ๋™์  ์ธ๋ฒคํ† ๋ฆฌ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ์—…๋ฐ์ดํŠธํ•  ๊ณ„ํš์ด ์žˆ๋‚˜์š”? ๋ฐฉ๊ธˆ EC2 ๋™์  ์ธ๋ฒคํ† ๋ฆฌ ์Šคํฌ๋ฆฝํŠธ์— ๋Œ€ํ•œ Ansible ์„ค๋ช…์„œ๋กœ ์ด๋™ํ–ˆ๋Š”๋ฐ Github์—์„œ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋Š” ๋งํฌ๊ฐ€ ๋” ์ด์ƒ ์ž‘๋™ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ํฅ๋ฏธ๋กญ์Šต๋‹ˆ๋‹ค.

๋ฐฉ๊ธˆ EC2 ๋™์  ์ธ๋ฒคํ† ๋ฆฌ ์Šคํฌ๋ฆฝํŠธ์— ๋Œ€ํ•œ Ansible ์„ค๋ช…์„œ๋กœ ์ด๋™ํ–ˆ๋Š”๋ฐ Github์—์„œ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋Š” ๋งํฌ๊ฐ€ ๋” ์ด์ƒ ์ž‘๋™ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ํฅ๋ฏธ๋กญ์Šต๋‹ˆ๋‹ค.

https://github.com/ansible/ansible/issues/68419 ์ฐธ์กฐ

IRC ๋กœ๊ทธ๋ฅผ ์ฝ๋Š” ๊ฒƒ์„ ๊ท€์ฐฎ๊ฒŒ ์—ฌ๊ธฐ์ง€ ์•Š๋Š” ๋ถ„๋“ค์„ ์œ„ํ•ด ๊ฒฐ์ • ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๊ฒฐ์ • ์‚ฌํ•ญ์ด ์—†์Šต๋‹ˆ๋‹ค.

19:15:40 <sivel> I've got to say, that brining this topic up all the time isn't a good use of time
19:15:52 <cyberpear> bcoca nominated it
19:16:07 <felixfontein> I think the aim was to solve this once and for all (like, again :) )
19:16:29 <cyberpear> since bcoca is not here, move on to next topic?
19:16:34 <sivel> honestly, I don't think this is going to be the right forum to make a decision on this
19:16:45 <jillr> +2 moving on
19:16:47 <cyberpear> sivel: what's the correct forum?
19:16:55 <felixfontein> sivel: what is the right forum for making that decision?
19:17:02 <cyberpear> "declaration from Red Hat On High"?
19:17:15 <sivel> I'm going to abstain on that, but this project is not a democracy
19:17:16 <cyberpear> -1 to "declaration from Red Hat On High"
19:17:24 <sivel> too many cooks in the kitchen distract
19:17:45 <sivel> We know the arguments at this point
19:17:59 <sivel> anywho, next topic

์˜ˆ, ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ "ML ๋˜๋Š” IRC์— ์ž์œ ๋กญ๊ฒŒ ๋“ค๋ฅด์‹ญ์‹œ์˜ค"๋ผ๊ณ  ์ผ์Šต๋‹ˆ๋‹ค. ์•„๋‹ˆ์š”, "์ด ํ”„๋กœ์ ํŠธ๋Š” ๋ฏผ์ฃผ์ฃผ์˜๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค."

์˜ˆ, ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ "ML ๋˜๋Š” IRC์— ์ž์œ ๋กญ๊ฒŒ ๋“ค๋ฅด์‹ญ์‹œ์˜ค"๋ผ๊ณ  ์ผ์Šต๋‹ˆ๋‹ค. ์•„๋‹ˆ์š”, "์ด ํ”„๋กœ์ ํŠธ๋Š” ๋ฏผ์ฃผ์ฃผ์˜๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค."

์†”์งํžˆ ๋งํ•ด์„œ ์ด๊ฒƒ์€ ์˜คํ”ˆ ์†Œ์Šค์—์„œ ์ž˜๋ชป๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค - ๋Œ€์ค‘์ ์ด์ง€ ์•Š์€ ๋ฐฉ์‹์œผ๋กœ ์ด์–ด์ง„๋‹ค๋ฉด ์‚ฌ๋žŒ๋“ค์ด ๊ทธ๊ฒƒ์„ ํฌํฌํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ํฌํฌ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š” asible์—์„œ PR์„ ๋ฐ›์•„๋“ค์ด๋Š” ๊ฒƒ์ด ์—„์ฒญ๋‚˜๊ฒŒ ๋Š๋ฆฌ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŒจ์น˜๋Š” ๋ถ„๋ช…ํžˆ ํ•„์š”ํ•˜๊ณ  ๊ฐ„๋‹จํ•œ ๋ณ€๊ฒฝ์œผ๋กœ ๋ณด์ด์ง€๋งŒ ๊ฒฐ์ฝ” ๋“ค์–ด๊ฐ€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์šด ์ข‹๊ฒŒ๋„ Asible ์ž์ฒด๋Š” ์‚ฌ๋žŒ๋“ค์ด ์‚ฌ์šฉ์ž ์ •์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์œ ์—ฐํ•˜์ง€๋งŒ ์˜ค๋ž˜๋˜๋ฉด ๊ธฐ์—ฌ๋„๊ฐ€ ๋‚ฎ์•„์ง€๊ฑฐ๋‚˜ ํ›จ์”ฌ ๋” ๋ฒˆ๊ฑฐ๋กœ์šด ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

์•ฝ๊ฐ„ ์Šฌํ”ˆ ๋Š๋‚Œ, ์ •๋ง ...

@sunshine69 ๋„ˆ์˜ ๊ณ ํ†ต์ด ๋Š๊ปด์ง„๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ IRC๋‚˜ Google Group for Ansible Development์—์„œ ์ด๋ฃจ์–ด์ ธ์•ผ ํ•˜๋Š” ํ† ๋ก ์ž…๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” ์ ์ ˆํ•œ ์œ„์น˜๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์†Œ์ˆ˜์˜ ์‚ฌ๋žŒ๋“ค์ด ์—ฌ๊ธฐ๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

@sunshine69 ๋„ˆ์˜ ๊ณ ํ†ต์ด ๋Š๊ปด์ง„๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ IRC๋‚˜ Google Group for Ansible Development์—์„œ ์ด๋ฃจ์–ด์ ธ์•ผ ํ•˜๋Š” ํ† ๋ก ์ž…๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” ์ ์ ˆํ•œ ์œ„์น˜๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์†Œ์ˆ˜์˜ ์‚ฌ๋žŒ๋“ค์ด ์—ฌ๊ธฐ๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋‹ค๋ฅธ ์ฑ„๋„์—์„œ ํ† ๋ก ์ด ๋” ์ƒ์‚ฐ์ ์ผ ์ˆ˜ ์žˆ์ง€๋งŒ ํŠนํžˆ ์ด ๋ฌธ์ œ๋ฅผ ๋”ฐ๋ฅด๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ํˆฌ๋ช…์„ฑ์„ ๋†’์ด ํ‰๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. IRC๋Š” ๊ฒฐ๊ตญ ๋ชจ๋“  ์‚ฌ๋žŒ์˜ ์„ ํ˜ธ๋„๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

์ฐธ๊ณ : TRANSFORM_INVALID_GROUP_CHARS ์—

์„ค๋ช…์—์„œ ์‹๋ณ„๋œ ํŒŒ์ผ:

์ด ํŒŒ์ผ์ด ์ž˜๋ชป๋œ ๊ฒฝ์šฐ ์„ค๋ช…์˜ component name ์„น์…˜์„ ์—…๋ฐ์ดํŠธํ•˜๊ฑฐ๋‚˜ !component ๋ด‡ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.

๋ด‡ ๋„์›€๋ง์„ ๋ณด๋ ค๋ฉด ์—ฌ๊ธฐ๋ฅผ ํด๋ฆญํ•˜์„ธ์š”.

force_valid_group_names = ignore ์„ค์ •ํ–ˆ์„ ๋•Œ WARNING ์€ ์‚ฌ๋ผ์กŒ์ง€ ๋งŒ

๋งˆ์ง€๋ง‰์œผ๋กœ ๋ฌธ์„œ์—์„œ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. force_valid_group_names = silently ๋Œ€์ฒด๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ์ถœ๋ ฅ์„ ๋ง‰ํžˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์• ์ดˆ์— ์ด์™€ ๊ฐ™์€ ๋ฌด์˜๋ฏธํ•œ ๋ณ€๊ฒฝ์ด ์—†์—ˆ๋‹ค๋ฉด ์ด ๋ชจ๋“  ๋ฌธ์ œ๋Š” ์• ์ดˆ์— ํ”ผํ•  ์ˆ˜ ์žˆ์—ˆ์„ ๊ฒƒ์ด๋‹ค.

@emmm-dee - ํ•ด๋‹น ํŠน์ • ๋ฌธ์ œ์— ๋Œ€ํ•ด https://github.com/ansible/ansible/issues/70908์„ ์—ด์—ˆ์Šต๋‹ˆ๋‹ค. _are_ '์œ ํšจํ•œ' ๊ทธ๋ฃน ๋ฌธ์ž์— ๋Œ€ํ•œ ๊ณต์‹ ๋ฌธ์„œ๊ฐ€ ์•„์ง ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ฌธ์ œ๋Š” ์—ฌ์ „ํžˆ ์ง€์†๋ฉ๋‹ˆ๋‹ค. .

ํ–‰๋™์— ๋Œ€ํ•ด @geerlingguy ์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ๋‹น์‹ ์€ ๋” ๋‚˜์€ ๊ฒƒ์„ ๋งŒ๋“œ๋Š” ์‚ฌ๋žŒ์ž…๋‹ˆ๋‹ค.

๋ฐ”์šด์Šค(์‹œ์ž‘/์ค‘์ง€)๋ฅผ ์œ„ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•ด ์ผํ•˜๊ณ  ์žˆ์ง€๋งŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ˜ธ์ŠคํŠธ์™€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‹น์‹ ์ด ๋ณด๋‚ธ ping ๋ช…๋ น์„ ์‹œ๋„ํ–ˆ๊ณ  ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค ...

[ webadmin@vlodjumpts00 ~]$ ํ•‘ 8.8.8.8

PING 8.8.8.8 (8.8.8.8) 56(84) ๋ฐ”์ดํŠธ ๋ฐ์ดํ„ฐ.

8.8.8.8์—์„œ 64๋ฐ”์ดํŠธ: icmp_seq=1 ttl=112 ์‹œ๊ฐ„=10.6ms

[ webadmin@vlodjumpts00 ~]$ mirrorlist.centos.org

-bash: mirrorlist.centos.org: ๋ช…๋ น์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ

๋‚˜๋Š” ์ด๊ฒƒ์„ ์šฐ๋ฆฌ ์กฐ์ง์— ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. "ansible all -m ping" ๋ช…๋ น์„ ์‹คํ–‰ํ–ˆ๋‹ค๋ฉด. ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋‹ค์Œ์€ ์„ธ๋ถ€์ •๋ณด์ž…๋‹ˆ๋‹ค.

[ aa63457@vlodjumpts00 bin]$ ansible all -m ping

๋ณ€๊ฒฝ๋˜์ง€๋งŒ ์‚ฌ์šฉ ์ค‘๋‹จ ์‹œ ์—ฌ์ „ํžˆ ์‚ฌ์šฉ์ž๊ฐ€ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ ๋ฒ„์ „ 2.10์—์„œ ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ ์ค‘๋‹จ ๊ฒฝ๊ณ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ansible.cfg์—์„œ deprecation_warnings=False๋ฅผ ์„ค์ •ํ•˜์—ฌ ๋น„ํ™œ์„ฑํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

RTE3EP๊ด€๋ฆฌ์ž | ๋„๋‹ฌํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค! => {

"changed": false,

"msg": "Failed to connect to the host via ssh: ###############################################################################\n# CenturyLink computers and the CenturyLink computer network are CenturyLink  #\n# property. Only authorized persons may use them and only for legal and proper#\n# purposes as determined solely by CenturyLink. You consent to the monitoring #\n# of their use. You must use CenturyLink computers and the network in         #\n# accordance with the CenturyLink Code of Conduct, subject to discipline for  #\n# misuse. Customer use is governed by the CenturyLink Acceptable Use Policy.  #\n###############################################################################\nUse CTL credentials (login/password) on this server.\nAUTH-NOTICE:\nAUTH-NOTICE: Use your cuid as your username\nAUTH-NOTICE:\nPermission denied (publickey,password).",

"unreachable": true

}

๋กœ์ปฌ ํ˜ธ์ŠคํŠธ | ์„ฑ๊ณต => {

"ansible_facts": {

    "discovered_interpreter_python": "/usr/bin/python"

},

"changed": false,

"ping": "pong"

}

๋„์™€์ฃผ์„ธ์š”... ์ด ์ผ์„ ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•˜๋‚˜์š”? ์‚ฌ์‹ค ํ˜ธ์ŠคํŠธ ๋จธ์‹ ์„ ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ UN/PWD for hosts ํŒŒ์ผ์ด ์—†์Šต๋‹ˆ๋‹ค..

๋กœ์ปฌ ํ˜ธ์ŠคํŠธ ansible_connection=๋กœ์ปฌ

[RTE3VFO]

RTE3VFOAdmin ansible_host=vlddwblasts001.test.intranet

RTE3VFO๊ด€๋ฆฌ๋˜๋Š” ansible_host=vlddwblasts002.test.intranet

[RTE3EP]

RTE3EPAdmin ansible_host=vlddwblasts002.test.intranet

RTE3EP๊ด€๋ฆฌ๋˜๋Š” ansible_host=vlddwblasts003.test.intranet

[RTE3RES]

RTE3RESAdmin ansible_host=vlddwblasts003.test.intranet

RTE3RESA๊ด€๋ฆฌ๋˜๋Š” ansible_host=vlddwblasts004.test.intranet

[RTE3ORCH]

RTE3ORCHAdmin ansible_host=vlddwblasts004.test.intranet

RTE3ORCH๊ด€๋ฆฌ๋˜๋Š” ansible_host=vlddwblasts005.test.intranet

[RTE3EASE]

RTE3EASEAdmin ansible_host=vlddwblasts005.test.intranet

RTE3EASE๊ด€๋ฆฌ๋˜๋Š” ansible_host=vlddwblasts006.test.intranet

[RTE3RTS]

RTE3RTSAdmin ansibke_host=vlddwblasts006.test.intranet

[EASE-ASR-Test2:์–ด๋ฆฐ์ด]

RTE3VFO

RTE3EP

RTE3RES

RTE3ORCH

RTE3EASE

RTE3RTS

๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

[ webadmin@vlodjumpts00 ๊ฐ€๋Šฅ]$ pwd

/etc/ansible

[ webadmin@vlodjumpts00 ansible]$ ll

์ด 84

-rw------- 1 webadmin webadmin 607 2017๋…„ 7์›” 12์ผ 1

-rw-r--r-- 1 webadmin webadmin 17910 9์›” 19์ผ 09:55 ansible.cfg

-rw-r--r-- 1 ๋ฃจํŠธ ๋ฃจํŠธ 19985 2019๋…„ 12์›” 8์ผ ansible.cfg.rpmnew

-rw------- 1 webadmin webadmin 213 7์›” 3 2017 easyasr-rte2-ease.yml

-rwxr-xr-x 1 webadmin webadmin 1034 9์›” 19์ผ 09:16 easy-hosts

-rwxr-xr-x 1 webadmin webadmin 1647 9์›” 19์ผ 10:50 ํ˜ธ์ŠคํŠธ

-rw------- 1 webadmin webadmin 2679 2017๋…„ 7์›” 3์ผ hosts.bkp

-rw------- 1 webadmin webadmin 273 7์›” 6 2017 lineinsfile_tst.yml

drwx ------ 4 webadmin webadmin 4096 2017๋…„ 11์›” 2์ผ ํ”Œ๋ ˆ์ด๋ถ

drwxr-xr-x 3 ๋ฃจํŠธ ๋ฃจํŠธ 2019๋…„ 12์›” 8์ผ ์—ญํ• 

-rwxr-xr-x 1 webadmin webadmin 7321 2017๋…„ 11์›” 2์ผ servmix_hosts

-rw------- 1 webadmin webadmin 208 9์›” 19์ผ 10:55 test.yml

-rw------- 1 webadmin webadmin 122 Sep 19 10:54 vars.yaml


์šฐ๋ฆฌ๋Š” ํ˜ธ์ŠคํŠธ์— ์ง์ ‘ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค ... ๋จผ์ € ์ ํ”„ ์„œ๋ฒ„์— ๋กœ๊ทธ์ธํ•˜๊ณ  ssh ํ˜ธ์ŠคํŠธ๋ณด๋‹ค ...

์ ํ”„ ์„œ๋ฒ„๋Š” =22, ์—ฐ๊ฒฐ ์œ ํ˜•=ssh๋ฅผ ์‚ฌ์šฉํ•˜๋Š” "vmdcltctws217" ํฌํŠธ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ UN/PWD๋กœ ์ž…๋ ฅํ•˜์‹ญ์‹œ์˜ค.

๊ทธ ํ›„ ์šฐ๋ฆฌ๋Š” ํ˜ธ์ŠคํŠธ ์„œ๋ฒ„์— ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด sudo๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

sudo su - easysqa

๊ทธ๋Ÿฐ ๋‹ค์Œ ssh ํ˜ธ์ŠคํŠธ ์„œ๋ฒ„์™€ ๊ฐ™์€ ..

vlddwblasts001.test.intranet

๊ทธ๋Ÿฐ ๋‹ค์Œ ์—ฌ๊ธฐ์—์„œ ์‹œ์ž‘/์ค‘์ง€ ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๋„์™€์ฃผ์„ธ์š”. ๋ฌด์—‡์„ ์œ„ํ•ด ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰