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 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)]
ํด๋น ์ฌํญ ์์
ํด๋น ์ฌํญ ์์
ํด๋น ์ฌํญ ์์
์ค๋ช ์์ ์๋ณ๋ ํ์ผ:
์ด ํ์ผ์ด ์ ํํ์ง ์์ผ๋ฉด ์ค๋ช
์ 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์ ๋ณด๋ด์ฃผ์๋ฉด ๋๋จํ ๊ฐ์ฌํ๊ฒ ์ต๋๋ค...
@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์ ๋ ์ด์ ์ฆ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํธ์คํธ ์ด๋ฆ์ ๋ฐ์ค์ ํฌํจํ ์ ์์ผ๋ฏ๋ก ์ ์์ ์ธ ์ํฉ์์๋ ์ธ๋ฒคํ ๋ฆฌ_ํธ์คํธ ์ด๋ฆ์ด ๊ฐ์ ๋ก ์ ์ฉ๋์ง ์์ต๋๋ค. ์ฆ, ๋ฐ์ค์ ํฌํจํ ์ ์๋ ํธ์คํธ ์ด๋ฆ๊ณผ ํ์ดํ์ ํฌํจํ ์ ์๋ ๊ทธ๋ฃน๊ณผ ํจ๊ป ์ธ๋ฒคํ ๋ฆฌ๊ฐ ๋งค์ฐ ์ผ๊ด์ฑ์ด ์์ด ๋ณด์ ๋๋ค.
๊ธฐ๋ณธ๊ฐ์ ๋ณ๊ฒฝํ์ง ๋ง์ญ์์ค.
์๋
ํ์ธ์,
๋๋ ์ฌ๊ธฐ ์์
๊ทธ๋ฌ๋ ์์์ @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๋ฅผ ์ธ๋ถ ์ธ๋ฒคํ ๋ฆฌ๋ก ์ฌ์ฉํ๊ณ ์ ์ดํ์ง ์์ผ๋ฉฐ ๋ฐ์ค ๋์ ๋์๊ฐ ์๋ ๋ง์ ํธ์คํธ ๊ทธ๋ฃน์ ํฌํจํฉ๋๋ค. ์ด๊ฒ์ ๋ณ๊ฒฝ๋์ง ์์ต๋๋ค(ํด๋น ์ด๋ฆ์ ์ฌ์ฉํ์ฌ ์กด์ฌํ๋ ๋ค๋ฅธ ๋ชจ๋ ํญ๋ชฉ ๋๋ฌธ์).
๋ฐ๋ผ์ ๋ค์์ด ํ์ํฉ๋๋ค.
์ฐธ๊ณ ๋ก ํ๋ณด 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
๊ทธ๋ฃน์ ๊ตฌ๋ณํ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋๋ ๊ฒ๊ณผ ๊ฐ์). ).
ํ์ฌ๋ "๋น์ ์ด ๋ญ๊ฐ ์๋ชปํ์ต๋๋ค. ์์ ํ์ญ์์ค"๋ผ๋ ๋ฉ์์ง์ ๋ ๊ฐ๊น๊ณ ์ฌ๊ธฐ์ ๊ฐ๋ ฅํ ์๋ต์ ๊ธฐ์ฌํ์ ์๋ ์๋ ์งํ ๋ฐฉ๋ฒ์ ๋ํ ๋ช ํํ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
์ด์ ๋๊ธ์ @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์์ ๋ค์ด๋ก๋ํ ์ ์๋ ๋งํฌ๊ฐ ๋ ์ด์ ์๋ํ์ง ์์ผ๋ฏ๋ก ํฅ๋ฏธ๋กญ์ต๋๋ค.
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
๊ทธ๋ฐ ๋ค์ ์ฌ๊ธฐ์์ ์์/์ค์ง ๋ช ๋ น์ ์คํํฉ๋๋ค.
๋์์ฃผ์ธ์. ๋ฌด์์ ์ํด ํ ์ ์์ต๋๊น?
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๊ทธ๋ฃน ์ด๋ฆ์์ ๋์๋ฅผ ์ญ์ ํ ์ด์ ๋ ๋ฌด์์ ๋๊น? ํนํ ๋ง์ ์ฝ๋ ๋ฆฌํฉํ ๋ง์ด ํ์ํ๊ธฐ ๋๋ฌธ์ ์ด์ ๋ํ ํฉ๋นํ ์ด์ ๋ฅผ ์ฐพ๊ธฐ ์ํด ๊ณ ๊ตฐ๋ถํฌํฉ๋๋ค.