Ansible: TRANSFORM_INVALID_GROUP_CHARS рдорд╛рдиреНрдп рд╕рдореВрд╣ рдкреИрдЯрд░реНрди рдХрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬреАрдХрд░рдг рдирд╣реАрдВ рдХрд░рддрд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 24 рдордИ 2019  ┬╖  104рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: ansible/ansible



рд╕рд╛рд░рд╛рдВрд╢

TRANSFORM_INVALID_GROUP_CHARS рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЗ рд╕рд╛рдеред рд╕реНрд░реЛрдд рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдерд╛ рдХрд┐ рдХрд┐рди рд╡рд░реНрдгреЛрдВ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреЗрд╡рд▓ рдпрд╣ рдХрд┐ рдЪреЗрддрд╛рд╡рдиреА ( -vvvv ) рдмрддрд╛рддреА рд╣реИ рдХрд┐ рдЖрдк рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреМрди рд╕реЗ рд╡рд░реНрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЕрдорд╛рдиреНрдп рд╣реИрдВред

рдХреГрдкрдпрд╛ рд╕реНрдкрд╖реНрдЯ рдХрд░реЗрдВ рдХрд┐ рдЖрдк рдирд╛рдореЛрдВ рдХреЛ рд╡реИрдз рдкрд╛рдпрдерди рд╡рд░реНрд░реНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рджрдмрд╛ рд░рд╣реЗ рд╣реИрдВред рдпрд╣ 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)]
рд╡рд┐рдиреНрдпрд╛рд╕

рдПрди/рдП

рдУрдПрд╕ / рдкрд░реНрдпрд╛рд╡рд░рдг

рдПрди/рдП

рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА

рдПрди/рдП

affects_2.8 docs has_pr module core system

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рд╕рдореВрд╣ рдХреЗ рдирд╛рдореЛрдВ рд╕реЗ рдбреИрд╢ рд╣рдЯрд╛рдиреЗ рдХреЗ рдкреАрдЫреЗ рдХреНрдпрд╛ рддрд░реНрдХ рдерд╛? рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреЗ рдХрд╛рд░рдг рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдШрд░реНрд╖ рдХрд░рддрд╛ рд╣реВрдВ, рдЦрд╛рд╕рдХрд░ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреЛрдб рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рд╕рднреА 104 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рд╡рд┐рд╡рд░рдг рдореЗрдВ рдкрд╣рдЪрд╛рдиреА рдЧрдИ рдлрд╝рд╛рдЗрд▓реЗрдВ:

рдЕрдЧрд░ рдпреЗ рдлрд╝рд╛рдЗрд▓реЗрдВ рдЧрд▓рдд рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рд╡рд┐рд╡рд░рдг рдХреЗ component name рдЕрдиреБрднрд╛рдЧ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ рдпрд╛ !component bot рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рдмреЙрдЯ рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ

рдореБрдЭреЗ рдпрд╣ рдЪреЗрддрд╛рд╡рдиреА рдорд┐рд▓рдиреА рд╢реБрд░реВ рд╣реБрдИ рд▓реЗрдХрд┐рди рдкреЛрд░реНрдЯрд┐рдВрдЧ рдЧрд╛рдЗрдб рдореЗрдВ рдХреЛрдИ рд╕рдВрджрд░реНрдн рдирд╣реАрдВ рдорд┐рд▓рд╛ рдФрд░ рдХреЛрдИ рд╕рдВрджрд░реНрдн рдирд╣реАрдВ рдорд┐рд▓рд╛ рдХрд┐ рдХреИрд╕реЗ рдпрд╛ рдХреНрдпрд╛ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдПред

рдореЗрд░реА рдЕрдзрд┐рдХрд╛рдВрд╢ рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдВ ec2.py рд╕реЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ instance_id рдиреЗ - (рдЙрджрд╛рд╣рд░рдг: i-033f62b586143dff7 ) рдФрд░ рдХреНрд╖реЗрддреНрд░реЛрдВ (рдЙрджрд╛рд╣рд░рдг: eu-central-1c ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЛрдИ рдирд╣реАрдВ рд╣реИ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрд╕рд▓реА рдлрд┐рдХреНрд╕

рдЕрдВрдд рдореЗрдВ, рдЗрд╕рдиреЗ рдореЗрд░реА рдХреБрдЫ рдкреНрд▓реЗрдмреБрдХ рдХреЛ рддреЛрдбрд╝ рджрд┐рдпрд╛, рдЬрд╣рд╛рдВ рдореИрдВрдиреЗ 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 рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣рд╛рдЗрдлрд╝рди-рдпреБрдХреНрдд рд╕рдореВрд╣ рдирд╛рдореЛрдВ рд╕реЗ рдЕрдЯреА рдкрдбрд╝реА рд╣реИрдВред рд╣рдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдбреЙрдЯ рдиреЛрдЯреЗрд╢рди рдХреЗ рд╕рд╛рде рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЙрди рд╕рднреА рдХреЛ рдмрджрд▓рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░реНрдп рд╣реЛрдЧрд╛ред рдореИрдВ рдСрдкреНрдЯ рдЖрдЙрдЯ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ рдФрд░ рд╕рд╛рде рд╣реА рд╕рд╛рде рдЕрдкрдиреА рдЯреАрдо рдХреЛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╣рд╛рдЗрдлрд╝рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░реВрдВрдЧрд╛ рдФрд░ рдЬрд╣рд╛рдВ рд╕рдВрднрд╡ рд╣реЛ рд╡рд╣рд╛рдВ рд╣рд╛рдЗрдлрд╝рди рдХреЛ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЕрдВрддрд┐рдо рднрд╛рдЧ рд╣рдореЗрд╢рд╛ рдЙрддрдирд╛ рд╕реАрдзрд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рдЬрд┐рддрдирд╛ рдпрд╣ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред

рддреЛ, рдХреНрдпрд╛ рдХреЛрдИ рдХреЗрд╡рд▓ force_valid_group_names = false рдХреЛ ansible.cfg рдореЗрдВ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ? рдпрд╣ https://github.com/ansible/ansible/commit/d241794daa6d413e6447890e2a4f11e0d818cf0e#diff -fd24ad93fbc32f454761746c1ac908f2 рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╕рд╣реА рд▓рдЧрддрд╛ рд╣реИ

рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рд╣рдорд╛рд░реА рд╕реНрдерд╛рдиреАрдп Ansible рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣рд╛рдЗрдлрд╝рди-рдпреБрдХреНрдд рд╕рдореВрд╣ рдирд╛рдореЛрдВ рд╕реЗ рдЕрдЯреА рдкрдбрд╝реА рд╣реИрдВред рд╣рдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдбреЙрдЯ рдиреЛрдЯреЗрд╢рди рдХреЗ рд╕рд╛рде рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЙрди рд╕рднреА рдХреЛ рдмрджрд▓рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░реНрдп рд╣реЛрдЧрд╛ред рдореИрдВ рдСрдкреНрдЯ рдЖрдЙрдЯ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ рдФрд░ рд╕рд╛рде рд╣реА рд╕рд╛рде рдЕрдкрдиреА рдЯреАрдо рдХреЛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╣рд╛рдЗрдлрд╝рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░реВрдВрдЧрд╛ рдФрд░ рдЬрд╣рд╛рдВ рд╕рдВрднрд╡ рд╣реЛ рд╡рд╣рд╛рдВ рд╣рд╛рдЗрдлрд╝рди рдХреЛ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЕрдВрддрд┐рдо рднрд╛рдЧ рд╣рдореЗрд╢рд╛ рдЙрддрдирд╛ рд╕реАрдзрд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рдЬрд┐рддрдирд╛ рдпрд╣ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред

рддреЛ, рдХреНрдпрд╛ рдХреЛрдИ рдХреЗрд╡рд▓ force_valid_group_names = false рдХреЛ ansible.cfg рдореЗрдВ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ? рдпрд╣ 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] рдЖрдИрдПрдирдЖрдИ-рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ ansible.cfg ред

рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рд╕рдореВрд╣реЛрдВ рдФрд░ рдЕрдорд╛рдиреНрдп рд╡рд░реНрдгреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП (рд╢рд╛рдпрдж рдЗрд╕рд▓рд┐рдП рдЖрдк рдЙрдиреНрд╣реЗрдВ рдЪрд░рдг-рдЖрдЙрдЯ рдХреЗ рд▓рд┐рдП рд▓рдХреНрд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ), рдЖрдк рдХреБрдЫ рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ рд╕реАрдПрд▓рдЖрдИ рдиреЛ-рдСрдк:

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 ред
(рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдпрд╣ рд╕рд╣реА рд▓рдЧрд╛)

рдпрджрд┐ рдЖрдкрдХреЛ рдкрджрд╛рд╡рдирддрд┐ рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдВ рдХрд╖реНрдЯрдкреНрд░рдж рд▓рдЧрддреА рд╣реИрдВ, рддреЛ рдЖрдк рдЙрд╕реА [defaults] deprecation_warnings = False рдЬреЛрдбрд╝рдХрд░ рдХрд┐рд╕реА рднреА ansible- рдХрдорд╛рдВрдб рдпрд╛ ansible рдПрдб-рд╣реЙрдХ рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЕрдХреНрд╖рдо рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред [defaults] ansible.cfg [defaults] рдЕрдиреБрднрд╛рдЧ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕рдХреЗ рдЦрд┐рд▓рд╛рдл рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВ (рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдорд╛рдЪрд╛рд░реЛрдВ рдХреЛ рдпрд╛рдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ), рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЗрдирд▓рд╛рдЗрди рд╢реЗрд▓ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
ANSIBLE_DEPRECATION_WARNINGS=False ansible-inventory --host=localhost

рд╣рд╛рд▓рд╛рдВрдХрд┐, [WARNING] s рдХреА рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдкрд╛рд░реНрд╕рд┐рдВрдЧ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдЧреАред рд╕рднреА рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдпрд╛ env var рдирд╣реАрдВ рд╣реИ (рдЕрднреА рддрдХ?), рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрдХреЛ рдкрд░реЗрд╢рд╛рди рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдк рд╕рднреА stderr рдХреЛ /dev/null рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ (рдпрд╣рд╛рдВ "рд╕рд░реНрд╡реЛрддреНрддрдо рдЕрднреНрдпрд╛рд╕" рдЪреЗрддрд╛рд╡рдиреА рдбрд╛рд▓реЗрдВ):

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

рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдХреА рдорджрдж рдХрд░рддрд╛ рд╣реИ, рдХрд╣реАрдВред

рдореБрдЭреЗ рдХреЗрд╡рд▓ рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдиреА рд╕рдВрджреЗрд╢ рдкрд░реЗрд╢рд╛рди рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рд╡реЗ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдкрде рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдХрд┐ рд╕реНрдерд╛рди рд╕реАрдорд┐рдд рд╣реИ рдФрд░ рдЙрдкрдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдЕрджреНрдпрддрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдореБрдЭреЗ рдЯрд┐рдХрдЯреЛрдВ рдХреЗ рд▓рд┐рдВрдХ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдореЗрдВ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд▓рдЧреЗрдЧрд╛ рдЬреЛ рд╕рдорд╛рдзрд╛рди, рдХрд╛рдордХрд╛рдЬ, рджрд╕реНрддрд╛рд╡реЗрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ...

рдЗрд╕ рддрд░рд╣ рдХрд╛ рдПрдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЕрдзреВрд░реЗ рдЪреЗрддрд╛рд╡рдиреА рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╕реБрдзрд╛рд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдп рдХреЛ рдмрдЪрд╛ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рд╕рдВрджреЗрд╢ рдХреЛ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЗрд╕реЗ рдХреБрдЫ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдкреБрдирд╢реНрдЪ. рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ рдореИрдВ рдХрд┐рд╕реА рдХреЛ рднреА рдЕрдиреБрд╢рдВрд╕рд╛ рдирд╣реАрдВ рдХрд░рддрд╛, рд╢рд╛рдпрдж рдХреЗрд╡рд▓ рддрднреА рдЬрдм рдХреЛрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдкрдиреЗ рдЕрдВрддрд┐рдо рднрд╛рдЧреНрдп рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣реА рд╣реЛ;)

рдореБрдЭреЗ рдпрд╣ рдЪреЗрддрд╛рд╡рдиреА рдорд┐рд▓рдиреА рд╢реБрд░реВ рд╣реБрдИ рд▓реЗрдХрд┐рди рдкреЛрд░реНрдЯрд┐рдВрдЧ рдЧрд╛рдЗрдб рдореЗрдВ рдХреЛрдИ рд╕рдВрджрд░реНрдн рдирд╣реАрдВ рдорд┐рд▓рд╛ рдФрд░ рдХреЛрдИ рд╕рдВрджрд░реНрдн рдирд╣реАрдВ рдорд┐рд▓рд╛ рдХрд┐ рдХреИрд╕реЗ рдпрд╛ рдХреНрдпрд╛ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдПред

рдореЗрд░реА рдЕрдзрд┐рдХрд╛рдВрд╢ рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдВ ec2.py рд╕реЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ instance_id рдиреЗ - (рдЙрджрд╛рд╣рд░рдг: i-033f62b586143dff7 ) рдФрд░ рдХреНрд╖реЗрддреНрд░реЛрдВ (рдЙрджрд╛рд╣рд░рдг: eu-central-1c ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЛрдИ рдирд╣реАрдВ рд╣реИ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрд╕рд▓реА рдлрд┐рдХреНрд╕

рдЕрдВрдд рдореЗрдВ, рдЗрд╕рдиреЗ рдореЗрд░реА рдХреБрдЫ рдкреНрд▓реЗрдмреБрдХ рдХреЛ рддреЛрдбрд╝ рджрд┐рдпрд╛, рдЬрд╣рд╛рдВ рдореИрдВрдиреЗ 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 рдбрд╛рдпрдиреЗрдорд┐рдХ рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдХреА рдЬрд╛ рд░рд╣реА рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрдерди рдкреНрд░рддрд┐рдзреНрд╡рдирд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдЗрдВрд╕реНрдЯреЗрдВрд╕_рдЖрдИрдбреА ( group_by_instance_id = False ) рджреНрд╡рд╛рд░рд╛ рдЧреНрд░реБрдкрд┐рдВрдЧ рд╣реЛрд╕реНрдЯ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ ec2.ini рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗрдЯрд┐рдВрдЧ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реЗрдЯрд┐рдВрдЧ рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬреИрд╕рд╛ рдореИрдВрдиреЗ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛ рдерд╛ - рдореИрдВрдиреЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд┐рдпрд╛ рдХрд┐ рдореИрдВ рд╕реНрдерд╛рдиреАрдп рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдХреИрд╢ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░ рджрд┐рдпрд╛ред

рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдИрд╕реА 2 рдЧрддрд┐рд╢реАрд▓ рд╕реВрдЪреА рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдХрд╛рдордХрд╛рдЬ?

рдпреЗ рдЕрдорд╛рдиреНрдп рд╡рд░реНрдг (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 [defaults] рдЕрдиреБрднрд╛рдЧ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕рдХреЗ рдЦрд┐рд▓рд╛рдл рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВ (рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдорд╛рдЪрд╛рд░реЛрдВ рдХреЛ рдпрд╛рдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ), рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЗрдирд▓рд╛рдЗрди рд╢реЗрд▓ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
ANSIBLE_DEPRECATION_WARNINGS=False ansible-inventory --host=localhost

рд╣рд╛рд▓рд╛рдВрдХрд┐, [WARNING] s рдХреА рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдкрд╛рд░реНрд╕рд┐рдВрдЧ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдЧреАред рд╕рднреА рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдпрд╛ env var рдирд╣реАрдВ рд╣реИ (рдЕрднреА рддрдХ?), рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрдХреЛ рдкрд░реЗрд╢рд╛рди рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдк рд╕рднреА stderr рдХреЛ /dev/null рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ (рдпрд╣рд╛рдВ "рд╕рд░реНрд╡реЛрддреНрддрдо рдЕрднреНрдпрд╛рд╕" рдЪреЗрддрд╛рд╡рдиреА рдбрд╛рд▓реЗрдВ):

рдЧреИрд░-рджрд╕реНрддрд╛рд╡реЗрдЬ ignore рд╡рд┐рдХрд▓реНрдк рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдбреЙрдХреНрд╕ рдкреАрдЖрд░ рдпрд╣рд╛рдБ: https://github.com/ansible/ansible/pull/57318

2.8.2 рд╕реЗ рд╢реБрд░реВ рд╣реЛрдХрд░, рдпрджрд┐ рдЖрдк рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХреЛрдИ рднреА рд╡рд┐рдХрд▓реНрдк рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдиреА рд░рджреНрдж рдХрд░ рджреА рдЬрд╛рдПрдЧреАред

рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд┐рд░реНрдгрдпреЛрдВ рдкрд░ рдЙрддреНрддрд░рджрд╛рдпреА рджреЗрд╡ рдЯреАрдо рдХрд╣рд╛рдБ рдЪрд░реНрдЪрд╛ рдХрд░рддреА рд╣реИ? рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рд╕рдордЭрдирд╛ рдмрд╣реБрдд рдХрдард┐рди рд╣реИред рдпрджрд┐ рдпрд╣ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рддрд░реНрдХ рдХреЗ рдмрдЬрд╛рдп рд╢реБрджреНрдз "рдкрд╛рдпрдерди рд╢реИрд▓реА" рддрд░реНрдХ рд╣реИ, рддреЛ рдпрд╣ рдкреБрдирд░реНрд╡рд┐рдЪрд╛рд░ рдХреЗ рд▓рд╛рдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ? рдпрджрд┐ рд╕рдореВрд╣ рдХреЗ рдирд╛рдореЛрдВ рдореЗрдВ рдПрдХ рдкрд╛рдиреА рдХрд╛ рдЫреАрдВрдЯрд╛ рднрд╡рд┐рд╖реНрдп рдХреЗ рд░рд┐рд▓реАрдЬ рдореЗрдВ рдЪреАрдЬреЛрдВ рдХреЛ рддреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рд╕рдореВрд╣ рдХреЗ рдирд╛рдордХрд░рдг рд╕реЗ рдЕрдзрд┐рдХ?

рдореЗрд░реЗ рд▓рд┐рдП, рдпрд╣ рдПрдХ рдХреЙрд╕реНрдореЗрдЯрд┐рдХ рдмрджрд▓рд╛рд╡ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ, рдЙрд╕ рдЪреАрдЬрд╝ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЬрд┐рд╕реЗ рдареАрдХ рд╕реЗ рд╕реЛрдЪрд╛ рдЧрдпрд╛ рд╣реИред

рдПрдХ рд╕рдореВрд╣ рдХрд╛ рдирд╛рдо рдПрдХ рдЪрд░ рдирд╛рдо рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рдХреА рд╕рд╛рдордЧреНрд░реА рд╣реИред рдПрдХ рд╣рд╛рдЗрдлрд╝рди/рдбреИрд╢ рд╕рд┐рд░реНрдл рдПрдХ рдЪрд░рд┐рддреНрд░ рд╣реИ, рдЬреЛ рдирд╛рдордХрд░рдг рд╕рдореНрдореЗрд▓рди рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рд╕рдореВрд╣рдмрджреНрдз рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдмреЗрд╣рдж рд▓реЛрдХрдкреНрд░рд┐рдп рддрд░реАрдХрд╛ рднреА рд╣реЛрддрд╛ рд╣реИред рд╡рд┐рд╕реНрдордпрд╛рджрд┐рдмреЛрдзрдХ рдмрд┐рдВрджреБ рдпрд╛ рддрд╛рд░реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ, рдЗрд╕рдХрд╛ рдПрдХ рд╕реАрдорд╛ рдЦрдВрдб рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рдЕрд░реНрде рдирд╣реАрдВ рд╣реИред

рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреА рд▓рд╛рдЧрдд рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИ, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд╣рдЬрд╛рд░реЛрдВ рд╕рд╛рдЗрдЯреЛрдВ рдХреЛ рди рдХреЗрд╡рд▓ рд╕реВрдЪреА рдореЗрдВ рд╕рдореВрд╣ рдХреЗ рдирд╛рдо рдмрджрд▓рдиреЗ рд╣реЛрдВрдЧреЗ, рдмрд▓реНрдХрд┐ рдЕрдкрдиреА рд╕рднреА рдкреНрд▓реЗрдмреБрдХ рдФрд░ рдШрд░реЗрд▓реВ рднреВрдорд┐рдХрд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреА рдЬрд╛рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдЙрди рд╕рднреА рдХрд╛ рдлрд┐рд░ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдЕрдЧрд░ "рдХрд┐рд╕рд╛рдиреЛрдВ" рдХреЗ рдкрд╛рд╕ рдЕрдкрдиреА рдЖрд╡рд╛рдЬ рд╕реБрдирд╛рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ, рддреЛ рдореИрдВ рдЕрдкрдиреА рд░рд╛рдп рдореЗрдВ рдЪрд┐рдк рд▓рдЧрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдХреИрд╕реЗ рдЖрдпрд╛ред

рдореБрдЭреЗ рдпрд╣ рд╕рдордЭрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдкрд░рд┐рд╡рд░реНрддрди ansible рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдЙрди рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреЗ рд░реВрдк рдореЗрдВ рдЧрд▓рддрд┐рдпрд╛рдБ рдХреА рдЖрдП рд╣реИрдВ groups.group-name рдмрдЬрд╛рдп groups['group-name'] ред рдПрдЖрдИрдпреВрдЖрдИ, рдпрд╣ рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рд╕рдорд░реНрдерди рдореБрджреНрджреЛрдВ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рдПрдХ рдмрджрд▓рд╛рд╡ рд╣реИред (рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдмрджрд▓рд╛рд╡ рдХрд╛ рд╡рд┐рд░реЛрдз рдХрд░рддрд╛ рд╣реВрдВред)

рдкреБрд░рд╛рдирд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рдЪрд▓реЗрдЧрд╛; рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреБрд░рд╛рдиреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЪреБрдиреЗ рдмрд┐рдирд╛ рдЕрдиреБрдкрд▓рдмреНрдз рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рд╕реБрди рдХрд░ рджреБрдЦ рд╣реБрдЖред

рдореЗрд░рд╛ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВ рдПрдХ рд╡реИрдЧреНрд░рд╛рдВрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ "ansible-inventory" рдХрдорд╛рдВрдб рдХреЛ рдПрдореНрдмреЗрдб рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЬрд╣рд╛рдВ рдЪреАрдЬреЛрдВ рдХреЛ ansible.cfg рдореЗрдВ рд░рдЦрдирд╛ рдЕрд╕рднреНрдп рд╣реИ, рдФрд░ рдпрд╣ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред рдПрдХ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░ (рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдирд╣реАрдВ)ред

рдЖрдорддреМрд░ рдкрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдмрджрд▓рд╛рд╡ рдЕрдЪреНрдЫреЗ рдЗрд░рд╛рджреЛрдВ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╣рдореЗрд╢рд╛ рдЙрд╕ рдкрд░рд┐рдгрд╛рдо рдХреА рдУрд░ рди рд▓реЗ рдЬрд╛рдП рдЬреЛ рдХрд┐рд╕реА рдХреЗ рдорди рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред

рдЗрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕рд╛рде рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╕рдореВрд╣ рдХреЗ рдирд╛рдо рдЕрдм рдХреБрдЫ рд╣рдж рддрдХ "рд╡рд┐рд╢реЗрд╖" рд╣реЛ рдЧрдП рд╣реИрдВ - рдореЗрдЬрдмрд╛рди рдирд╛рдореЛрдВ рдореЗрдВ рдбреИрд╢ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдореВрд╣ рдирд╛рдореЛрдВ рдореЗрдВ рдирд╣реАрдВ, рдЬреЛ hosts: рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдПрдХ рдкреНрд▓реЗрдмреБрдХ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рдЕрдЬреАрдм рдмрдирд╛рддрд╛ рд╣реИред рдореИрдВ рдореЗрдЬрдмрд╛рди рдФрд░/рдпрд╛ рд╕рдореВрд╣ рдХреЗ рдирд╛рдо рд▓рд┐рдЦ рд╕рдХрддрд╛ рдерд╛ред

рдХреНрдпрд╛ @sivel рджреНрд╡рд╛рд░рд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рдмрджрд▓рд╛рд╡ рдХреЗ рдкреАрдЫреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рдХрд╛рд░рдг рд╣реИ? рдлрд┐рд░ hosvars['foo-host'] рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рднреА рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рд╣реЛрд╕реНрдЯ рдирд╛рдореЛрдВ рдореЗрдВ рднреА рдбреИрд╢ рдХреЛ рдЕрдорд╛рдиреНрдп рд╡рд░реНрдг рдмрдирд╛рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ ...
hostvars рдЕрд▓рд╛рд╡рд╛ рдРрд╕реЗ рдХрдИ рдЕрдиреНрдп рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ рдЬрд╣рд╛рдВ "рдбреЙрдЯ-рдиреЛрдЯреЗрд╢рди" рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рдХреМрди рд╕рд╛ рдлреЙрд░реНрдо рдХрдм рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдореВрд╣ рдирд╛рдореЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордирдорд╛рдирд╛ рд╣реИред

рдЬрдмрдХрд┐ рдбреЙрдЯ-рдиреЛрдЯреЗрд╢рди рддрд░реНрдХ рдХреБрдЫ рд╣рдж рддрдХ рд╡реИрдз рдмрд╣рд╛рдирд╛ рд╣реИ, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд┐рдП рдмрд┐рдирд╛ рдЖрдкрдХреЗ рд╕рдорд░реНрдерди рдореБрджреНрджреЛрдВ рдХреЛ рдареАрдХ рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреБрдЫ рдмреЗрд╡рдХреВрдлреА рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред рд╕рднреА рджреЗрд╡ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЕрд▓рдЧ-рдерд▓рдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдлрд▓ рд░рд╣реЗ рд╣реИрдВред рд╕рдореВрд╣ рдирд╛рдо рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВ рдордирдорд╛рдирд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦрддрд╛ рд╣реВрдВред рдЕрд▓реНрдлрд╝рд╛рдиреНрдпреВрдореЗрд░рд┐рдХ рдФрд░ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдХреЛ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рдирд╛ рдХреБрдЫ рд╣рдж рддрдХ рдПрдХ рджрд░реНрдж рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬрдм рд╣реЛрд╕реНрдЯрдирд╛рдо RFC рдбреИрд╢, рдкреАрд░рд┐рдпрдбреНрд╕ рдЖрджрд┐ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ ... рдпрджрд┐ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдирд╛рдордХрд░рдг рд╕рдореНрдореЗрд▓рдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдорд╛рдирдХ рдереЗ рддреЛ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдПрдХ рдореБрджреНрджрд╛ рд╣реЛрдЧрд╛ред рд╣рд╛рдЗрдлрд╝рди рдХрд╛ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рд╕рдорд░реНрдерди рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рдХрдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдбреЙрдЯ рдиреЛрдЯреЗрд╢рди рд╕рдорд╕реНрдпрд╛ рдХреЛ рджреВрд╕рд░реА рджрд┐рд╢рд╛ рд╕реЗ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ; рдПрдХ рд╕рддреНрдпрд╛рдкрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдПрдВ рдЬреЛ рдЖрдкрдХреА рд╕рд╣рд╛рдпрддрд╛ рдЯреАрдо рд╕рд░реНрд╡реЛрддреНрддрдо рдЕрднреНрдпрд╛рд╕ рдореБрджреНрджреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд╣ рдЬрд╛рдВрдЪ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреА рд╣реИ рдФрд░ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рдпрд╛ рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред рдбреЙрдЯ-рдиреЛрдЯреЗрд╢рди рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдкрдиреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЛ рдмрдбрд╝рд╛, рдмреЛрд▓реНрдб, рд▓рд╛рд▓, рдЪрдордХрддрд╛, рдЬреЛ рднреА рд╣реЛ, рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ... рдпрджрд┐ рдЖрдкрдХрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХрд╡рд░ рдХрд░рддрд╛ рд╣реИ рддреЛ рдРрд╕реЗ рд╕рдорд░реНрдерди рдорд╛рдорд▓реЛрдВ рдореЗрдВ 1 рдорд┐рдирдЯ рдХреА рдХреЙрд▓ рдЖрддреА рд╣реИред рдлрд╝реЛрди рдХрд╛ рдЙрддреНрддрд░ рджреЗрдВ, рд╕рдорд╕реНрдпрд╛ рджреЗрдЦреЗрдВ, рдбреЙрдХреНрдЯрд░ рд▓рд┐рдВрдХ рдкреНрд░рджрд╛рди рдХрд░реЗрдВ, рд╣реЛ рдЧрдпрд╛ред

рд╕рдореВрд╣ рдирд╛рдореЛрдВ рдореЗрдВ рдбреИрд╢ рд╡реИрдз рдЖрдИрдПрдирдЖрдИ рдФрд░ рд╡реИрдз рд╡рд╛рдИрдПрдПрдордПрд▓ рджреЛрдиреЛрдВ рд╣реИрдВ, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдореБрдЭреЗ рдЕрдкрдиреЗ рд╕рднреА рд╕рдореВрд╣реЛрдВ рдХрд╛ рдирд╛рдо рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд╛рдпрдерди рдЪрд░ рдирд╛рдореЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?

рд╕рд╛рде рд╣реА рд╕рдореВрд╣ рдирд╛рдореЛрдВ рдореЗрдВ - рдХреЛ рдкрджрд╛рд╡рдирдд рдХрд░рдиреЗ рдХреЗ рдЗрд╕ рдирд┐рд░реНрдгрдп рдХреЗ рдкреАрдЫреЗ рддрд░реНрдХ рдкрд░ рднреА рд╕рд╡рд╛рд▓ рдЙрдард╛рдпрд╛ред рдбрд╛рдпрдиреЗрдорд┐рдХ рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдореЗрдВ рдбреИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдирд╛ keyed_groups рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд╛рдлреА рдХрд╖реНрдЯрдкреНрд░рдж рдерд╛, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реА рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╣рдорд╛рд░реЗ рд╕рднреА рд╕рдореВрд╣реЛрдВ рдХрд╛ рдирд╛рдо рдмрджрд▓рдирд╛ рдФрд░ рдХреЗрд╡рд▓ рдХрд╛рд▓реНрдкрдирд┐рдХ рд╕рд┐рдВрдЯреИрдХреНрд╕-рд╕рдВрдмрдВрдзрд┐рдд рд╕рдорд░реНрдерди рдореБрджреНрджреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП ansible-playbook -l ... рдХрдорд╛рдВрдб рд╣реИ рджрд░реНрджрдирд╛рдХ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред

FWIW рд╣рдорд╛рд░реЗ рдкрд╛рд╕ foo_server рдЬреИрд╕реЗ рднреВрдорд┐рдХрд╛-рд╕рдореВрд╣реЛрдВ рдХреЗ рдирд╛рдордХрд░рдг рдФрд░ foo-dev рдпрд╛ foo-test рдЬреИрд╕реЗ рдореЗрдЬрдмрд╛рди-рд╕рдореВрд╣реЛрдВ рдХреЗ рдирд╛рдордХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░рдВрдкрд░рд╛ рд╣реИред рд╣рдорд╛рд░реЗ рд▓рдЧрднрдЧ 100% рдЙрддреНрддрд░рджрд╛рдпреА рдЙрдкрдпреЛрдЧ ansible-playbook -l foo-dev рдЬреИрд╕реЗ рдХрдорд╛рдВрдб рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдорд╛рдВрд╕рдкреЗрд╢реА-рд╕реНрдореГрддрд┐ рд╕реЗ рд▓рдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдЧрд╛ред

рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдПрдХ рдФрд░ рдореБрдЭреЗ 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:

{% рд╕реЗрдЯ _рд╣реЛрд╕реНрдЯрдЧреНрд░реБрдк = [_рд╕рд░реНрд╡рд┐рд╕, _рдЬреЙрдм, _рдХреНрд▓рд╕реНрдЯрд░]|рдЬреЙрдЗрди ('_')%}
{% рд╕реЗрдЯ _рд╣реЛрд╕реНрдЯрд▓рд┐рд╕реНрдЯ = рд╕рдореВрд╣[_рд╣реЛрд╕реНрдЯрдЧреНрд░реБрдк]|рдбреА([])|рд╕реЙрд░реНрдЯ%}
{% рдЕрдЧрд░ _рд╣реЛрд╕реНрдЯрд▓рд┐рд╕реНрдЯ%}
{% рд╣реЛрд╕реНрдЯрд▓рд┐рд╕реНрдЯ рдореЗрдВ рд╣реЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдП%}
...
```

рд╣рдо рдХреЗрд╡рд▓ рд╕рдореВрд╣ рдФрд░ рд╣реЛрд╕реНрдЯ рдирд╛рдореЛрдВ рдХреЗ рдмреАрдЪ рджреГрд╢реНрдпрдорд╛рди рдЕрдВрддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд┐рдВрджреБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

TRANSFORM_INVALID_GROUP_CHARS рдореЗрдВ INVALID рд╢рдмреНрдж рдХреЛрдИ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ рдХрд┐ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрдирд╛ рд╕рдВрднрд╡ рд╣реИред

рдпрджрд┐ рдЗрд░рд╛рджрд╛ рдЗрди рд╡рд░реНрдгреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдмрдЪрдиреЗ рдХрд╛ рд╣реИ рддреЛ рдмреЗрд╣рддрд░ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ _UNSAFE_ рд╡рд░реНрдг рдХрд╣реЗрдВ, рдЪреЗрддрд╛рд╡рдиреА рджрд┐рдЦрд╛рдПрдВ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдпрд╣ рддрдп рдХрд░рдиреЗ рджреЗрдВ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдпрд╣ рдЪреЗрддрд╛рд╡рдиреА рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ рдпрд╛ рдирд╣реАрдВред рд▓реЗрдХрд┐рди рдЗрди рдкрд╛рддреНрд░реЛрдВ рдХреЛ рдХрднреА рднреА рдЕрд╕реНрд╡реАрдХрд╛рд░ рдпрд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рди рдХрд░реЗрдВ!

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЪрд╛рд╣рд┐рдП рдХрд┐ a) рдЗрд╕ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВ (ALLOW_UNSAFE_GROUP_CHARS рдЬреИрд╕реЗ рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ), b) рдЕрдкрдиреЗ рд╕рдореВрд╣ рдХреЗ рдирд╛рдо рдмрджрд▓реЗрдВ (рдЬрдм рд╕рдВрднрд╡ рд╣реЛ) рдпрд╛ c) рдмрд╕ рдЙрд╕ рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рд╕рд╛рде рд░рд╣реЗрдВред рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡реИрд╕реЗ рднреА рдкрд╣рд▓реЗ рджреЛ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдХреЛ рдЪреБрдиреЗрдВрдЧреЗред

рдореБрдЭреЗ рдпрд╣ рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡реНрдпрд░реНрде рд╣реИ, рдбреИрд╢ рдХреЗ рд░реВрдк рдореЗрдВ "-" рд▓рдЧрднрдЧ рд╣рд░ рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрдВрдкреНрдпреВрдЯрд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЙрдкрдХрд░рдг рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдорд╛рдирдХ рд╕реАрдорд╛рдВрдХрдХ рдЪрд░рд┐рддреНрд░ рд╣реИ, рдФрд░ рдПрдХ "рдзрд░реНрдо" рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рд╕рдВрдХреБрдЪрд┐рдд рд▓рдЧрддрд╛ рд╣реИ !!!

рдкреБрд░рд╛рдирд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рдЪрд▓реЗрдЧрд╛; рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреБрд░рд╛рдиреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЪреБрдиреЗ рдмрд┐рдирд╛ рдЕрдиреБрдкрд▓рдмреНрдз рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рдпрджрд┐ рд╕рдореВрд╣ рдирд╛рдореЛрдВ рдореЗрдВ рдбреИрд╢ рдореЗрдВ рдСрдкреНрдЯ-рдЗрди рдХрд░рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдВрднрд╡ рд╣реЛрддрд╛ рддреЛ рдореИрдВ рдЗрд╕ рдмрд╣рд┐рд╖реНрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЙрддрдирд╛ рдЪрд┐рдВрддрд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ред рддрдм рдЗрд╕реЗ рдирдП-рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рд╕рдордЭрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдкрджрд╛рд╡рдирддрд┐ рдЪреЗрддрд╛рд╡рдиреА рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ Ansible 2.10 рдореЗрдВ TRANSFORM_INVALID_GROUP_CHARS=never рд╡рд┐рдХрд▓реНрдк рджреВрд░ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ Ansible 2.10 рдЬрд╛рд░реА рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрдкрдиреЗ рд╕рднреА рд╕рдореВрд╣реЛрдВ рдХрд╛ рдирд╛рдо рдмрджрд▓рдирд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛?

[рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдиреА]: TRANSFORM_INVALID_GROUP_CHARS рд╕реЗрдЯрд┐рдВрдЧ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдореВрд╣ рдирд╛рдореЛрдВ рдореЗрдВ рдЦрд░рд╛рдм рд╡рд░реНрдгреЛрдВ рдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рд╣реИ, рдпрд╣ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдмрд╣рд┐рд╖реНрдХрд░рдг рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реЛрдЧрд╛ред рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рд╕рдВрд╕реНрдХрд░рдг 2.10 рдореЗрдВ рд╣рдЯрд╛ рджреА рдЬрд╛рдПрдЧреАред deprecation_warnings=False ansible.cfg рдореЗрдВ рд╕реЗрдЯ рдХрд░рдХреЗ рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдВ рдЕрдХреНрд╖рдо рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВред

рд╕рд╛рде рд╣реА, рдбрд╛рдпрдиреЗрдорд┐рдХ рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ 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

    рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЙрддреНрддрд░рджрд╛рдпреА 2.7 рдХреЗ рд▓рд┐рдП рдкрд┐рдЫрдбрд╝рд╛-рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП рд╣реИ, рдЬрд┐рд╕рдиреЗ рдмрд┐рдирд╛ рд╢рд░реНрдд рд░реВрдк рд╕реЗ рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рд╕рдореВрд╣ рдирд╛рдореЛрдВ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ред рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдкрд╖реНрдЯ рдСрдкреНрдЯ-рдЖрдЙрдЯ рд╣реЛрдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдирд╛рдореЛрдВ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рдХрд┐ рд╢рдмреНрджрдХреЛрд╢ рдХреБрдВрдЬреА рдХреЗ рдкреНрд░рд╛рд░реВрдк рдХреЛ рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдирд╛рдо рдХреЗ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд╕рд╛рде рдмрд░рд╛рдмрд░ рдХреНрдпреЛрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП? AFAIK рдХрд┐рд╕реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдореЗрдВ рдРрд╕реА рд╕реАрдорд╛ рдирд╣реАрдВ рд╣реИред рдкрд╛рдпрдерди рдореЗрдВ рдЖрдк рдХрд┐рд╕реА рднреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рд╢рдмреНрджрдХреЛрд╢ рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

"рд╕рдореВрд╣" рдПрдХ рд╢рдмреНрджрдХреЛрд╢ рдкреНрд░рдХрд╛рд░ рдЪрд░ рдирд╣реАрдВ рд╣реИ рдФрд░ рдореЗрдЬрдмрд╛рди рдФрд░ рд╕рдореВрд╣ рдирд╛рдо рджреЛрдиреЛрдВ рд╣реА Ansible рдореЗрдВ рдХреЗрд╡рд▓ рд╕рд╛рджреЗ рд╢рдмреНрджрдХреЛрд╢ рдХреБрдВрдЬреА рд╣реИрдВред рд╡реЗ рдЧреБрдг рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рди рд╣реА рдЪрд░ рд╣реИрдВ рдпрд╛ рд╡реЗ рд╣реИрдВ?

рдореИрдВ рд╕рдореВрд╣реЛрдВ ["foo-group"] рдХреА рддреБрд▓рдирд╛ рдореЗрдВ group.foo-group рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдпрджрд┐ g = "foo-group", рддреЛ рдХреНрдпрд╛ рдЖрдк group.g рдпрд╛ group[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 )

рдпрд╣ рд╕рднреА рдХреЛ рддреЛрдбрд╝рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред рдЦрд╝рд░рд╛рдм рдирд┐рд░реНрдгрдпред

рдХреНрдпрд╛ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдиреБрд░рдХреНрд╖рдХреЛрдВ рдХреЗ рд╕рд╛рде рддрд░реНрдХ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реЛрдЧрд╛?

рд╢рд╛рдпрдж рд░рдЦрд░рдЦрд╛рд╡ рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдпрд╣рд╛рдВ рдереЛрдбрд╝рд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЕрдЧрд░ рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рд╕рдорд░реНрдерди рдореБрджреНрджрд╛ рд╣реИ рдпрд╛ рдпрджрд┐ рд╡реЗ рдкрд╛рдЗрдерди рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЯреВрдЯ рдЬрд╛рддреЗ рд╣реИрдВ?

рдореИрдВ рдмрд╕ рдЗрд╕реЗ рдХрд╛рдлреА рдХрд╖реНрдЯрдкреНрд░рдж рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрдерддрд╛ рднреА рдХрд╖реНрдЯрдкреНрд░рдж рдереА, рдореБрдЭреЗ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП ansible-playbook "insert yaml file here" > output.txt рдХрд░рдирд╛ рдкрдбрд╝рд╛ред

рдпрд╣рд╛рдВ рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреЛрд╕реНрдЯрд░реЛрдВ рд╕реЗ рд╕рд╣рдордд рд╣реИрдВред рд╕рдореВрд╣ рдХреЗ рдирд╛рдореЛрдВ рд╕реЗ рдбреИрд╢ рдХреЛ рд╣рдЯрд╛рдирд╛ рдПрдХ рдЦрд░рд╛рдм рд╕реЛрдЪреЗ-рд╕рдордЭреЗ рдирд┐рд░реНрдгрдп рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ, рдпрд╛ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдЬреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ, рд╢рдмреНрджрд╛рд░реНрде рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рдирд╣реАрдВ рд╣реИред

рдпрд╣ рдмрджрд▓рд╛рд╡ рдореЗрд░реЗ рд▓рд┐рдП рдмрд┐рд▓реНрдХреБрд▓ рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддрд╛ред рдЙрддреНрддрд░рджрд╛рдпреА рджреЗрд╡ рд╣рдЬрд╛рд░реЛрдВ рдФрд░ рд╣рдЬрд╛рд░реЛрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЕрдкрдиреЗ рд╕рдореВрд╣ рдХреЗ рдирд╛рдордХрд░рдг рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╕рдореВрд╣реЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ (рд▓рд╛рдкрддрд╛ рдирд╣реАрдВ) рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдХреНрдпрд╛ рдпрд╣ рдордЬрд╝рд╛рдХ рд╣реИ?

рд╣рдо рдмрдбрд╝реЗ рд╕реЗрдЯрдЕрдк рдореЗрдВ рдбреИрд╢ рдФрд░ рдбреЙрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рд╣рдорд╛рд░рд╛ рдкреИрдЯрд░реНрди product-name.environment.datacenter рдФрд░ рдпрд╣ рдЪреАрдЬреЛрдВ рдХреЛ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИред
рдореИрдВ - рдФрд░ . рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреА рдХрд▓реНрдкрдирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рд╕реЗ рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдкрдардиреАрдп рд╣реЛ рдЬрд╛рдПрдЧреАред

рд╣рдо рдРрд╕реЗ рдЙрддреНрддрд░рджрд╛рдпреА рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдкреНрд▓рдЧ рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рд╕реНрдерд╛рдиреАрдп рд╕реАрдПрдордбреАрдмреА рдХреЛ рд╕рдореВрд╣ рдирд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рдХреНрд╡реЗрд░реА рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рдбреИрд╢ рд╣реЛрддреЗ рд╣реИрдВ (рдФрд░ рдЬрд╛рд░реА рд░рд╣реЗрдВрдЧреЗ)ред рдпрджрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдпрд╣ рдЕрдорд╛рдиреНрдп рд╣реЛрдЧрд╛ рддреЛ рдпрд╣ рдмрд╣реБрдд рд╕рд╛рд░реА рдЪреАрдЬрд╝реЗрдВ рддреЛрдбрд╝ рджреЗрдЧрд╛ред

рд╣рдо рдмрдбрд╝реЗ рд╕реЗрдЯрдЕрдк рдореЗрдВ рдбреИрд╢ рдФрд░ рдбреЙрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рд╣рдорд╛рд░рд╛ рдкреИрдЯрд░реНрди product-name.environment.datacenter рдФрд░ рдпрд╣ рдЪреАрдЬреЛрдВ рдХреЛ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИред
рдореИрдВ - рдФрд░ . рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреА рдХрд▓реНрдкрдирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рд╕реЗ рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдкрдардиреАрдп рд╣реЛ рдЬрд╛рдПрдЧреАред

рд╣рдо рдПрдХ рдкрджрд╛рдиреБрдХреНрд░рдорд┐рдд рдирд╛рдордХрд░рдг рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╛рди рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдЬрд╛рд╡рд╛ рд╕реЗ рдкреНрд░реЗрд░рд┐рдд, рдЬреИрд╕реЗ org.company.product-name.component)ред
рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯрдирд╛ рдПрдХ рдкреВрд░реНрдг рдбрд░рд╛рд╡рдиреА рд╕реНрдерд┐рддрд┐ рд╣реЛрдЧреАред

рд╣реЗ рд╣рдордиреЗ рдЙрд╕ рдореБрджреНрджреЗ рдХрд╛ рднреА рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ред рд╣рдо рдЕрдкрдиреЗ рд╕рдореВрд╣реЛрдВ рдХреЗ рдирд╛рдореЛрдВ рдореЗрдВ рдбреИрд╢ рдХрд╛ рдЧрд╣рдирддрд╛ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдЕрдЧрд░ рдХреЛрдИ рд╕рдордЭрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ рдбреИрд╢ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдХрд╛рд░рдг рдХреНрдпрд╛ рд╕рдорд╕реНрдпрд╛ рд╣реИ рддреЛ рдореБрдЭреЗ рдпрд╣ рдЬрд╛рдирдХрд░ рдЦреБрд╢реА рд╣реЛрдЧреА

рдореИрдВ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╡рд╣реА рджреЛрд╣рд░рд╛ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рджреВрд╕рд░реЛрдВ рдиреЗ рдХрд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдХреБрдЫ рдЗрдирдкреБрдЯ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдзреНрд╡рдЬ рдХреЛ рдбреИрд╢ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдмрдирд╛рдП рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдкрд╛рдпрдерди рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ, рдбреИрд╢ рдЖрдорддреМрд░ рдкрд░ рд╣реЛрд╕реНрдЯ рдирд╛рдореЛрдВ рдФрд░ рд╣реЛрд╕реНрдЯ рд╕рдореВрд╣ рдирд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдкрд░рд┐рд╡реЗрд╢ рдореЗрдВ рд╣рдо рдЕрдкрдиреА LDAP/Kerberos рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╣реЛрд╕реНрдЯ рдФрд░ рд╣реЛрд╕реНрдЯ рд╕рдореВрд╣реЛрдВ рд╕реЗ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдЬреЗрдирд░реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред рдореИрдВ рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдЗрд╕рд▓рд┐рдП рдХрд░рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрджреНрдпрдкрд┐ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдореЗрдЬрдмрд╛рди рдФрд░ рд╕рдореВрд╣ рдХреЗ рдирд╛рдо рдмрджрд▓рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛, рдпрд╣ рдмреЗрд╣рддрд░ рдирд╣реАрдВ рд╣реИред

рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рд╣рдорд╛рд░реА рд╕реНрдерд╛рдиреАрдп Ansible рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣рд╛рдЗрдлрд╝рди-рдпреБрдХреНрдд рд╕рдореВрд╣ рдирд╛рдореЛрдВ рд╕реЗ рдЕрдЯреА рдкрдбрд╝реА рд╣реИрдВред рд╣рдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдбреЙрдЯ рдиреЛрдЯреЗрд╢рди рдХреЗ рд╕рд╛рде рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЙрди рд╕рднреА рдХреЛ рдмрджрд▓рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░реНрдп рд╣реЛрдЧрд╛ред рдореИрдВ рдСрдкреНрдЯ рдЖрдЙрдЯ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ рдФрд░ рд╕рд╛рде рд╣реА рд╕рд╛рде рдЕрдкрдиреА рдЯреАрдо рдХреЛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╣рд╛рдЗрдлрд╝рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░реВрдВрдЧрд╛ рдФрд░ рдЬрд╣рд╛рдВ рд╕рдВрднрд╡ рд╣реЛ рд╡рд╣рд╛рдВ рд╣рд╛рдЗрдлрд╝рди рдХреЛ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЕрдВрддрд┐рдо рднрд╛рдЧ рд╣рдореЗрд╢рд╛ рдЙрддрдирд╛ рд╕реАрдзрд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рдЬрд┐рддрдирд╛ рдпрд╣ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред

рддреЛ, рдХреНрдпрд╛ рдХреЛрдИ рдХреЗрд╡рд▓ force_valid_group_names = false рдХреЛ ansible.cfg рдореЗрдВ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ? рдпрд╣ d241794#diff-fd24ad93fbc32f454761746c1ac908f2 рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╕рд╣реА рд▓рдЧрддрд╛ рд╣реИ

Ansible 2.8.2 рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ, рдпрд╣ INI рд╕реЗрдЯрд┐рдВрдЧ рдЕрдкреЗрдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рд╣реИ, рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ DEPRECATION WARNING рдХреЛ рд╣рдЯрд╛ рджреЗрдЧрд╛, рдЬрдмрдХрд┐, рдореИрдВ рдЬреЛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд╡рд╣ Ansible рдХреЗ рд▓рд┐рдП рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╢рд┐рдХрд╛рдпрдд рдХреЗ рдбреИрд╢ рдХреЗ рд╕рд╛рде рдореЗрд░реЗ рд╕рдореВрд╣реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред

рдпрд╣рд╛рдВ рдмрд┐рдирд╛ рдкрд░рд┐рдгрд╛рдо рджрд┐рдП рдЧрдП рд╣реИрдВ:

[рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдиреА]: TRANSFORM_INVALID_GROUP_CHARS рд╕реЗрдЯрд┐рдВрдЧ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдореВрд╣ рдирд╛рдореЛрдВ рдореЗрдВ рдЦрд░рд╛рдм рд╡рд░реНрдгреЛрдВ рдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рд╣реИ, рдпрд╣ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдмрд╣рд┐рд╖реНрдХрд░рдг рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реЛрдЧрд╛ред рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рд╕рдВрд╕реНрдХрд░рдг 2.10 рдореЗрдВ рд╣рдЯрд╛ рджреА рдЬрд╛рдПрдЧреАред рдкреНрд░рддрд┐рд╡рд╛рдж
ansible.cfg рдореЗрдВ deprecation_warnings=False рд╕реЗрдЯ рдХрд░рдХреЗ рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рдЕрдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
[рдЪреЗрддрд╛рд╡рдиреА]: рд╕рдореВрд╣ рдирд╛рдореЛрдВ рдореЗрдВ рдЕрдорд╛рдиреНрдп рд╡рд░реНрдг рдкрд╛рдП рдЧрдП рд▓реЗрдХрд┐рди рдмрджрд▓реЗ рдирд╣реАрдВ рдЧрдП, рд╡рд┐рд╡рд░рдг рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП -vvvv рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

рдФрд░ ansible.cfg рдореЗрдВ "рдЧрд▓рдд" рдкрд░ рд╕реЗрдЯ рдХреА рдЧрдИ рд╕реЗрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рде:

[рдЪреЗрддрд╛рд╡рдиреА]: рд╕рдореВрд╣ рдирд╛рдореЛрдВ рдореЗрдВ рдЕрдорд╛рдиреНрдп рд╡рд░реНрдг рдкрд╛рдП рдЧрдП рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрджрд▓ рджрд┐рдП рдЧрдП, рд╡рд┐рд╡рд░рдг рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП -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 )

рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдпрд╣ рд╕рд┐рд░реНрдл рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рддреЛрдбрд╝ рд░рд╣рд╛ рд╣реИ, рдпрд╛ рдХреНрдпрд╛ рдпрд╣ рд╣рдореЗрдВ рд╕рдореВрд╣реЛрдВ рдореЗрдВ рдбреИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛?
рдпрд╣ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИред

рдореИрдВ рдпрд╣рд╛рдВ рд╕рднреА рд╡рд┐рд░реЛрдзрд┐рдпреЛрдВ рд╕реЗ рд╕рд╣рдордд рд╣реВрдВред

рдкреНрд▓реЗрдмреБрдХ рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдЙрд╕ рдЪреАрдЬ рдореЗрдВ рдпреЛрдЧрджрд╛рди рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рдХрдиреНрд╡реЗрдВрд╢рди рдореЗрд╕ рдХреЛ рдЙрддреНрддрд░рджрд╛рдпреА рдХрд╣рддрд╛ рд╣реВрдВред рдЕрдм рд╣реЛрд╕реНрдЯрдирд╛рдо рдФрд░ рд╕рдореВрд╣реЛрдВ рдХреЗ рдирд╛рдореЛрдВ рдХрд╛ рдПрдХ рдЕрд▓рдЧ рд╕рдореНрдореЗрд▓рди рд╣реИ, рд╕рд┐рд░реНрдл рдЗрд╕рд▓рд┐рдП рдХрд┐ рдХреБрдЫ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╢реБрд░реБрдЖрддреА рдбреЙрдЯ рдиреЛрдЯреЗрд╢рди рдореЗрдВ рд╣рд╛рдЗрдлрд╝рди рдореБрджреНрджреЗ рдкрд░ рдареЛрдХрд░ рдЦрд╛рддреЗ рд╣реИрдВ? рдЕрдВрджрд╛рдЬрд╝рд╛ рд▓рдЧрд╛рдУ ? рд╡реЗ рдЕрднреА рднреА рдЗрд╕ рдкрд░ рдареЛрдХрд░ рдЦрд╛рдПрдВрдЧреЗ, рдФрд░ рдлреАрдЪрд░ рд▓реЛрдЧреЛрдВ рдХреЛ рдирд╛рд░рд╛рдЬ рдХрд░рдиреЗ рдФрд░ рдХрд┐рд╕реА рднреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдлрд▓ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рд╡рд╛рд╣рд╡рд╛рд╣реАред

рдЙрддреНрддрд░рджрд╛рдпреА рд╕рдореВрд╣ рдХреЗ рдирд╛рдо рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд┐рд╢реНрд╡ рд╕рдореВрд╣реЛрдВ рдХреЗ рдирд╛рдордХрд░рдг рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рдирдХрд╛ рд╡реЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВред

рдпрджрд┐ рдЕрдиреНрдп рд╕рднреА рдЯреВрд▓рд┐рдВрдЧ рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЛ my-backend-service рдЙрддреНрддрд░рджрд╛рдпреА рдмрд▓ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ рдЕрдЬрдЧрд░ рдХреЗ рдирд╛рдордХрд░рдг рдирд┐рдпрдореЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП my_backend_service рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпреЛрдВ рдордЬрдмреВрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЖрдЬ рдХрд╛ рджрд┐рди рд╡рд╛рдХрдИ рдмрд╣реБрдд рджреБрдЦрдж рд╣реИ.. рдЬрдм рдПрдХ рдЬреЗрдЖрд░ рд╕рд╣рдХрд░реНрдореА рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдкрджрд╛рд╡рдирдд рдХрд┐рдпрд╛ рддреЛ рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХрд╛ рд╕реНрд╡рд╛рд░реНрдереА рд╡рд┐рдХрд▓реНрдк рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдВрд╕рд┐рдмрд▓ рдЯреАрдо рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдХреЗ рд╕рдВрдкрд░реНрдХ рд╕реЗ рдЗрддрдиреА рджреВрд░ рдирд╣реАрдВ рд╣реЛрдЧреАред рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ Ansible рд╕реЗ рдкреНрдпрд╛рд░ рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рдЗрд╕реЗ рдкреВрд░рд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдирдЬрд░рд┐рдП рд╕реЗ рдЬрд┐рд╕рдореЗрдВ ZERO рдХрд╛ рд╕рдВрдмрдВрдз рдкрд╛рдпрдерди рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ) рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдкрд░ PEP рдорд╛рдирдХреЛрдВ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдХреА рджрд┐рд╢рд╛ рдиреЗ рдореБрдЭреЗ рдХреЛрд░ Ansible рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдЯреАрдо рдХреА рдХреНрд╖рдорддрд╛ рдмрдирд╛рдиреЗ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдвреАрд▓рд╛ рдХрд░ рджрд┐рдпрд╛ рд╣реИред рддрд░реНрдХрд╕рдВрдЧрдд рдирд┐рд░реНрдгрдпред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдИрдмреАрдПрдо рдЗрд╕реЗ рд╕реАрдзрд╛ рдХрд░реЗрдЧрд╛ ..
рдпрд╛
рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдирдпрд╛-рдЪрдордХрджрд╛рд░ GO рд╕рдордХрдХреНрд╖ рд╣реЛрдЧрд╛ рдЬрд┐рд╕реЗ рд╣рдо рдЖрдЧреЗ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдЪреВрдВрдХрд┐ рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмрд╣реБрдд рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж рд╣реИ, рдореИрдВ рдЕрдкрдиреЗ рдЖрдк рд╕реЗ рдкреВрдЫ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдкреВрд░реНрдг рд╕реМрджрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ?

рдореИрдВ рдЗрд╕ рдирд┐рд░реНрдгрдп рдХреЗ рдкреАрдЫреЗ рд▓реЛрдЧреЛрдВ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдмрд╣реБрдд рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ "рдпрд╣ рдПрдХ рдЕрдЬрдЧрд░ рдорд╛рдирдХ рдЪреАрдЬ рд╣реИ" рд╕реЗ рдкрд░реЗ рдХреБрдЫ рд╡рд┐рд╕реНрддрд╛рд░ рдХреА рдЖрд╢рд╛ рдХрд░рддрд╛ рд╣реВрдВред

рдЪреВрдВрдХрд┐ рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмрд╣реБрдд рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж рд╣реИ, рдореИрдВ рдЕрдкрдиреЗ рдЖрдк рд╕реЗ рдкреВрдЫ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдкреВрд░реНрдг рд╕реМрджрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ?

рдореИрдВ рдЗрд╕ рдирд┐рд░реНрдгрдп рдХреЗ рдкреАрдЫреЗ рд▓реЛрдЧреЛрдВ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдмрд╣реБрдд рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ "рдпрд╣ рдПрдХ рдЕрдЬрдЧрд░ рдорд╛рдирдХ рдЪреАрдЬ рд╣реИ" рд╕реЗ рдкрд░реЗ рдХреБрдЫ рд╡рд┐рд╕реНрддрд╛рд░ рдХреА рдЖрд╢рд╛ рдХрд░рддрд╛ рд╣реВрдВред

рдореИрдВ рдЖрдкрд╕реЗ рд╕рд╣рдордд рд╣реВрдВред рдЕрднреА рд╣рд╛рд▓ рд╣реА рдореЗрдВ "рдЧреЛ" рдкрд░рд┐рдпреЛрдЬрдирд╛ рдПрдХ рдЕрд▓реЛрдХрдкреНрд░рд┐рдп рдкреНрд░рд╕реНрддрд╛рд╡ рд╕реЗ рд╕рдорд░реНрдерд┐рдд рд╣реИ (рджреЗрдЦреЗрдВ https://github.com/golang/go/issues/32437#issuecomment-512035919), рдЗрд╕рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреА рдЪреАрдЬреЗрдВ (рдФрд░ рдХрднреА-рдХрднреА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП) рдкрд░ рджреЛрдмрд╛рд░рд╛ рдЧреМрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЕрдВрддрддрдГ рднреА рдкреАрдЫреЗ рд╣рдЯ рдЧрдПред

рдпрд╣ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рд╖рдп рдФрд░ рдЪрд░реНрдЪрд╛ рднреА рд╣реИ, рд╢рд╛рдпрдж рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП рд╣реА рдирд╣реАрдВред рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдХрдард┐рди рд╣реИ рдХрд┐ рдЙрддреНрдкрд╛рдж рдХреЗ рд░реВрдк рдореЗрдВ Ansible рдХрд╛ рд╢рд╛рд╕рди рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╢рд╛рдпрдж рдХреБрдЫ _someone_ рдХреЛ рдЕрдкрдиреЗ рд╕рд╛рде https://www.ansible.com/ansiblefest рдкрд░ рд▓рд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдореЗрдВ рд╕реЗ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдЕрдкрдирд╛ рд╕рд┐рд░ рдЦреБрдЬрд▓рд╛ рд░рд╣реЗ рд╣реИрдВ, рдпрд╣ рд╕рдордЭ рдирд╣реАрдВ рдкрд╛ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдХреИрд╕реЗ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ/рдЪрд░ рд╕рд╛рдордЧреНрд░реА/рд╕рдореВрд╣ рдХрд╛ рдирд╛рдо рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдкрд╛рдЗрдерди рдХреЛрдбрд┐рдВрдЧ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд░рдЦрд░рдЦрд╛рд╡рдХрд░реНрддрд╛рдУрдВ рд╕реЗ рдпрд╣рд╛рдВ рдЬрд╡рд╛рдм рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рдпрд╣ рддрд░реНрдХ рджреЗрддреЗ рд╣реБрдП рдХрд┐ рдпрд╣ рдХреНрдпреЛрдВ рд╣реЛрдЧрд╛ рдореБрджреНрд░рд╛ рдПрдХ рдореБрджреНрджрд╛ред

рдореИрдВ рд╕рдордЭ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рд╡реЗ рдЪрд░ рдирд╛рдореЛрдВ рдФрд░ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЛрдбрд┐рдВрдЧ рд╢реИрд▓реА рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рд╕рд░рдгреА рдпрд╛ рдЪрд░ рдХреА рд╕рд╛рдордЧреНрд░реА?

рдпрд╣рд╛рдВ рдбрд┐рдХреНрдЯреНрд╕ рдХреЗ рдбреЙрдЯ рдиреЛрдЯреЗрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рддреНрд╡рд░рд┐рдд рдЪрд░реНрдЪрд╛ рд╣реИред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рдмрджрд╕реВрд░рддред https://stackoverflow.com/questions/16279212/how-to-use-dot-notation-for-dict-in-python

рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдЖрд╕-рдкрд╛рд╕ рд╕рдорд░реНрдерди рдореБрджреНрджреЗ рд╣реИрдВ, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореБрджреНрджрд╛ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдореБрджреНрджрд╛ рдирд╣реАрдВ рд╣реИред рдЕрдЧрд░ рдХреБрдЫ рднреА рдореИрдВ рддрд░реНрдХ рджреВрдВрдЧрд╛ рдХрд┐ рд╕рдореВрд╣ рдХреЗ рдирд╛рдо рдЪрд░ рдирд╣реАрдВ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред

рдЬреИрд╕рд╛ рдХрд┐ рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рд╕реА рднреА рджрд╕реНрддрд╛рд╡реЗрдЬ рдХреЗ рдЙрдкрд▓рдмреНрдз рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдЗрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдХреНрдпрд╛ рдкреНрд░рднрд╛рд╡ рд╣реИ? рдХреНрдпрд╛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рд╕рдореВрд╣ рдирд╛рдореЛрдВ рдореЗрдВ рдбреИрд╢ рдирд╣реАрдВ рд╣реИрдВ, рдХреНрдпрд╛ рдореБрдЭреЗ рдЕрдкрдиреА рд╕рднреА рдЙрддреНрддрд░рджрд╛рдпреА рд╕реВрдЪреА рдХреЛ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛?

@CMoH IMO рдЕрднреА рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИ force_valid_group_names = ignore рдХреЛ рдЕрдкрдиреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдФрд░ 2.8.2 рдпрд╛ рдмрд╛рдж рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЪрд▓рд╛рдирд╛ред

@skyscooby , рдпрд╣ рднреА рдПрдХ /etc/ansible.cfg рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд░рдЦрдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЕрдиреНрдп рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдкреНрд▓реЗрдмреБрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рд╕реНрдерд╛рдиреАрдп ansible.cfg рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╕рднреА рдореМрдЬреВрджрд╛ ansible.cfg рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред

рдпрд╛ рд╡реИрд╢реНрд╡рд┐рдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ (рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд░реНрдпрд╛рд╡рд░рдг рдореЗрдВ рдХреЛрдИ рдЕрдиреНрдп рдЪрд░ рдЬреЛрдбрд╝реЗ рдмрд┐рдирд╛)?

@ рдХреМрдЧрд░ рдиреЗ рд╕рд╣рдорддрд┐ рд╡реНрдпрдХреНрдд рдХреА рдХрд┐

рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕ рд╕реЗрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЕрджреНрд╡рд┐рддреАрдп рдирд╣реАрдВ рд╣реИ .. рд╣рдордиреЗ рд╕рдорд╛рди рджрд░реНрдж рдХрд╛ рдЕрдиреБрднрд╡ рдХрд┐рдпрд╛ рдФрд░ рдЕрдм рд╣рдо рдкреНрд░рддрд┐-рдкреНрд░реЛрдЬреЗрдХреНрдЯ ansible.cfg рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рд╣рддреЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЗ рд╕рд╛рде рд╕реЗрдЯ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ рдЬреЛ cfg рдлрд╝рд╛рдЗрд▓ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддреА рд╣реИрдВ .. рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдХреЛрдИ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреБрдЫ рдЕрд╕реНрдкрд╖реНрдЯ рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реЗрдЯрд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рд╣рдо рдкреВрдЫрддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ ENV рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдмрд╛рдХреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдЙрдиреНрд╣реЗрдВ рдХреЙрд░реНрдкреЛрд░реЗрдЯ рдорд╛рдирдХреЛрдВ рдкрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рд╣рдо рдЗрд╕ рдорд╛рдирдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рдмреЗрд╕ рдбреЙрдХрдЯрд░ рдХрдВрдЯреЗрдирд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдмреЗрд╕ рдПрдиреНрд╕рд┐рдмрд▓ рдХрдВрдЯреЗрдирд░ рдХреА рдЕрдкрдиреА рдЫрд╡рд┐ рдХреЛ рдЖрдзрд╛рд░ рдмрдирд╛рддреЗ рд╣реБрдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдореЗрдВ рдИрдПрдирд╡реА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рд╕рднреА ansible рдХреЛ рдХрдВрдЯреЗрдирд░ рдХреЗ рднреАрддрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдирд┐рд╢реНрдЪрд┐рдд рд╣реИрдВ рдХрд┐ рд╕рднреА pip рдореЙрдбреНрдпреВрд▓, ansible рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рд░рдирдЯрд╛рдЗрдо рдЯреВрд▓ рдПрдВрдб рдЯреВ рдПрдВрдб рд╕рдорд╛рди рд╣реИрдВред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдпрд╣ рд╣рдореЗрдВ рдХрдВрдкрдиреА рдореЗрдВ рд╣рд░ рдХрд┐рд╕реА рдХреЗ рд╕рд╛рде рд╣рд┐рдЯ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЙрддреНрддрд░рджрд╛рдпреА рдФрд░ рдирд┐рдпрдВрддреНрд░рдг рдореБрджреНрджреЛрдВ рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдордВрдЪ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рднреА рджреЗрддрд╛ рд╣реИ :)

рдореИрдВрдиреЗ рдХреБрдЫ рдЦреБрджрд╛рдИ рдХреАред

рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рдкреАрдЖрд░ https://github.com/ansible/ansible/pull/52748 рдореЗрдВ рдХрдерд┐рдд рд░реВрдк рд╕реЗ рдлреАрдЪрд░ рдЕрдиреБрд░реЛрдз https://github.com/ansible/ansible/issues/40581 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ред

рд▓рдХреНрд╖реНрдп рдХрд╛ рдПрдХ рд╡рд┐рд╡рд░рдг: https://github.com/ansible/ansible/pull/52748#issuecomment -467976473

рдЗрд╕ рд▓рдХреНрд╖рдг рдХрд╛ рдкрд╣рд▓рд╛ рд╕рдВрд╕реНрдХрд░рдг (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрд▓рдЧ рдХрд╛рд░рдг): https://github.com/ansible/ansible/issues/51844

рдпрд╛рд░, рдореИрдВ рдЕрдм рддрдХ рдХрд┐рддрдиреА рдмрд╛рд░ #52748 рдкрдврд╝ рд░рд╣рд╛ рд╣реВрдВред

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ, рд╕рдореВрд╣ рдирд╛рдореЛрдВ рдХреЛ рдкрд╣рд▓реЗ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдФрд░ рдХреЛрд░ рдореЗрдВ рд╕рд╛рдл рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдХрд┐рд╕реА рдиреЗ (рдХрд┐рд╕реА рднреА рдХрд╛рд░рдг рд╕реЗ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрднреА рднреА рдореЗрд░реЗ рд▓рд┐рдП рдмрд┐рд▓реНрдХреБрд▓ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ) рдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рд╕рдореВрд╣ рдХреЗ рдирд╛рдо рдкрд╛рдпрдерди рдЪрд░ рдирд╛рдордХрд░рдг рд╕рдореНрдореЗрд▓рдиреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рддреЛ #52748 рдиреЗ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╕реНрд╡рдЪреНрдЫрддрд╛ рдХреЛ рд╕реВрдЪреА рдореЗрдВ рдзрдХреЗрд▓ рджрд┐рдпрд╛, рдЬрд┐рд╕рд╕реЗ рдЗрддрдиреЗ рд╕рд╛рд░реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЪреАрдЬреЗрдВ рдЯреВрдЯ рдЬрд╛рддреА рд╣реИрдВред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡реЗ рд▓реЛрдЧ рдЬреЛ рдЪрддреБрд░ рдирд╛рдордХрд░рдг рдкрд░рдВрдкрд░рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП AWS, Azure, рдЖрджрд┐ рдореЗрдВ, рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреЛ рд╕рдореВрд╣реЛрдВ рдореЗрдВ рдореИрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

рдпрджрд┐ рд╣рдо рд╣реЛрд╕реНрдЯ рдирд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдорд╛рдирдХ/рдирд╛рдордХрд░рдг рдкрд░рдВрдкрд░рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЧрддрд┐ рдЦреЛ рджреЗрдВрдЧреЗ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЦреЛ рджреЗрдВрдЧреЗред

рд╕рдореВрд╣ рдХрд╛ рдирд╛рдо рдПрдХ рдирд╛рдо рд╣реИ, рдЪрд░ рдирд╣реАрдВред рд╕рдореВрд╣ рдирд╛рдореЛрдВ рдореЗрдВ рдбреИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ (рдЬреИрд╕реЗ рд╣реЛрд╕реНрдЯ рдирд╛рдореЛрдВ рдореЗрдВ) рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рдЕрдиреБрд╡рд╛рдж (рд╕реНрд╡рдЪреНрдЫрддрд╛) рдХреЛ рдПрдХ рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рд╕реНрддрд░ (рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛) рдкрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдФрд░ рд╕рднреА рджреБрдирд┐рдпрд╛ рдХреЗ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрднреА рдирд╣реАрдВред

рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рд▓рд╛рдн рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЪрд░реНрдЪрд╛ рднреА "ред" рдФрд░ ":", рдЬрд┐рд╕реЗ рдХреБрдЫ рд▓реЛрдЧ рд╕рдореВрд╣ рдирд╛рдореЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореИрдВ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рдиреБрдХрд╕рд╛рди рднреА рдирд╣реАрдВ рджрд┐рдЦрддрд╛ред

рдЬрдм рддрдХ рдХреНрд▓рд╛рдЙрдб рдкреНрд░рджрд╛рддрд╛ рдЕрдкрдиреА рдореЗрдЯрд╛ рдЬрд╛рдирдХрд╛рд░реА рдореЗрдВ рдбреИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддрдм рддрдХ рд╣рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рд╕рдореВрд╣реАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рджрд░рдЕрд╕рд▓, рд╡рд╣ рдбреНрд░рд╛рдЗрд╡рд░ рднреА рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдЧрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рд╕рдореВрд╣ рдХрд╛ рдирд╛рдордХрд░рдг рдПрдмреАрд╕реАрдбреАрдИ рдХрд░рдирд╛ рд╣реИ, рддреЛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдИ рдореБрджреНрджрд╛ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рдЙрдкрдпреЛрдЧреА рд╕реАрдорд╛рдВрдХрдХ рд╣реИред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдзрд╛рдЧрд╛ рджреЗрд╡реЛрдВ рдпрд╛ рдЕрдиреБрд░рдХреНрд╖рдХреЛрдВ рдХрд╛ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдмрд╣рд░реЗ рдХрд╛рдиреЛрдВ рд╕реЗ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рджреЗрд╡/рд░рдЦрд░рдЦрд╛рд╡: рдХреГрдкрдпрд╛, рдХреГрдкрдпрд╛ рд╕рдореВрд╣ рдирд╛рдореЛрдВ рдореЗрдВ рдбреИрд╢ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ!

рдХреБрдЫ рдЧрд▓рддрдлрд╣рдорд┐рдпреЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдореЗрд░реА рдЧрд▓рддрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░рдг рдереЗ рдФрд░ рд╢реБрд░реБрдЖрддреА рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдЕрд╕реНрдкрд╖реНрдЯ рдмрдирд╛ рд░рд╣реЗ рдереЗ, рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдХреБрдЫ рдореБрджреНрджреЛрдВ рдХреЛ рдареАрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рд▓реЛрдЧ рдпрд╣рд╛рдВ рд▓рд╛рддреЗ рд░рд╣рддреЗ рд╣реИрдВ, рдЕрдиреНрдп рд╕реБрдзрд╛рд░ рдЕрднреА рднреА рдХрдо рд╣реИрдВ:

рдмрд╕ рдПрдХ рдмрд╛рд░ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рд╣рдореЗрд╢рд╛ рд╕рдореВрд╣ рдирд╛рдореЛрдВ рдореЗрдВ рдбреИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ, рдбреЙрдЯреНрд╕ рдФрд░ рдЕрдиреНрдп рд╡рд░реНрдг рдЬрд┐рдиреНрд╣реЗрдВ рдЕрдм 'рдЕрдорд╛рдиреНрдп' рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдмрд╕ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдирд╣реАрдВред рдпрд╣ 'рдбрд┐рдлрд╝реЙрд▓реНрдЯ' рд╣реИ рдЬрд┐рд╕реЗ рдмрд╣рд┐рд╖реНрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ 2.11 рдореЗрдВ 'рд╕реБрд░рдХреНрд╖рд┐рдд' рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЖрдкрдХреЗ рдкрд╛рд╕ рд╣рдореЗрд╢рд╛ рдкреБрд░рд╛рдиреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ 'рдСрдкреНрдЯ рдЗрди' рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реЛрдЧрд╛ред

рдФрд░ рдпрд╣ рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╣рдо рдпрд╣рд╛рдВ рдХреИрд╕реЗ рдФрд░ рдХреНрдпреЛрдВ рдкрд╣реБрдВрдЪреЗ:

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕рдореВрд╣ рдХреЗ рдирд╛рдо рд╣рдореЗрд╢рд╛ рд╕рд╛рдл-рд╕реБрдерд░реЗ рдереЗ, рдЙрдирдХреЗ рдкрд╛рд╕ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЕрд╕рдВрдЧрдд рдирд┐рдпрдо рдереЗ, рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рднреА рдЬрдЧрд╣ рдереАрдВ, YAML рдФрд░ INI рдкреНрд░рд╛рд░реВрдкреЛрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдиреЗ рдЕрдкрдирд╛ рдХрд╛рдо рдХрд┐рдпрд╛ред рдмрдбрд╝рд╛ рдмрджрд▓рд╛рд╡ 'рд╕реНрд╡рдЪреНрдЫрддрд╛ рдХрд╛ рдХреЗрдВрджреНрд░реАрдХрд░рдг рдФрд░ рд╕рд╛рдорд╛рдиреНрдпреАрдХрд░рдг' рдерд╛, рдпрд╣ 2.4 рдореЗрдВ рд╡рд╛рдкрд╕ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рд▓реЗрдХрд┐рди 2.8 рддрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд░рд╛рджрд╛ рдПрдХ рдорд╛рдирджрдВрдб рдпрд╛ рдЖрдзрд╛рд░ рд░реЗрдЦрд╛ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдерд╛ рдЬреЛ рд╕рднреА рдЕрдВрд╕рд┐рд▓реНрдмреЗ рдореЗрдВ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рдереЗ, рдЬрд┐рд╕рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЪрд░ рдХреЗ рд▓рд┐рдП 'рдЕрд╕реБрд░рдХреНрд╖рд┐рдд' рдпрд╛ 'рдЕрдорд╛рдиреНрдп' рд╡рд░реНрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрдИ рд▓реЛрдЧ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рди рдХреЗрд╡рд▓ рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░ рдмрд▓реНрдХрд┐ рдХреБрдЫ рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рднреА рдЗрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛рдпрд╛ рд╣реИред рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдкреНрд▓рдЧрдЗрдиреНрд╕ред

рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдХреБрдЫ рдореБрджреНрджреЗ рдереЗ рдФрд░ рдмрд╣реБрдд рд╕рд╛рд░реА рдЪрд░реНрдЪрд╛рдПрдВ рдереАрдВ (рдирд╣реАрдВ, рд╣рдо рдЗрд╕реЗ рдЫреБрдкрд╛рдХрд░ рддрдп рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЖрдИрдЖрд░рд╕реА рдореЗрдВ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдмреИрдардХреЗрдВ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рдЖрдк рд╕рднреА рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ, https://github.com/ansible/community/blob/master /meetings/README.md) рдФрд░ рдмрд╣реБрдд рд╕рд╛рд░реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╢рд╛рдорд┐рд▓ рдХреА рдЧрдИ рдереА (рдпреЗ рднреА рд▓реЙрдЧ рдХреА рдЧрдИ рд╣реИрдВ рддрд╛рдХрд┐ рдЖрдк рдЪрд░реНрдЪрд╛ рдФрд░ рддрд░реНрдХ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ рдЬрд╛ рд╕рдХреЗрдВ, рд▓реЗрдХрд┐рди 'рд▓реЙрдЧ рдбрдВрдкрд╕реНрдЯрд░ рдбрд╛рдЗрд╡рд┐рдВрдЧ' рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЕрдзрд┐рдХрд╛рдВрд╢ рдореБрджреНрджреЛрдВ рдХреЛ рд╕рдордЭрд╛рдКрдВрдЧрд╛) . 2.8 рдореЗрдВ рдмрд╛рд╣рд░ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рд╣рдореЗрдВ рдлреАрдбрдмреИрдХ рдХрд╛ рдПрдХ рдФрд░ рджреМрд░ рдорд┐рд▓рд╛ рдФрд░ рд╣рдо рдХреБрдЫ рдмрдЧреНрд╕ рдХреЛ рдареАрдХ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬреИрд╕реЗ рд╣рдореЗрд╢рд╛ рдПрдХ рдбрд┐рдкреНрд░реЗрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛, рди рдХрд┐ рдХреЗрд╡рд▓ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдФрд░ рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЗ рд╢рдмреНрджреЛрдВ рдХреЗ рд╕рд╛рдеред

  • 'рдкрд╛рдпрдерди рдирд╛рдо рдХреНрдпреЛрдВ?'
    рдЕрдзрд┐рдХрддрд░ рдХреНрдпреЛрдВрдХрд┐ Ansible Python рдФрд░ JInja (рдЬреЛ рдХрд┐ Python рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рдореВрд╣реЛрдВ рдХреЗ рдХреБрдЫ рдЙрдкрдпреЛрдЧ (рдЬреНрдпрд╛рджрд╛рддрд░ рд╣рдорд╛рд░реЗ рд╢реБрд░реБрдЖрддреА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рд╕рд╛рд░реЗ 3rd рдкрд╛рд░реНрдЯреА рд╡рд╛рд▓реЗ рднреА) рдкреНрд▓реЗрдмреБрдХ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдкреИрджрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛рдиреА stuff: '{{ groups.gropup-name-with-dash ... }}' рдпрд╛ рдЗрд╕рд╕реЗ рднреА рдмрджрддрд░ group.name.with.dots ред рдпрд╣ рдХрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рднреНрд░рдо рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИ рдЬреЛ 'рдбреЙрдЯ рдиреЛрдЯреЗрд╢рди рдлреЙрд░ рд╡реЗрд░рд┐рдПрдмрд▓ рдПрдХреНрд╕реЗрд╕' рдХреА рдЬрд┐рдВрдЬрд╛ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рдкреЛрд╕реНрдЯ рдкрд░ рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓реЛрдЧ рдЗрд╕рд╕реЗ рдЕрд╕рд╣рдордд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореБрджреНрджрд╛ рд╣реИ рдФрд░ рдирдП рдпрд╛ рдкреБрд░рд╛рдиреЗ Ansible рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП 'рдЬрд╛рд▓' рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЬреЛ рд▓реЛрдЧ 'рдСрдкреНрдЯ рдЖрдЙрдЯ' рдХрд░рддреЗ рд╣реИрдВ, рд╡реЗ Ansible рдХреЗ рдЕрдиреНрдп рднрд╛рдЧреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЛ рддреЛрдбрд╝рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрддреЗ рд╣реИрдВред

  • 'рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдореБрдЭреЗ рдкрд╕рдВрдж рдЖрдпрд╛ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╕реВрдЪреА рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реНрд╡рдЪреНрдЫрддрд╛ рдереА?'
    рдареАрдХ рд╣реИ, рдЖрдк рдЕрднреА рднреА 'рдХреЗрдВрджреНрд░реАрдп' рд╕реНрд╡рдЪреНрдЫрддрд╛ рдХреЛ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рд╕реНрд░реЛрдд рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдкреБрд░рд╛рдиреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдирдП рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдкреНрд▓рдЧрдЗрдиреНрд╕ рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд▓реНрдк рдЬреЛрдбрд╝реЗ рдЧрдП рд╣реИрдВ, рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рд╕реНрдерд┐рддрд┐, рдЖрдк рдЕрднреА рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯред

  • 'рд╣реЛрд╕реНрдЯрдирд╛рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ/рд╣реЛрд╕реНрдЯрдирд╛рдо рдЕрдЧрд▓реЗ рд╣реИрдВ?'
    рд╕рдореВрд╣реЛрдВ рдХреА рддрд░рд╣, рд╣реЛрд╕реНрдЯрдирд╛рдореЛрдВ рдХрд╛ рд╕реНрд╡рдЪреНрдЫрддрд╛рдХрд░рдг рд╣рдореЗрд╢рд╛ рдЕрд╕реНрддрд┐рддреНрд╡ рдореЗрдВ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдмрджрд▓рд╛ рдирд╣реАрдВ рд╣реИ, рд╣реЛрд╕реНрдЯрдирд╛рдореЛрдВ рдХреА рдПрдХ рдЕрд▓рдЧ рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рд╣реИрдВ, рдЬреИрд╕реЗ DNS рд╕рдорд╛рдзрд╛рди рдпреЛрдЧреНрдп рд╣реЛрдирд╛
    рдиреЗрдЯрд╡рд░реНрдХ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдпрд╛ рдХреНрд░реЛрдЯ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реИрдз рдкрде рдХреЗ рд▓рд┐рдПред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдбреЙрдЯ рдиреЛрдЯреЗрд╢рди рдореЗрдВ рд╣реЛрд╕реНрдЯрдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╣реБрдд рдХрдо рдпрд╛ рдХреЛрдИ рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рд╣реИрдВ, рдпрд╣ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдерд╛ рдирд╣реАрдВ рд░рд╣реА рд╣реИ рдФрд░ рдЕрдЧрд░ рд▓реЛрдЧ рдЕрдЪрд╛рдирдХ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдмрди рдЬрд╛рдПрдЧреА, рд▓реЗрдХрд┐рди рд╕рдореВрд╣ рдирд╛рдореЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдЕрдм рддрдХ рдЯрд╛рд▓рд╛ рд╣реИред рдЕрдЧрд░ рдпрд╣ рдЖрдЧреЗ рдЪрд▓рдХрд░ рд╕рдорд╕реНрдпрд╛ рдмрди рдЬрд╛рддреА рд╣реИ ... рдореБрдЭреЗ рдХреЛрдИ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рднреА рдирд╣реАрдВ рджрд┐рдЦрддрд╛ред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЯрд┐рдХрдЯ (рдкрд░реНрдпрд╛рдкреНрдд рд╡рд┐рд╡рд░рдг/рд╕реВрдЪрдирд╛ рдирд╣реАрдВ рд╣реИ) рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдВрдмреЛрдзрд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЬрд▓реНрдж рд╣реА рдареАрдХ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдмрд╛рдХреА рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП, рджреЗрд╡ рдЬреАрдердм рдХреЛ рдПрдХ рдордВрдЪ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдХреБрдЫ рдЯрд┐рдХрдЯ рдЙрд╕рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдкрд┐рдЫрд▓реЗ рдЯрд┐рдХрдЯ рдЬреЛ рдмрдВрдж рд╣реИ рдФрд░ рдПрдХ рд▓рдВрдмрд╛ рдзрд╛рдЧрд╛ рднреА рд╣реИ, рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреНрдпрд╛рджрд╛рддрд░ рдХреНрдпреЛрдВрдХрд┐ рджреЗрд╡ рдмрдВрдж рдореБрджреНрджреЛрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЖрдИрдЖрд░рд╕реА рдореЗрдВ рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдпрд╛ рдирдП рдореБрджреНрджреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░реЗрдВред

рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд╕рднреА рдкреНрд░рдореБрдЦ рдореБрджреНрджреЛрдВ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИ, рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рд╣рдо рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рдЦреБрд▓реЗ рд╣реИрдВ, рдПрдордПрд▓ рдпрд╛ рдЖрдИрдЖрд░рд╕реА рджреНрд╡рд╛рд░рд╛ рдбреНрд░реЙрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВ, рд╣рдо рд╕рд┐рд░реНрдл рдЬреАрдердм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдРрд╕реА рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫреА рдЬрдЧрд╣ рдирд╣реАрдВ рд╣реИред

рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд-рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред

рдЖрдкрдХреЛ рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рднрд▓реЗ рд╣реА рдбреЙрдЯ рдиреЛрдЯреЗрд╢рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдмрдВрдж рдХрд░рдирд╛ рдФрд░ рдХреБрдЫ рд░рд┐рд▓реАрдЬрд╝ рдкрд░ рдЙрд╕ рд╕рдорд░реНрдерди рдХреЛ рдмрд╣рд┐рд╖реНрдХреГрдд рдХрд░рдирд╛ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рд╕рд░рд▓ рд╣реЛрддрд╛ред рдХрдо рд▓реЛрдЧ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдмрдирд╛рдо рдЙрди рд▓реЛрдЧреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЬрд┐рдирдХреЗ рд╕рдореВрд╣ рдирд╛рдореЛрдВ рдореЗрдВ рдЕрдорд╛рдиреНрдп рд╡рд░реНрдг рд╣реИрдВред рд╕реЗ рд▓рд╛ рд╡рд┐рдП

@skyscooby рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрддрд░рджрд╛рдпреА рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдЬрд┐рдиреНрдЬрд╛ рд╣реИред

рдмрд╕ рдПрдХ рдмрд╛рд░ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рд╣рдореЗрд╢рд╛ рд╕рдореВрд╣ рдирд╛рдореЛрдВ рдореЗрдВ рдбреИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ, рдбреЙрдЯреНрд╕ рдФрд░ рдЕрдиреНрдп рд╡рд░реНрдг рдЬрд┐рдиреНрд╣реЗрдВ рдЕрдм 'рдЕрдорд╛рдиреНрдп' рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдмрд╕ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдирд╣реАрдВред

рдареАрдХ рд╣реИ, рдпрд╣ рдЬрд╛рдирдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ, рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрднрд╡ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдкрдХреЗ рдкрд╛рд╕ "рдЬреНрдЮрд╛рди рдХрд╛ рдЕрднрд┐рд╢рд╛рдк" рд╣реИред рдмрд╕ рдЗрд╕реЗ рджреЗрдЦрдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕реНрдерд╛рди рдкрд░ рд╕реНрд╡рдпрдВ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:

[рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдиреА]: TRANSFORM_INVALID_GROUP_CHARS рд╕реЗрдЯрд┐рдВрдЧ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдореВрд╣ рдирд╛рдореЛрдВ рдореЗрдВ рдЦрд░рд╛рдм рд╡рд░реНрдгреЛрдВ рдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рд╣реИ, рдпрд╣ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА
рдмрд╣рд┐рд╖реНрдХрд░рдг рдкрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ред рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рд╕рдВрд╕реНрдХрд░рдг 2.10 рдореЗрдВ рд╣рдЯрд╛ рджреА рдЬрд╛рдПрдЧреАред deprecation_warnings=False ansible.cfg рдореЗрдВ рд╕реЗрдЯ рдХрд░рдХреЗ рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдВ рдЕрдХреНрд╖рдо рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВред
[рдЪреЗрддрд╛рд╡рдиреА]: рд╕рдореВрд╣ рдирд╛рдореЛрдВ рдореЗрдВ рдЕрдорд╛рдиреНрдп рд╡рд░реНрдг рдкрд╛рдП рдЧрдП рд▓реЗрдХрд┐рди рдмрджрд▓реЗ рдирд╣реАрдВ рдЧрдП, рд╡рд┐рд╡рд░рдг рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП -vvvv рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

рдпрд╣ рдПрдХ рд▓рдВрдмрд╛, рд▓рдВрдмрд╛ рд░рд╛рд╕реНрддрд╛ рд╣реИ

[рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдиреА] рд╕рдореВрд╣ рдирд╛рдо 'my-servers' рдореЗрдВ '-' рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ Ansible 2.11 рд╕реЗ рдЕрдорд╛рдиреНрдп рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕реЗ рджрдмрд╛рдиреЗ рдХреЗ рд▓рд┐рдП force_valid_group_names рдХреЛ ansible.cfg рдпрд╛ ANSIBLE_TRANSFORM_INVALID_GROUP_CHARS рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЛ "рдЕрдирджреЗрдЦрд╛" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд░реЗрдВред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП https://docs.ansible.com/something рджреЗрдЦреЗрдВред

... рдЬреЛ рдореИрдВ, рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдпрд╣ рдореБрдЭреЗ рдПрдХ рдШрдВрдЯреЗ рд╕реЗ рдЕрдзрд┐рдХ рдмрдЪрд╛ рд▓реЗрддрд╛ред рдЕрдм рдЗрд╕реЗ рдЙрди рд▓реЛрдЧреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдЧреБрдгрд╛ рдХрд░реЗрдВ рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рд╣реИ рдпрд╛ рд╣реЛрдЧрд╛ред

рд╕рдореВрд╣-рдирд╛рдореЛрдВ рдореЗрдВ рдбреИрд╢ рдФрд░ рдбреЙрдЯреНрд╕ рдХрд╛ рдЕрдорд╛рдиреНрдп рд╣реЛрдирд╛ рдПрдХ рд╕рдордЭрджрд╛рд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд╣реАрдВ рд╣реИред рд▓реЛрдЧреЛрдВ рдХреЗ рдкрд╛рд╕ рд╣рдореЗрд╢рд╛ рдЙрдирдХреЗ рд╕рдореВрд╣ рдХреЗ рдирд╛рдо рд╣реЛрдВрдЧреЗред рд╕рдордЭрджрд╛рд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рдФрд░ рдЪрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рд▓рд┐рдП рдЖрдИрдПрдордПрдЪрдУ рдЕрдирд┐рд╢реНрдЪрд┐рдд рд╣реИред

рдКрдкрд░ рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж @bcoca ред рдЗрд╕рдХреА рдмрд╣реБрдд рд╕рд░рд╛рд╣рдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдЗрд╕ рдлреИрд╕рд▓реЗ рд╕реЗ рдЦреБрд╢ рдирд╣реАрдВ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдПрдХ рдЪрд░реНрдЪрд╛ рд╣реБрдИ рдФрд░ рдПрдХ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ред рдпрджрд┐ рдирд┐рд░реНрдгрдп рдЕрднреА рднреА рдмрд╣рд╕ рдХреЗ рд▓рд┐рдП рдЦреБрд▓рд╛ рд╣реИ рддреЛ рдЗрд╕реЗ рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдпрд╛ рдЖрдИрдЖрд░рд╕реА рдкрд░ рдЬрд╛рд░реА рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рд▓реЗрдХрд┐рди рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХрдмреНрдЬрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд╡рд┐рд╖рдп рдХреЗ рд▓рд┐рдП рдореИрдВ рдЗрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдЧрд░реВрдХ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдФрд░ рдкреЛрд░реНрдЯрд┐рдВрдЧ рдЧрд╛рдЗрдб рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

  • рд╕рдореВрд╣ рдирд╛рдо рдХреНрдпрд╛ рд╣реИрдВ рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдорд╛рдиреНрдп рд╣реИрдВ?
  • рдбреИрд╢, рд╣рд╛рдЗрдлрд╝рди, рдбреЙрдЯреНрд╕ рдФрд░ рдХреЛрд▓рди рд╕рд╣рд┐рдд рд╕рдореВрд╣ рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд░рд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд░реЗрдВ?

рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЕрдкрдиреЗ рд╕рднреА рд╕рдореВрд╣ рдФрд░ рд╣реЛрд╕реНрдЯ рдирд╛рдореЛрдВ рдореЗрдВ рдбреИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╣рдо рдЗрд╕реЗ рдирд╣реАрдВ рдмрджрд▓реЗрдВрдЧреЗред рдЗрд╕рд▓рд┐рдП рдЬрдм рднреА рдореИрдВ рдПрдХ рдирдпрд╛ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди/рд╡рд╛рддрд╛рд╡рд░рдг рд╕реЗрдЯрдЕрдк рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рд╣рд░ рдмрд╛рд░ рдЕрдкрдирд╛ ansible.cfg рдСрдкреНрдЯ-рдЗрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЕрдкрдирд╛

рдЪрд░реНрдЪрд╛ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдмреБрджреНрдзрд┐рдорд╛рди рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдореИрдВрдиреЗ Ansible Development Group рдореЗрдВ рдПрдХ рд╕реВрддреНрд░ рдЦреЛрд▓рд╛ред

рд╕рд╛рджрд░,
рдЯреНрд░реЛрдВрдбреЗ

рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рд╕рднреА рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рдзрдиреНрдпрд╡рд╛рдж рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдЬреЛ рдкрдврд╝рд╛ рдЙрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдореИрдВрдиреЗ рдПрдХ рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ https://docs.sbarnea.com/ansible/naming-hosts-and-groups рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ - рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдмрддрд╛рдПрдЧрд╛ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдХреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

@ рд▓реВрдк-рдПрд╡рдЧреЗрдиреА рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдХреЛрд░ рдЯреАрдо рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ "рдЬреНрдЮрд╛рди рдХрд╛ рдЕрднрд┐рд╢рд╛рдк" рд╣реИ рдФрд░ рдпрд╣ рд╣рдореЗрдВ рдРрд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдФрд░ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдмрдирд╛рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИ рдЬреЛ рд╕рднреА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИрдВред рд╣рдо рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдореБрджрд╛рдп рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╣рдореЗрдВ рдЙрддреНрддрд░рджрд╛рдпреА рдЖрдХрд╛рд░ рджреЗрдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓ рд╕рдХреЗ рдФрд░ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рд╕рд░рд▓ рд░рдЦрд╛ рдЬрд╛ рд╕рдХреЗ, рдЗрд╕рд▓рд┐рдП рдЬрдм рд▓реЛрдЧреЛрдВ рдХреЗ рдкрд╛рд╕ рд╣рдорд╛рд░реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдФрд░ рд╣рдорд╛рд░реЗ рддреНрд░реБрдЯрд┐/рдЪреЗрддрд╛рд╡рдиреА рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╢рдВрд╕рд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВ, рддреЛ рдореИрдВ рд╣рдореЗрд╢рд╛ рдЙрдиреНрд╣реЗрдВ рдПрдХ рднреЗрдЬрдХрд░ рд╣рдорд╛рд░реА рд╕рд╣рд╛рдпрддрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдкреБрд▓ рдЕрдиреБрд░реЛрдзред рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╕рдВрджреЗрд╢ рдирд┐рдореНрди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реИ рдФрд░ рдпрджрд┐ рдЖрдк рд╣рдореЗрдВ рд╕реБрдЭрд╛рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕рд╛рде рдПрдХ рдкреАрдЖрд░ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ рддреЛ рд╣рдо рдЗрд╕рдХреА рдмрд╣реБрдд рд╕рд░рд╛рд╣рдирд╛ рдХрд░реЗрдВрдЧреЗ ...

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

@jctanner рдЖрдорддреМрд░ рдкрд░ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдПрдХ рдирд┐рдГрд╢реБрд▓реНрдХ рдФрд░ рдЙрдкрдпреЛрдЧреА рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреАрдЖрд░ рд╕рдмрдорд┐рдЯ рдХрд░рдиреЗ рдореЗрдВ рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреАред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкреНрд░рдпреЛрдЬреНрдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХрд╛ рдкреНрд░рдпреЛрдЬреНрдпрддрд╛ рдХреЗ рдкреНрд░рддрд┐ рд╕рд╛рдорд╛рдиреНрдп рд░рд╡реИрдпрд╛, "рдЗрдЪреНрдЫрд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ" рдХреЗ рд░реВрдк рдореЗрдВ рдмрдВрдж рдХрд░рдиреЗ рдХреА рдЙрдирдХреА рдЙрддреНрд╕реБрдХрддрд╛, рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВ рд╕реНрд╡рдпрдВ-рд╕реНрдкрд╖реНрдЯ рдмрдЧ (рднрд▓реЗ рд╣реА рдбрд┐рдЬрд╝рд╛рдЗрди рдмрдЧ) рдорд╛рдирддрд╛ рд╣реВрдВ рдФрд░ рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ 2025 (рдпрд╣ рджреЛ рд╣рдЬрд╛рд░ рд╣реИ) !) рдЦреБрд▓реЗ рдкреАрдЖрд░ рдореБрдЭреЗ рдмрд╣реБрдд рдХрдо рд╡рд┐рд╢реНрд╡рд╛рд╕ рджрд┐рд▓рд╛рддреЗ рд╣реИрдВ рдХрд┐ рдореЗрд░рд╛ рдХрд╛рдо рдмреЗрдХрд╛рд░ рдирд╣реАрдВ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ "рд╕рдореБрджрд╛рдп рдкрд░ рднрд░реЛрд╕рд╛" рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдХрд╣рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдВрд╕реНрдХреГрддрд┐ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ IMHOред

рд╣рдореНрдо.. рдЙрд╕ рдореМрдХреЗ рдиреЗ рдореБрдЭреЗ рднреА рдорд╛рд░рд╛ред

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рд╣рдо рдиреЗрдЯрд╡рд░реНрдХ рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдореВрд╣ рдирд╛рдореЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдЖрд╕рд╛рдиреА рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореБрдЭреЗ рд╕рдореВрд╣ рдирд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рдбреЙрдЯ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╢реБрдЧрд░ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдЪреБрдирдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдРрд╕рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдореИрдВрдиреЗ рдХрднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдЗрд╕реЗ рдЕрдиреНрдп рдЪрд░ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ)ред

рднрд╡рд┐рд╖реНрдп рдореЗрдВ 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 = рдЙрдкреЗрдХреНрд╖рд╛ рдХреЗ рд╕рд╛рде рдЕрдирджреЗрдЦрд╛ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛, рдФрд░ рдЬрдм рдореИрдВ 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 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛ (рдФрд░ 2.10 рддрдХ рдЕрднреА рднреА рд╣реИ) рднрд▓реЗ рд╣реА рд╕рдореВрд╣ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ foo-bar.xyz рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрд╕рд╕реЗ рдЪреАрдЬреЗрдВ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддреА рд╣реИрдВ рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдм рдХреЛрд░ рдЯреАрдо рднреА рдЗрд╕рд╕реЗ рд╕рд╣рдордд рд╣реИред
рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдореБрджреНрджреЗ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХрд╛ рдЙрдирдХрд╛ рдЕрдЧрд▓рд╛ рдкреНрд░рдпрд╛рд╕ "рдЕрдорд╛рдиреНрдп" рд╕рдореВрд╣ рдХреЗ рдирд╛рдореЛрдВ рдХреЛ рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рд░рдЦрдирд╛ рдЕрд╕рдВрднрд╡ рдмрдирд╛рдирд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЬрд╣рд╛рдБ рддрдХ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдБ рдХрд┐ force_valid_group_names = ignore рд╕реЗрдЯ рдХрд░рдХреЗ рдЗрд╕ рд╕реАрдорд╛ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдирд╛ рд╣рдореЗрд╢рд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред

рд▓рдВрдмреА рдХрд╣рд╛рдиреА рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИрдВ рдЬреЛ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВ [1]ред рдЬрд╣рд╛рдВ рд╕реЗ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдирд╛рдо рдФрд░ рдЪреЗрддрд╛рд╡рдиреА рдХрд╛ рд╢рдмреНрджрд╛рдВрдХрдиред

рдлрд┐рд░ рд╕реЗ рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдХреИрд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВред рдореБрдЭреЗ рд╕рд╣реА рдЬрд╡рд╛рдм рджреЛ рдЕрдЧрд░ рдореИрдВ рдЧрд▓рдд рд╣реВрдБ!

[1] рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВ RFC1925 рдкреИрд░рд╛рдЧреНрд░рд╛рдл 2, рдмрд┐рдВрджреБ (5)

рдореИрдВ рдмрд╕ рдЕрдкрдирд╛ 2┬в рдЫреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рджреГрдврд╝рддрд╛ рд╕реЗ рдбреИрд╢> рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рд╣реВрдВред рдмрд╕ рдорд╛рдорд▓реЗ рдкрд░ рдПрдХ рддреНрд╡рд░рд┐рдд

рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЕрдЧрд░ рдРрд╕рд╛ рдирд╣реАрдВ рдерд╛, рддреЛ рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВ рдЬрдВрдЧрд▓реА рдореЗрдВ рд╕рд░реНрд╡рд░ рд▓реЗрдмрд▓ рдФрд░ рд╕рдореВрд╣реЛрдВ рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдбреИрд╢ рдХреЛ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдмрд╛рд░ рджреЗрдЦрддрд╛ рд╣реВрдВ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдФрд░ рдЪреАрдЬ рд╣реЛрдЧреА рдЬрд┐рд╕реЗ рдореБрдЭреЗ рдЕрдкрдиреЗ рд╕рднреА рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдореЗрд░реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреА ansible.cfg рдлрд╛рдЗрд▓реЗрдВ (рдореЗрд░реЗ рдкрд╛рд╕ рдкреНрд░рддрд┐ рдкреНрд▓реЗрдмреБрдХ рдПрдХ рд╣реИ)ред

рдореБрдЭреЗ рдПрдХ рд╕рдЦреНрдд рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЛ рдордЬрдмреВрд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рдЬрд╣рд╛рдВ рдпрд╣ рдЕрдиреБрднрд╡ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рдЖрдк рдореЗрд░реА рднреВрдорд┐рдХрд╛ рдХреЗ рдирд╛рдореЛрдВ рдореЗрдВ рдбреИрд╢ рдХреЗ рд▓рд┐рдП рдЖрдП (рдФрд░ рдХрднреА-рдХрднреА рдкреБрд░рд╛рдиреА рднреВрдорд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХрд╡рдЪрди рдЕрдкрд╡рд╛рджреЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рджреА рдЧрдИ рдереА), рдлрд┐рд░ рдЖрдк рдбреИрд╢ рдХреЗ рд▓рд┐рдП рдЖрдП рдореЗрд░реЗ рд╕рдВрдЧреНрд░рд╣ (рдЙрдиреНрд╣реЗрдВ рдХрд┐рд╕реА рднреА рддрд░рд╣, рдЖрдХрд╛рд░ рдпрд╛ рд░реВрдк рдореЗрдВ рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИ), рдФрд░ рдЕрдм рдЖрдк рдореЗрд░реА рд╕реВрдЪреА рдореЗрдВ рдбреИрд╢ рдХреЗ рд▓рд┐рдП рдЖрдП рд╣реИрдВ!

рдпрд╣ рдбреИрд╢ рдХреЗ рдЦрд┐рд▓рд╛рдл рдПрдХ рдпреБрджреНрдз рд╣реИ... рдФрд░ рдореИрдВ рдХрд╣реАрдВ рдПрдХ рд░реЗрдЦрд╛ рдЦреАрдВрдЪрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВтАФрдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдПрдХ рдРрд╕рд╛ рд╕реНрдерд╛рди рд╣реИ рдЬрд╣рд╛рдВ рд▓реЛрдЧреЛрдВ рдХреЛ рдбреИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрд╕рдВрднрд╡ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХрдИ рдЧрддрд┐рд╢реАрд▓ рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдкреНрд░рджрд╛рддрд╛ рд╕рдореВрд╣ рдЖрдзрд╛рд░рд┐рдд рд╕рдореВрд╣ рдмрдирд╛рддреЗ рд╣реИрдВ рд╕рд░реНрд╡рд░ рдирд╛рдо рдФрд░ рд▓реЗрдмрд▓ рдкрд░, рдФрд░ рдХрдИ (рдпрджрд┐ рдЕрдзрд┐рдХрддрд░ рдирд╣реАрдВ) рд╕рдВрдЧрдарди рдбреИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЪреАрдЬреЛрдВ рдХреЛ рд▓реЗрдмрд▓ рдХрд░рддреЗ рдкреНрд░рддреАрдд рд╣реЛрддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг us-east-1a , рди рдХрд┐ us_east_1a )ред

рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реЛрдиреЗ рдореЗрдВ рдордЬрд╝реЗрджрд╛рд░ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ Ansible 2.11 рдХреЗ рд░реВрдк рдореЗрдВ рдРрд╕рд╛ рд╣реА рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИред

рдпрджрд┐ рдпрд╣ рд╕рдм рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЬрд┐рдирдЬрд╛ 2 рдФрд░ рдкрд╛рдпрдерди рд╕реЗ рдЕрдкрд░рд┐рдЪрд┐рдд рдХреБрдЫ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдпрд╣ рдирд╣реАрдВ рдкрддрд╛ рд╣реИ рдХрд┐ something.with-some-dashes рдЕрдорд╛рдиреНрдп рд╣реИ, рддреЛ рдореИрдВ рддрд░реНрдХ рджреВрдВрдЧрд╛ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рд╕рд┐рдЦрд╛рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ "рдпрджрд┐ рдбреИрд╢ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдбрд┐рдХреНрдЯ рдПрдХреНрд╕реЗрд╕ рдХреЗ рд▓рд┐рдП рдмреНрд░реИрдХреЗрдЯ рдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП something['with-some-dashes'] ред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдЖрдк рджреЛрдиреЛрдВ рдХреЛ рдЖрдкрд╕ рдореЗрдВ рдорд┐рд▓рд╛ рднреА рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╕реБрдкрд░ рд╢реБрджреНрдз рдФрд░ рд╕рдордЧреНрд░ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдпрд╣рд╛рдВ рд╕рднреА рд░рд╕реНрдЯ рдбреЗрд╡рд▓рдкрд░ рдирд╣реАрдВ рд╣реИрдВ ...

рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд░рдЦрд╛, рдЬреЗрдлред рдореИрдВ рдпрд╣рд╛рдВ рдЖрдкрдХреЗ рд╕рд╛рде рджреГрдврд╝рддрд╛ рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ - рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдЗрддрдирд╛ рд╡рд┐рдШрдЯрдирдХрд╛рд░реА рд╣реЛрдЧрд╛, рдФрд░ рдХреЗрд╡рд▓ рдПрдХрдмрд╛рд░рдЧреА рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрдЬрд╛рдп, рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреЛ рдмрджрд▓ рджреЗрдЧрд╛ред Ansible рдЕрдм рд▓реАрдХ рд╕реЗ рд╣рдЯрдХрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

рд╣реЛрд╕реНрдЯрдирд╛рдо рдореЗрдВ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдХ рд╕рдордЭрджрд╛рд░ рджреБрдирд┐рдпрд╛ рдореЗрдВ, рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА_рд╣реЛрд╕реНрдЯрдирд╛рдо рдХреЛ рдордЬрдмреВрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реА рд╕реВрдЪреА рдЕрдм рдХрд╛рдлреА рдЕрд╕рдВрдЧрдд рджрд┐рдЦрд╛рдИ рджреЗрдЧреА, рдЬрд┐рд╕рдореЗрдВ рд╣реЛрд╕реНрдЯрдирд╛рдо рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдРрд╕реЗ рд╕рдореВрд╣ рдЬрд┐рдирдореЗрдВ рд╣рд╛рдЗрдлрд╝рди рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

рдХреГрдкрдпрд╛, рдмрд╕ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрд╡рд┐рдЪ рди рдХрд░реЗрдВред

https://en.m.wikipedia.org/wiki/Hostname

рдирдорд╕реНрддреЗ,
рдореИрдВ рдпрд╣рд╛рдВ рдЬреЗрдл рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕рд╣рдордд рд╣реВрдВред

рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ @bcoca рдиреЗ рдКрдкрд░ рдХрд╣рд╛ рд╣реИ, рдЕрдзрд┐рдХрд╛рдВрд╢ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЗрди рдЪрд░реНрдЪрд╛рдУрдВ рдХреЛ рдпрд╣рд╛рдВ рдирд┐рдпрдорд┐рдд рдЖрдзрд╛рд░ рдкрд░ рдирд╣реАрдВ рджреЗрдЦрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдореБрджреНрджрд╛ рдмрджрд▓рд╛рд╡ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдЬрдЧрд╣ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рд╣реА рджрд╕реНрддрд╛рд╡реЗрдЬ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред

рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рдХреГрдкрдпрд╛ рдереНрд░реЗрдб рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВ рдХреНрдпрд╛ TRANSFORM_INVALID_GROUP_CHARS рдХреА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯрд┐рдВрдЧ рдХреЛ рдмрджрд▓рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ? Google рд╕рдореВрд╣ рдореЗрдВред

рдорд╣рд╛рди рдЕрдВрдХ рдЬреЗрдлред

рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реЛрдиреЗ рдореЗрдВ рдордЬрд╝реЗрджрд╛рд░ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ Ansible 2.11 рдХреЗ рд░реВрдк рдореЗрдВ рдРрд╕рд╛ рд╣реА рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИред

рдЗрди рд╕рднреА рдЪрд░реНрдЪрд╛рдУрдВ рд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдмрдбрд╝реА рдЙрдкрд▓рдмреНрдзрд┐ рд╣реИред рдореИрдВ рдЙрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВ рдЬрд┐рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдорд╛рдзрд╛рди рдЖрд╡рд╢реНрдпрдХ рдХреЗ рд╡рд┐рдкрд░реАрдд рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рдЪреАрдЬреЛрдВ рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрдард┐рди рдмрдирд╛рддрд╛ рд╣реИ - рдпрд╣ рдПрдХ рдкрд┐рдЫрдбрд╝рд╛ рд╕рдорд╛рдзрд╛рди рд╣реИред

рдпрджрд┐ рдпрд╣ рд╕рдм рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХреБрдЫ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬрд┐рдиреНрдЬрд╛ 2 рдФрд░ рдкрд╛рдпрдерди рд╕реЗ рдЕрдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ, рддреЛ рдХреБрдЫ рдХрд╛ рдПрд╣рд╕рд╛рд╕ рдирд╣реАрдВ рд╣реИред рдХреБрдЫ-рдбреИрд╢ рдЕрдорд╛рдиреНрдп рд╣реИ, рдореИрдВ рддрд░реНрдХ рджреВрдВрдЧрд╛ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рд╕рд┐рдЦрд╛рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ "рдпрджрд┐ рдбреИрд╢ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдбрд┐рдХреНрдЯ рдПрдХреНрд╕реЗрд╕ рдХреЗ рд▓рд┐рдП рдмреНрд░реИрдХреЗрдЯ рдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХреБрдЫ ['рд╕рд╛рде-рдХреБрдЫ-рдбреИрд╢']ред рдЬрд░реВрд░рдд рдкрдбрд╝рдиреЗ рдкрд░ рдЖрдк рджреЛрдиреЛрдВ рдХреЛ рдЖрдкрд╕ рдореЗрдВ рдорд┐рд▓рд╛ рднреА рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╣ рдпрд╣рд╛рдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИ, рди рдХрд┐ рдЙрди рдЪреАрдЬреЛрдВ рдХреЛ рддреЛрдбрд╝рдирд╛ рдЬреЛ рд╕рд╛рд▓реЛрдВ рд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИрдВред

@geerlingguy рдХреА рд╢рд╛рдирджрд╛рд░ рдЯрд┐рдкреНрдкрдгреА - рд╣рд╛рдЬрд┐рд░!

рдореИрдВ рдЗрд╕реЗ Ansible рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдореБрдЭреЗ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ рдХрд┐ рд╡реИрдз рдкрд╛рдпрдерди рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреНрдпрд╛ рд╣реИ? рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ Ansible рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ Ansible (рдФрд░ рдЗрд╕рдХреЗ рдореЙрдбреНрдпреВрд▓) Python рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЗрд╕рдХреА рдкрд░рд╡рд╛рд╣ рдХреНрдпреЛрдВ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП? рдЙрд╕ рддрдереНрдп рдХреЛ рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рдордиреЗ рдЙрдЬрд╛рдЧрд░ рдХрд░рдирд╛ рдХреЗрд╡рд▓ рдЦрд░рд╛рдм рдбрд┐рдЬрд╝рд╛рдЗрди рд╣реИред

рдХрд┐рд╕реА рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдЬреИрд╕реА рдЪреАрдЬрд╝реЛрдВ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдорд╛рдиреНрдп JavaScript/Ruby/.NET/рдЬреЛ рдХреБрдЫ рднреА рдиреЛрдЯреЗрд╢рди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд╕рдорд╛рди рд╣реИред рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреНрдпреЛрдВ рдкрд░рд╡рд╛рд╣ рдХрд░реЗрдЧрд╛ рдХрд┐ рдЖрд╡реЗрджрди рдХрд┐рд╕ рднрд╛рд╖рд╛ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ?

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рд╢реБрд░реВ рдХрд░рдирд╛ рдПрдХ рдХрдард┐рди рд╡рд┐рд╖рдп рд╣реИ, рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ рдореИрдВ рдЗрд╕рд╕реЗ рдмрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВред рдЕрдЧрд░ рдореБрдЭреЗ рдХреЛрдИ рдмрджрд▓рд╛рд╡ рдХрд░рдирд╛ рд╣реИ, рддреЛ рдореИрдВ рдЖрдо рддреМрд░ рдкрд░ рдкреБрд░рд╛рдиреЗ, рдореМрдЬреВрджрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реВрдВ, рдФрд░ рд▓реЛрдЧреЛрдВ рдХреЛ рдирдП рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд▓рд┐рдП рдСрдкреНрдЯ-рдЗрди рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реВрдВред рдпрд╣ рдпрд╣рд╛рдБ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛? рдореБрдЭреЗ рдпрд╛ рддреЛ рдЕрдкрдирд╛ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдХреНрдпреЛрдВ рдмрджрд▓рдирд╛ рд╣реИ, рдпрд╛ рдЕрдкрдиреА рдкреВрд░реА рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдХреЛ рдЦрд░рд╛рдм рдХрд░рдирд╛ рд╣реИ? рджреВрд╕рд░реА рддрд░рдл рдХреНрдпреЛрдВ рдирд╣реАрдВ?

рдпрджрд┐ рдХрд┐рд╕реА рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдХрдбрд╝рд╛рдИ рд╕реЗ рдЕрдиреБрдкрд╛рд▓рди рдЯреЛрдХрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдЯреЛрдХрди рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдПрдХ рд▓реБрдХрдЕрдк рдЯреЗрдмрд▓ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЖрдВрддрд░рд┐рдХ рдЯреЛрдХрди рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ Ansible рдЕрдкрдиреЗ рдЯреЛрдХрди рдирд┐рдпрдореЛрдВ рдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдкрд░ рдкреНрд░рднрд╛рд╡ рдХреЛ рд╕реАрдорд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЕрдкрдиреА рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА, рднреВрдорд┐рдХрд╛рдУрдВ рдЖрджрд┐ рдХреЛ рдирд╛рдо рджреЗрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреИрд╕рд╛ рдХрд┐ рд╡реЗ рдпрд╛ рдЙрдирдХреЗ рдЧреНрд░рд╛рд╣рдХ рдлрд┐рдЯ рджреЗрдЦрддреЗ рд╣реИрдВред

рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдЗрд╕рдХреЗ рдЗрдЪреНрдЫрд┐рдд рдкреНрд░рднрд╛рд╡ рдХреЗ рд╡рд┐рдкрд░реАрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рд╕рдорд░реНрдерди рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП):

рдЕрдм рдХреЛрдИ рд╕реАрдорд╛рдВрдХрдХ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ) рджреЛрдиреЛрдВ рд╣реЛрд╕реНрдЯрдирд╛рдореЛрдВ рджреНрд╡рд╛рд░рд╛ (рдЬреЛ рдХрд┐ DNS рд╕рдорд╛рдзрд╛рди рдпреЛрдЧреНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрд░реНрдерд╛рдд, рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП) рдФрд░ рд╕рдореВрд╣ рдирд╛рдо (рдЬрд┐рд╕рдореЗрдВ рдбреИрд╢ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП)ред

рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрд┐рд╕реА рднреА рдореЗрдЬрдмрд╛рди рдХрд╛ рдирд╛рдо рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

рдПрд▓ рдорд┐ред, 14 рдкрд╣рд▓реЗред 2019 16:16, рдХреНрд░рд┐рд╢реНрдЪрд┐рдпрди рдкреНрд╡рд╛рдЗрдВрдЯрд░ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com
рд╡рд┐рд╡рд░рдг:

рдЕрдЧрд░ рдореИрдВ рдЗрд╕реЗ рд╕рдордЭреВрдВ
https://github.com/ansible/ansible/issues/56930#issuecomment-516863432
рд╕рд╣реА рдврдВрдЧ рд╕реЗред рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬрд┐рд╕реЗ рдкрджрд╛рд╡рдирдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рд╡рд╣ рд╣реИ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд
рд╕рдореВрд╣ рдХреЗ рдирд╛рдореЛрдВ рдХрд╛ рдкрд░рд┐рд╡рд░реНрддрдиред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ force_valid_group_names . рд╕реЗрдЯ рдХрд░рдирд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдареАрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
= 2.10 рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдХреА рдЙрдкреЗрдХреНрд╖рд╛ рдХрд░реЗрдВред

рдбреИрд╢ рдФрд░ рдЖрдк рдЬреЛ рдХреБрдЫ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрдирд╛ рднреА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдареАрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
рд╕рдореВрд╣ рдХреЗ рдирд╛рдо рдореЗрдВ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рднрд╡рд┐рд╖реНрдп рдореЗрдВ Ansible рдХреНрдпрд╛ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рд╡рд╣ рд╣реИ рд╕реИрдиреЗрдЯрд╛рдЗрдЬрд╝ рдХрд░рдирд╛
рдЙрдиреНрд╣реЗрдВ рддрд╛рдХрд┐ рдЖрдк "рдЕрдорд╛рдиреНрдп" рд╕рдореВрд╣ рдирд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдмрд┐рдВрджреАрджрд╛рд░ рд╕рдВрдХреЗрддрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗрдВред рдХреЗ рд▓рд┐рдпреЗ
рдЙрджрд╛рд╣рд░рдг:

рдЖрдкрдХреА рд╕реВрдЪреА рдореЗрдВ foo-bar.xyz рдирд╛рдо рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реИред рдЕрдм рдЖрдк рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ
рдПрдХ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЬреЛ рдЙрд╕ рд╕рдореВрд╣ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреА рд╕реВрдЪреА рдмрдирд╛рддрд╛ рд╣реИ:

{% рд╕рдореВрд╣реЛрдВ рдореЗрдВ рд╣реЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдП['foo-bar.xyz'] %}
{{ рдореЗрдЬрд╝рдмрд╛рди }}
{% рдЕрдВрдд%}

рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдпрд╣ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛:

{% рд╕рдореВрд╣реЛрдВ рдореЗрдВ рд╣реЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдП.foo-bar.xyz%}
{{ рдореЗрдЬрд╝рдмрд╛рди }}
{% рдЕрдВрдд%}

рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ - рдФрд░ . рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рдЕрд░реНрде рд╣реИред NS
рдмрд┐рдВрджреАрджрд╛рд░ рдЕрдВрдХрди рд╣рд╛рд▓рд╛рдВрдХрд┐ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдареАрдХ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдкрдХреЗ рд╕рдореВрд╣ рдХреЗ рдкрд╛рд╕ рд╣реЛрдЧрд╛
рдирд╛рдо foo_bar_xyz рдХреНрдпреЛрдВрдХрд┐ рдЯреЗрдореНрдкрд▓реЗрдЯ рддрдм рдмрди рдЬрд╛рддрд╛ рд╣реИ:

{% рд╕рдореВрд╣реЛрдВ рдореЗрдВ рд╣реЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдП.foo_bar_xyz%}
{{ рдореЗрдЬрд╝рдмрд╛рди }}
{% рдЕрдВрдд%}

рдЬреЛ рдмрд┐рд▓реНрдХреБрд▓ рдареАрдХ рд╣реИред

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЪреАрдЬреЛрдВ рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕ рдореЗрдВ, 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=AA5N2CJCIELW7JWHC6OJ35DQEQHSPA5CNFSM4HPRGLKKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LN27PORZ4Z521KN#IZGOD4-5K
рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/AA5N2CIVT5PLD2QCAGGBK6LQEQHSPANCNFSM4HPRGLKA
.

рдореЗрд░реА рдИрдорд╛рдирджрд╛рд░ рд░рд╛рдп рдореЗрдВ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдЧрд▓рдд рдирд┐рд░реНрдгрдп рд╣реИред рдФрд░ рдЧрд▓рдд рдХрд╛рд░рдг рд╕реЗред рд╕рдорд░реНрдерди рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдирд╛, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ?

Ansible, рдПрдХ рдЙрдкрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд░ рднрд╛рд╖рд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╡рд░рдг рдирд╣реАрдВ рдереЛрдкрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрддрдирд╛ рдкрд░реЗрд╢рд╛рди рд╣реВрдВ рдХрд┐ рдЯреЗрд░рд╛рдлреЙрд░реНрдо рдиреЗ рдореБрдЭреЗ рдЧрд▓реЗ рдХреЗ рдиреАрдЪреЗ рдЧреЛрд▓рд╛рдВрдЧ рд▓рдЧрд╛ рджрд┐рдпрд╛, рдЕрдм рдпрд╣рд╛рдВ рд╡рд╣реА рд╣реЛ рд░рд╣рд╛ рд╣реИ рдЬреЛ Ansible рдФрд░ "рдкрд╛рдпрдердирд┐рдХ" рд╢реИрд▓реА рдХреЗ рд╕рд╛рде рд╣реЛ рд░рд╣рд╛ рд╣реИред рдореБрдЭреЗ рдЧрд▓рдд рдордд рд╕рдордЭреЛ, рдореИрдВ рдЧреЛ рдФрд░ рдкрд╛рдпрдерди рджреЛрдиреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдлреА рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЬрдм рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ, рддреЛ рдореБрдЭреЗ рдЗрд╕рдХреА рдкрд░рд╡рд╛рд╣ рдХреНрдпреЛрдВ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП? рдФрд░ YAML рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдХреЛрдб рдЖрдзрд╛рд░ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд╡рд╛рджреЗ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рд╣реБрдЖ? "рдбреЗрдЯрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪрд╛, рдЬрд┐рд╕реЗ рдЖрдк рдкрдврд╝ рдФрд░ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ", рдореИрдВрдиреЗ рдРрд╕рд╛ рдХрдИ рдмрд╛рд░ рд╕реБрдирд╛ ... рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдореБрдЭреЗ рдкрддрд╛ рд╣реИ, YAML рдбреИрд╢ рдФрд░ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рджреЛрдиреЛрдВ рдХреА рдмрд┐рд▓реНрдХреБрд▓ рднреА рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

BTW, рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдмрд╣реБрдд рд╕реА рдЪреАрдЬреЗрдВ рд╣реИрдВред рд╣реЛрд╕реНрдЯрдирд╛рдо, рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдХреНрд╖реЗрддреНрд░ рдФрд░ рдЖрдИрдбреА рд╡рд╕реНрддреБрддрдГ рд╕рдм рдХреБрдЫ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдХреБрдЫ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд▓реЛрдЧреЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдЙрди рд╕рднреА рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╢реБрднрдХрд╛рдордирд╛рдПрдБ рдЬрд╣рд╛рдБ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП ...

рдпрд╣рд╛рдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рджреВрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддреНрд╡рд░рд┐рдд рд╕рдорд╛рдзрд╛рди рдХреА рддрд▓рд╛рд╢ рдореЗрдВ, рдмрд╕ force_valid_group_names = ignore рдХреЛ рдЕрдкрдиреЗ ansible.cfg рдФрд░ рдЦреБрд╢ рд░рд╣реЗрдВред

рдореЗрд░реА рд╕рдордЭ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рд╡реИрд╕реЗ рднреА рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рд╡рд╛рд▓реЗ рдЪрд░ рдХреЗ рд▓рд┐рдП рдбреЙрдЯ рдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЬрдм рдореИрдВ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреЗ рд╕рд╛рде рдЪрд░ рдХрднреА рдирд╣реАрдВ рдмрдирд╛рддрд╛ рд╣реВрдВ, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╡рд┐рдХреНрд░реЗрддрд╛ рд╣реИрдВ рдЬреЛ рдЬреЗрд╕рди рдПрдкреАрдЖрдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреЗ рд╕рд╛рде рд╢рдмреНрджрдХреЛрд╢ рдХреБрдВрдЬреА рд▓реМрдЯрд╛рддреЗ рд╣реИрдВред рдореЗрд░реЗ рд▓рд┐рдП рд╕рдордЭрджрд╛рд░ рд╡рд┐рдХрд▓реНрдк рд╕реНрдХреНрд╡рд╛рдпрд░ рдмреНрд░реИрдХреЗрдЯ рдиреЛрдЯреЗрд╢рди рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ force_valid_group_names рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рд╕рдбрд╝рдХ рдкрд░ рдФрд░ рдмреБрд░реЗ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рдкрдбрд╝рддреЗ, рдХреМрди рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдмрджрд▓рд╛рд╡ рдХреЗ рд╕рд╛рде рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдФрд░ рдХреНрдпрд╛ рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдЧрдИ рд╣реИред

рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рднрдпрд╛рдирдХ рдирд┐рд░реНрдгрдп рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬрдм рдУрдкрдирд╕реНрдЯреИрдХ (рдФрд░ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕) рдХреЗ рд╕рд╛рде рдЧрддрд┐рд╢реАрд▓ рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдмрд╛рдд рдЖрддреА рд╣реИред
"рдирд┐рд╖рд┐рджреНрдз рд╡рд░реНрдг" рд╡рд╛рд▓реЗ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдирд╛рдо рдФрд░ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреБрдВрдЬрд┐рдпрд╛рдВ рдЕрдХреНрд╕рд░ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХреНрд▓рд╛рдЙрдб рд╕реЗ рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдЖрдЗрдЯрдо рдФрд░/рдпрд╛ рд╕рдореВрд╣ рдЪрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реМрдЯрд╛ рджреА рдЬрд╛рддреА рд╣реИрдВред рдпрд╣ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдУрдкрдирд╕реНрдЯреИрдХ (рдФрд░ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕) рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреАрд╡рди рдирд░рдХ рдмрдирд╛рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдореЗрдЯрд╛ рдЯреИрдЧ рдФрд░ рдпрд╛ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдЖрдИрдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдмреЗрдбрд╝реЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ:
рдЙрджрд╛рд╣рд░рдг-8ca09c33-f255-440f-9544-b0ab318c79d9
рдореЗрдЯрд╛-рдУрдПрд╕_рдЙрдмрдВрдЯреВ

рдЙрддреНрддрд░рджрд╛рдпреА рджреЗрд╡реЛрдВ рдХреЛ @geerlingguy рдХреА рд░рд╛рдп рдХреЛ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рд▓реЗрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡рд╣ Ansible Galaxy рдХреЗ рд╕рдмрд╕реЗ рдмрдбрд╝реЗ рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдФрд░ рдЙрд╕рдХреА рднреВрдорд┐рдХрд╛рдУрдВ рдХреЛ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдЦрд╛рддреЗ рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмреБрд░рд╛ рд╣реИ рдЬрд┐рдирдХреЗ рдирд╛рдо рдХреЗ рд╣рдЬрд╛рд░реЛрдВ рд╣реЛрд╕реНрдЯ рд╣реИрдВ: $env-$role-[0..99] ред рдХреНрдпрд╛ рд╣рдореЗрдВ рдЕрдкрдиреЗ рдЙрддреНрддрд░рджрд╛рдпреА рдЕрдзрд┐рдкрддрд┐рдпреЛрдВ рдХреЛ рдЦреБрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд░ рдЪреАрдЬ рдХрд╛ рдирд╛рдо рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП?

@ssbarnea рдПрдХ рдмрд╛рдд рдХреЗ рд▓рд┐рдП, рд╣рдо рдХреЗрд╡рд▓ рдЪрд░ рдирд╛рдореЛрдВ рдФрд░ рдЕрдиреНрдп рд╕рдорд╛рди рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдзрдХреНрдХрд╛ рджреЗ рд░рд╣реЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рдорд╛рдиреНрдп рдЕрдЬрдЧрд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реИрдВред рд╕рдореВрд╣ рдирд╛рдореЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдФрд░ рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ "рдбреЙрдЯ рд╕рд┐рдВрдЯреИрдХреНрд╕" рдЬреИрд╕реЗ groups.foo-group рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ, рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреА рдЫреЛрдЯреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдХрд╛рд░рдг рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдФрд░ рд╕рдорд░реНрдерди рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдиреЗ рд╣рдореЗрдВ рд╕реБрд░рдХреНрд╖рд┐рдд рдЧрд╛рд░реНрдб рдирд╛рдореЛрдВ рдХреЗ рд░рд╛рд╕реНрддреЗ рдкрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛ рд╕рдХреЗ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛рдПрдВ рди рд╣реЛрдВред

рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рдЕрдорд╛рдиреНрдп рд╡рд░реНрдг рдорд╛рдирддреЗ рд╣реИрдВ, рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рд╕рдХрддреЗ рд╣реИрдВред

рдХрдм рддрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рдЬрд╛рдПрдЧреА? рдХреНрдпрд╛ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдЙрддреНрддрд░рджрд╛рдпреА рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдерд╛рдпреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд┐рдХрд▓реНрдк рд╣реЛрдЧрд╛, рдпрд╛ рдпрд╣ рдХреЗрд╡рд▓ 2.11 рддрдХ рд╕рдорд░реНрдерд┐рдд рд╣реЛрдЧрд╛? рдореБрдЭреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЪрд╛рд▓реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд▓рд┐рдП рдЦреБрд╢реА рд╣реЛрдЧреА, рдЬрдм рддрдХ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рд╣рдореЗрд╢рд╛ рдЗрд╕реЗ рдмрдВрдж рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реЛрддрд╛ рд╣реИред

рдпрджрд┐ рдпрд╣ 2.11+ рдореЗрдВ рдПрдХ рдХрдард┐рди рдкреНрд░рддрд┐рдмрдВрдз рдмрди рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдРрд╕реЗ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рдЦреЛрддреЗ рд╣реБрдП рдкрд╛рдПрдВрдЧреЗ рдЬреЛ рдЙрдирдХреЗ рд╕рдВрдЧрдарди рдХреА рдмрд╛рдзрд╛рдУрдВ рд╕реЗ рдмрдВрдзреЗ рд╣реИрдВ (рд╕рднреА рдЙрддреНрддрд░рджрд╛рдпреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдкрд╛рд╕ рдЙрдирдХреА рдХрдВрдкрдиреА рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдирд╛рдордХрд░рдг рд╕рдореНрдореЗрд▓рдиреЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рд╢рдХреНрддрд┐ рдирд╣реАрдВ рд╣реИ)ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЪреБрдиреМрддреА рдкреЗрд╢ рдХрд░реЗрдЧрд╛ рдЬреЛ рдХреНрд▓рд╛рдЙрдб рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрддрд░рджрд╛рдпреА рд╣реИрдВ, рдЬрд╣рд╛рдВ рдбреИрд╢ рдХрд╛ рдЕрддреНрдпрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╕рд┐рд░реНрдл рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдпрд╣рд╛рдВ рдкреВрд░рд╛ рдзрд╛рдЧрд╛ рдирд╣реАрдВ рдкрдврд╝рд╛ рд╣реИред рдбреЗрд╡реЗрд▓ рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдкрд░ рдПрдХ рд╕реВрддреНрд░ рднреА рд╣реИ: https://groups.google.com/forum/#!topic/ansible -devel/bjAcM9ferIw

рдЖрдИрдПрдордПрдЪрдУ рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЦрд░рд╛рдм рд╡рд┐рдХрд▓реНрдк рдерд╛ред рдорд╛рдореВрд▓реА рд░рд┐рд▓реАрдЬрд╝ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдХреЛрдбрдмреНрд░реЗрдХрд┐рдВрдЧ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдкрд░рд┐рд╡рд░реНрддрди рд╣рдореЗрдВ рдЕрдкрдиреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ Ansible рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИред рдХреНрдпреЛрдВрдХрд┐ рдЬрдм рдпрд╣ рдореЗрд░реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рдкреНрд▓реЗрдмреБрдХ рдХреЛ рддреЛрдбрд╝рддрд╛ рд╣реИ рддреЛ рдореИрдВ Ansible рдХреЛ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд░ рдкрд╛рдКрдВрдЧрд╛ред

рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ @bcoca рдиреЗ рдКрдкрд░ рдХрд╣рд╛ рд╣реИ, рдЕрдзрд┐рдХрд╛рдВрд╢ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЗрди рдЪрд░реНрдЪрд╛рдУрдВ рдХреЛ рдпрд╣рд╛рдВ рдирд┐рдпрдорд┐рдд рдЖрдзрд╛рд░ рдкрд░ рдирд╣реАрдВ рджреЗрдЦрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдореБрджреНрджрд╛ рдмрджрд▓рд╛рд╡ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдЬрдЧрд╣ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рд╣реА рджрд╕реНрддрд╛рд╡реЗрдЬ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред

@Tronde : рдХреЛрдИ рдпрд╣ рддрд░реНрдХ рджреЗрдЧрд╛ рдХрд┐ рдкреНрд░рднрд╛рд╡ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛рдирд┐рдпреЛрдВ рдХреЛ рд▓рд┐рдЦреЗ рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛рдУрдВ рдФрд░ рдЧреНрд░рд╛рд╣рдХреЛрдВ рд╕реЗ рдкрд░рд╛рдорд░реНрд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХрд┐рд╕реА рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЛ рдХреЛрдб рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдПрдХрддреНрд░ рдХреА рдЬрд╛рддреА рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣рд╛рдВ рдХрдИ рд▓реЛрдЧреЛрдВ рдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдпрд╣ рдПрдХ рдЙрддреНрдкрд╛рдж рдПрдордЬреАрдПрдордЯреА рд╡рд┐рдлрд▓ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рджреЗрдЦрд╛ рд╣реИред

рд╕реНрдерд┐рддрд┐ рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ @andyfeller рдЗрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ:

рд╣рдореЗрдВ рдЕрдкрдиреА рд╕рд╛рдЗрдЯ рдкрд░ рдЗрд╕рд╕реЗ рд╕рдорд╕реНрдпрд╛ рд╣реИред

рд╣рдо Red Hat рдкрд╣рдЪрд╛рди рдкреНрд░рдмрдВрдзрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд╛рд╣рд░реА рд╡рд╕реНрддреБ-рд╕реВрдЪреА рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо рдЗрд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рдореЗрдВ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдХреЗ рдмрдЬрд╛рдп рдбреИрд╢ рдХреЗ рд╕рд╛рде рдХрдИ рд╣реЛрд╕реНрдЯ рд╕рдореВрд╣ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдпрд╣ рдирд╣реАрдВ рдмрджрд▓рд╛ рдЬрд╛рдПрдЧрд╛ (рдХреНрдпреЛрдВрдХрд┐ рдЙрди рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдЕрдиреНрдп рд╕рднреА рдЪреАрдЬреЗрдВ рдореМрдЬреВрдж рд╣реИрдВ)ред

рддреЛ, рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдП:

  • рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП Ansible рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
  • рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рд╢рд╛рдВрдд рдХрд░реЗрдВ
  • рдХрдорд╛рдВрдб рд▓рд╛рдЗрди Ansible рдФрд░ Ansible Tower рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд░реЗрдВ

рдПрдлрд╡рд╛рдИрдЖрдИ рдкреАрдЖрд░ https://github.com/ansible/ansible/pull/66650 (рдХреГрдкрдпрд╛ рд╡рд╣рд╛рдВ рдХреЛрдИ рдкрд┐рдЪрдлреЛрд░реНрдХ рдирд╣реАрдВ рд╣реИ) 2.10 (рд╡рд░реНрддрдорд╛рди рдХреНрд╖рдг рдХреЗ рдЕрдиреБрд╕рд╛рд░) рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЬреЛ рдХреЛрдИ рднреА рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЗрд╕ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рджреЗрдЦрддрд╛ рд╣реИ (рдПрдХ рдмрд╛рд░ рдЬрдм рд╡реЗ 2.10 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рдлрд┐рд░ рд╕реЗ рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рдкреАрдЖрд░ рд╡рд┐рд▓рдп рд╣реЛ рдЧрдпрд╛ рд╣реИ) рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдкреНрд▓реЗрдмреБрдХ рд╡рд┐рдлрд▓рддрд╛рдУрдВ рдХреЛ рд╢реБрд░реВ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ (рдЬрдм рддрдХ рдХрд┐ рд╡реЗ force_valid_group_names = ignore рдХреЛ ansible.cfg )ред

рдХреЗрд╡рд▓ рджреГрд╢реНрдпрддрд╛ рдХреЗ рд▓рд┐рдП рдкреЛрд╕реНрдЯрд┐рдВрдЧред рдореИрдВ рдЕрднреА рднреА рдЕрдкрдиреЗ рдкрд╣рд▓реЗ рдХреЗ рджрд╛рд╡реЗ рдХреЗ рдкреАрдЫреЗ рджреГрдврд╝рддрд╛ рд╕реЗ рд╣реВрдВ рдХрд┐ рдпрд╣ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рд╢рддреНрд░реБрддрд╛рдкреВрд░реНрдг рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрднреА рднреА рдХрдИ рдЧрддрд┐рд╢реАрд▓ рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИрдВ (рдЕрдВрд╕рд┐рдмрд▓ рдХрд╛ рдХреБрдЫ рд╣рд┐рд╕реНрд╕рд╛ рдпрд╛ рдЕрдм 'рдЖрдзрд┐рдХрд╛рд░рд┐рдХ-рдИрд╢' рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╣реЛ рдЧрдпрд╛ рд╣реИ) рдЬреЛ рдбреИрд╢ рдХреЗ рд╕рд╛рде рд╕рдореВрд╣ рдирд╛рдо рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ рдпрд╛ рдЕрдиреНрдп рдорд╛рдиреНрдп DNS рд╡рд░реНрдгред

рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдЬреЛ рдХреЛрдИ рднреА AWS рдХреЗ рд╕рд╛рде Ansible рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЙрд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

@geerlingguy рдХреНрдпрд╛ рдпрд╣ рд╕рд╣реА рдкреАрдЖрд░ # рд╣реИ? рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕ рдореБрджреНрджреЗ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддрд╛ рд╣реИред

FYI рдХрд░реЗрдВ рдЗрд╕ рдкрд░ 19:06:55 . рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдереА

@apple4ever рдЙрдлрд╝, рд▓рд┐рдВрдХ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛, рдпрд╣ https://github.com/ansible/ansible/pull/66650 рд╣реИ

рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЙрди рдЪреАрдЬреЛрдВ рдХреА рдХрдИ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рдКрдкрд░ рджреЗрдЦрд╛ рд╣реИ рдЬрд┐рдирдХрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрддреНрддрд░/рдбрд┐рдмрдВрдХ/рдЖрджрд┐ рдерд╛, рдЗрд╕рд▓рд┐рдП рдмрд╕ рдпрд╣рд╛рдВ рдореЗрд░реА рдкрд┐рдЫрд▓реА рдкреЛрд╕реНрдЯ рдХреЛ рд▓рд┐рдВрдХ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВред

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

рдХреГрдкрдпрд╛ рдРрд╕реА рдирдИ рдкреЛрд╕реНрдЯ рди рдЬреЛрдбрд╝реЗрдВ рдЬреЛ рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рдирдП рдЖрдЗрдЯрдо рди рдЬреЛрдбрд╝реЗрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдкрд┐рдЫрд▓реА рдкреЛрд╕реНрдЯ рдХреЛ рдЫрд┐рдкрд╛рддреЗ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдкрд╣рд▓реЗ рд╣реА рдЙрддреНрддрд░ рджрд┐рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рдерд╛ред

рд╡реИрд╕реЗ, рдкрд╛рдЗрдерди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рд▓рд┐рдВрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫреА рдЬрдЧрд╣ рдХрд╣рд╛рдВ рд╣реЛрдЧреА рдХрд┐ рд╡реИрдз рдЪрд░ рдирд╛рдо рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ? https://docs.python.org/3/reference/lexical_analysis.html#grammar -token-identifier рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рдЬреНрдЮрд╛рди рдкреГрд╖реНрдарднреВрдорд┐ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЕрдиреБрдХреВрд▓ рдпрд╛ рдкрдардиреАрдп рдирд╣реАрдВ рд╣реИред

рдкреВрдЫрдиреЗ рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╢рд┐рдХрд╛рдпрдд рдХрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд┐рдкрдЯрд╛рд░рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдХреЗрд╡рд▓ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рд╣реИ рдХрд┐ рдХреБрдЫ рдЧрдбрд╝рдмрдбрд╝ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЦреБрджрд╛рдИ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдФрд░ рдХреИрд╕реЗ - рдпрджрд┐ рдЗрдЪреНрдЫреБрдХ рдпрд╛ рд╕рдХреНрд╖рдо - рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╡реИрдз рд╕рдореВрд╣ рдирд╛рдо рдЪреБрди рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рдХрдо рд╕реЗ рдХрдо рдПрдХ рд╕реНрдкрд╖реНрдЯ "рд╕рдореВрд╣ рдирд╛рдо foo-bar рдореЗрдВ рдЕрдорд╛рдиреНрдп рд╡рд░реНрдг ( - ) рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реВрдВред рдорд╛рдиреНрдп рд╕рдореВрд╣ рдирд╛рдо рдорд╛рдиреНрдп рдкрд╛рдпрдерди рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП (рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП https://docs.python.org/??? рджреЗрдЦреЗрдВ)" рд╕рдВрджреЗрд╢, рди рдХреЗрд╡рд▓ "рдЦрд░рд╛рдм рд╡рд░реНрдг рд╣реИрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП -vvvv рдХреЗ рд╕рд╛рде рдлрд┐рд░ рд╕реЗ рдЬрд╛рдВрдЪреЗрдВ!"ред рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рдпрд╣ рднреА рдЙрд▓реНрд▓реЗрдЦ рдХрд░реЗрдЧрд╛ рдХрд┐ рдЗрд╕реЗ рдЕрдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдЕрдиреНрдп рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ (рдЬреИрд╕реЗ рдХрд┐ Ansible рдХреЗ рд▓рд┐рдП рд╕рдореВрд╣реЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдард┐рди рдмрдирд╛рдирд╛ foo-bar , foo.bar рдФрд░ foo_bar )

рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдпрд╣ "рдЖрдкрдиреЗ рдХреБрдЫ рдЧрд▓рдд рдХрд┐рдпрд╛, рдЗрд╕реЗ рдареАрдХ рдХрд░реЗрдВ" рд╕рдВрджреЗрд╢ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рддрд░реАрдХрд╛ рдирд╣реАрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдЖрдЧреЗ рдмрдврд╝рдирд╛ рд╣реИ, рдЬрд┐рд╕рдиреЗ рдпрд╣рд╛рдВ рдордЬрдмреВрдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдпреЛрдЧрджрд╛рди рджрд┐рдпрд╛ рд╣реЛред

@geerlingguy рдиреЗ рдЯрд┐рдкреНрдкрдгреА 56930 рдореЗрдВ рд▓рд┐рдЦрд╛:

(рдЬрдм рддрдХ рд╡реЗ рдПрдХ ansible.cfg рдореЗрдВ force_valid_group_names = false рд╕реЗрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ)

рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдЗрд╕ рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП рдорд╛рдиреНрдп рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ 'рдЧрд▓рдд' рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдорд╛рди рдХреЛ 'рдЕрдирджреЗрдЦрд╛' рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдЪрд╛рд▓ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ 'рдЧрд▓рдд' рдПрдХ рдЕрдорд╛рдиреНрдп рдХреАрд╡рд░реНрдб рд╣реИ рдпрд╛ рдпрд╣ рд╕рд╣реА рд╣реИ рдФрд░ рдпрд╣рд╛рдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдкреВрд░рд╛ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ?

@bcoca рдкрд┐рдЫрд▓реА рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ:

рдмрд╕ рдПрдХ рдмрд╛рд░ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рд╣рдореЗрд╢рд╛ рд╕рдореВрд╣ рдирд╛рдореЛрдВ рдореЗрдВ рдбреИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ, рдбреЙрдЯреНрд╕ рдФрд░ рдЕрдиреНрдп рд╡рд░реНрдг рдЬрд┐рдиреНрд╣реЗрдВ рдЕрдм 'рдЕрдорд╛рдиреНрдп' рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдмрд╕ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдирд╣реАрдВред рдпрд╣ 'рдбрд┐рдлрд╝реЙрд▓реНрдЯ' рд╣реИ рдЬрд┐рд╕реЗ рдмрд╣рд┐рд╖реНрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ 2.11 рдореЗрдВ 'рд╕реБрд░рдХреНрд╖рд┐рдд' рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЖрдкрдХреЗ рдкрд╛рд╕ рд╣рдореЗрд╢рд╛ рдкреБрд░рд╛рдиреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ 'рдСрдкреНрдЯ рдЗрди' рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реЛрдЧрд╛ред

рдЖрдкрдиреЗ рдмрд╛рд░-рдмрд╛рд░ рдХрд╣рд╛ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ _now_ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдЯреАрдХ ansible.cfg рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреНрдпрд╛ рд╣реИрдВ рдФрд░ рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдХреБрдЪрд▓ рджреЗрдВред

рдореИрдВрдиреЗ рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ @geerlingguy рдиреЗ рдЯрд┐рдкреНрдкрдгреА 56930 рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реИ:

(рдЬрдм рддрдХ рд╡реЗ рдПрдХ ansible.cfg рдореЗрдВ force_valid_group_names = false рд╕реЗрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ)

рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдореЗрд░реА рдкреНрд▓реЗрдмреБрдХ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИ, рдЬрдм рдЙрд╕реЗ рд╣рд╛рдЗрдлрд╝рди рд╡рд╛рд▓реЗ рд╣реЛрд╕реНрдЯ рдпрд╛ рд╕рдореВрд╣ рдирд╣реАрдВ рдорд┐рд▓рддреЗ рд╣реИрдВ (рд╡реЗ рдПрдХ рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдкреНрд▓рдЧрдЗрди рд╕реЗ рдЖ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рд╣рдордиреЗ BTW рд▓рд┐рдЦрд╛ рд╣реИ, рдХреНрдпрд╛ рдереАрд╕рд┐рд╕ рдХреЛ рдЯреНрд░рд╛рдВрд╕рдлрд╝реЙрд░реНрдо рднреА рдХрд░рдирд╛ рд╣реИ, рдпрд╛ рдРрд╕рд╛ рддрдм рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм Ansible рд╕реЗ рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдХреЛ рдирд┐рдЧрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ) рдкреНрд▓рдЧрдЗрди?)

рдореИрдВрдиреЗ рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ @geerlingguy рдиреЗ рдЯрд┐рдкреНрдкрдгреА 56930 рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реИ:

(рдЬрдм рддрдХ рд╡реЗ рдПрдХ ansible.cfg рдореЗрдВ force_valid_group_names = false рд╕реЗрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ)

рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдореЗрд░реА рдкреНрд▓реЗрдмреБрдХ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИ, рдЬрдм рдЙрд╕реЗ рд╣рд╛рдЗрдлрд╝рди рд╡рд╛рд▓реЗ рд╣реЛрд╕реНрдЯ рдпрд╛ рд╕рдореВрд╣ рдирд╣реАрдВ рдорд┐рд▓рддреЗ рд╣реИрдВ (рд╡реЗ рдПрдХ рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдкреНрд▓рдЧрдЗрди рд╕реЗ рдЖ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рд╣рдордиреЗ BTW рд▓рд┐рдЦрд╛ рд╣реИ, рдХреНрдпрд╛ рдереАрд╕рд┐рд╕ рдХреЛ рдЯреНрд░рд╛рдВрд╕рдлрд╝реЙрд░реНрдо рднреА рдХрд░рдирд╛ рд╣реИ, рдпрд╛ рдРрд╕рд╛ рддрдм рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм Ansible рд╕реЗ рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдХреЛ рдирд┐рдЧрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ) рдкреНрд▓рдЧрдЗрди?)

рдпрд╣ рдХрдИ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рд╣реИ ред рдЖрдкрдХреЛ рдХрднреА рднреА рдЙрдкрдпреЛрдЧ рдЕрдирджреЗрдЦрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рддреЛ рдХреНрдпрд╛ рд╣рдореЗрдВ рдЕрдм EC2 рдбрд╛рдпрдиреЗрдорд┐рдХ рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдм рдХреБрдЫ 'us-east-1', 'us-east-2', рдЖрджрд┐ рджреНрд╡рд╛рд░рд╛ рд╕рдореВрд╣рд┐рдд рдХрд░рддрд╛ рд╣реИ? рдпрд╛ рдЗрд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдпреЛрдЬрдирд╛ рд╣реИ? рдореИрдВ рдЕрднреА EC2 рдбрд╛рдпрдиреЗрдорд┐рдХ рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП Ansible рдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЗрд╕реЗ Github рдкрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рд▓рд┐рдВрдХ рдЕрдм рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред

рдореИрдВ рдЕрднреА EC2 рдбрд╛рдпрдиреЗрдорд┐рдХ рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП Ansible рдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЗрд╕реЗ Github рдкрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рд▓рд┐рдВрдХ рдЕрдм рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред

рджреЗрдЦреЗрдВ https://github.com/ansible/ansible/issues/68419

рдЖрдк рдореЗрдВ рд╕реЗ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЖрдИрдЖрд░рд╕реА рд▓реЙрдЧ рдкрдврд╝рдиреЗ рдХреА рдЬрд╣рдордд рдирд╣реАрдВ рдЙрдард╛рддреЗ, рдпрд╣рд╛рдВ рдирд┐рд░реНрдгрдп рд╣реИ, рдЕрд░реНрдерд╛рдд рдХреЛрдИ рдирд┐рд░реНрдгрдп рдирд╣реАрдВ:

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

рд╣рд╛рдБ, рдХрд┐рд╕реА рдиреЗ рд▓рд┐рдЦрд╛ "рдПрдордПрд▓ рдпрд╛ рдЖрдИрдЖрд░рд╕реА рджреНрд╡рд╛рд░рд╛ рдбреНрд░реЙрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВ"ред рдирд╣реАрдВ, "рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд▓реЛрдХрддрдВрддреНрд░ рдирд╣реАрдВ рд╣реИ"ред

рд╣рд╛рдБ, рдХрд┐рд╕реА рдиреЗ рд▓рд┐рдЦрд╛ "рдПрдордПрд▓ рдпрд╛ рдЖрдИрдЖрд░рд╕реА рджреНрд╡рд╛рд░рд╛ рдбреНрд░реЙрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВ"ред рдирд╣реАрдВ, "рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд▓реЛрдХрддрдВрддреНрд░ рдирд╣реАрдВ рд╣реИ"ред

рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдУрдкрдирд╕реЛрд░реНрд╕ рдХреЗ рд╕рд╛рде рдЧрд▓рдд рд╣реИ - рдЕрдЧрд░ рдпрд╣ рд▓реЛрдХрдкреНрд░рд┐рдп рддрд░реАрдХреЗ рд╕реЗ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИ - рд▓реЛрдЧ рдЗрд╕реЗ рдлреЛрд░реНрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпрд╛ рдЗрд╕реЗ рдлреЛрд░реНрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?

рдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдкреАрдЖрд░ рдХреЛ рдЙрддреНрддрд░ рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рдмрд╣реБрдд рдзреАрдорд╛ рд╣реИред рдкреИрдЪ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдФрд░ рд╕рд░рд▓ рдкрд░рд┐рд╡рд░реНрддрди рджрд┐рдЦрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдпрд╣ рдХрднреА рднреА рдЕрдВрджрд░ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ рдЙрддреНрддрд░рджрд╛рдпреА рд▓реЛрдЧреЛрдВ рдХреЛ рдХрд╕реНрдЯрдо рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдЪреАрд▓рд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреБрд░рд╛рдирд╛ рдпреЛрдЧрджрд╛рди рдореЗрдВ рдЦреБрдж рдХреЛ рдХрдо рдХрд░ рджреЗрдЧрд╛ - рдпрд╛ рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рдФрд░ рднреА рдкрд░реЗрд╢рд╛рдиреА рд╣реЛрдЧреАред

рдереЛрдбрд╝рд╛ рдЙрджрд╛рд╕ рд▓рдЧ рд░рд╣рд╛ рд╣реИ, рд╕рдЪ рдореЗрдВ...

@ sunshine69 рдореБрдЭреЗ рдЖрдкрдХрд╛ рджрд░реНрдж рдорд╣рд╕реВрд╕ рд╣реЛрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдРрд╕реА рдЪрд░реНрдЪрд╛ рд╣реИ рдЬреЛ IRC рдпрд╛ Google Group for Ansible Development рдкрд░ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рдпрд╣ рдореБрджреНрджрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдЬрдЧрд╣ рдирд╣реАрдВ рд╣реИред рдХреНрдпреЛрдВрдХрд┐ рдпрд╣рд╛рдВ рдмрд╣реБрдд рдХрдо рд▓реЛрдЧ рдкрдврд╝рддреЗ рд╣реИрдВред

@ sunshine69 рдореБрдЭреЗ рдЖрдкрдХрд╛ рджрд░реНрдж рдорд╣рд╕реВрд╕ рд╣реЛрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдРрд╕реА рдЪрд░реНрдЪрд╛ рд╣реИ рдЬреЛ IRC рдпрд╛ Google Group for Ansible Development рдкрд░ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рдпрд╣ рдореБрджреНрджрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдЬрдЧрд╣ рдирд╣реАрдВ рд╣реИред рдХреНрдпреЛрдВрдХрд┐ рдпрд╣рд╛рдВ рдмрд╣реБрдд рдХрдо рд▓реЛрдЧ рдкрдврд╝рддреЗ рд╣реИрдВред

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЙрди рдЕрдиреНрдп рдЪреИрдирд▓реЛрдВ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдЕрдзрд┐рдХ рдЙрддреНрдкрд╛рджрдХ рд╣реЛ рд╕рдХрддреА рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред рдЖрдИрдЖрд░рд╕реА рдЖрдЦрд┐рд░рдХрд╛рд░ рд╣рд░ рдХрд┐рд╕реА рдХреА рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИред

FYI рдХрд░реЗрдВ: TRANSFORM_INVALID_GROUP_CHARS рдХреЗ рд▓рд┐рдП рдмрд╣рд┐рд╖реНрдХрд░рдг рдирд┐рдХрд╛рд▓реЗрдВ рдХрд▓ рд╣реА рдорд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред 2.9 (https://github.com/ansible/ansible/pull/69487) рдФрд░ 2.8 (https://github.com/ansible/ansible/pull/69488) рдХреЗ рд▓рд┐рдП рдмреИрдХрдкреЛрд░реНрдЯ рдкреАрдЖрд░ рд╣реИрдВ, рддрд╛рдХрд┐ рд╡рд╣рд╛рдВ рд╕реЗ рд╣рдЯрд╛рдП рдЬрд╛рдиреЗ рдХреА рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗред

рд╡рд┐рд╡рд░рдг рдореЗрдВ рдкрд╣рдЪрд╛рдиреА рдЧрдИ рдлрд╝рд╛рдЗрд▓реЗрдВ:

рдЕрдЧрд░ рдпреЗ рдлрд╝рд╛рдЗрд▓реЗрдВ рдЧрд▓рдд рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рд╡рд┐рд╡рд░рдг рдХреЗ component name рдЕрдиреБрднрд╛рдЧ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ рдпрд╛ !component bot рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рдмреЙрдЯ рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ

рдЬрдм рдореИрдВрдиреЗ force_valid_group_names = ignore рд╕реЗрдЯ рдХрд┐рдпрд╛ рддреЛ рдЪреЗрддрд╛рд╡рдиреА рдЪрд▓реА рдЧрдИ, рд▓реЗрдХрд┐рди рдкрджрд╛рд╡рдирддрд┐ рдиреЛрдЯрд┐рд╕ рджреВрд░ рдирд╣реАрдВ рд╣реБрдЖред

рдЕрдВрдд рдореЗрдВ рдореИрдВрдиреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рдкрд╛рдпрд╛: force_valid_group_names = silently рдЬреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХрд░реЗрдЧрд╛ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд░реЛрдХ рдирд╣реАрдВ рдкрд╛рдПрдЧрд╛ - рдпрджрд┐ рдЖрдк рдпрд╣реА рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдлрд┐рд░ рднреА, рдЗрд╕ рдкреВрд░реЗ рдореБрджреНрджреЗ рдХреЛ рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рдЯрд╛рд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛ рдпрджрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡реНрдпрд░реНрде рдкрд░рд┐рд╡рд░реНрддрди рдкрд╣рд▓реА рдЬрдЧрд╣ рдореЗрдВ рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рдереЗред

@ emmm-dee - рдЙрд╕ рд╡рд┐рд╢реЗрд╖ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ https://github.com/ansible/ansible/issues/70908 рдЦреЛрд▓рд╛ - рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЕрднреА рднреА рдмрдиреА рд╣реБрдИ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ _are_ 'рд╡реИрдз' рд╕рдореВрд╣ рд╡рд░реНрдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрднреА рднреА рдХреЛрдИ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдирд╣реАрдВ рд╣реИред .

рдЖрдкрдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП @geerlingguy рдХреЛ рдзрдиреНрдпрд╡рд╛рдж! рдЖрдк рд╣реА рд╣реИрдВ рдЬреЛ ansible рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВред

рдореИрдВ рдмрд╛рдЙрдВрд╕ (рдкреНрд░рд╛рд░рдВрдн/рдмрдВрдж) рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдореИрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реЛрд╕реНрдЯ рд╕реЗ рдЬреБрдбрд╝рд╛ рдирд╣реАрдВ рд╣реВрдВред

рдореИрдВрдиреЗ рдкрд┐рдВрдЧ рдХрдорд╛рдВрдб рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдЬрд┐рд╕реЗ рдЖрдкрдиреЗ рднреЗрдЬрд╛ рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ ...

[ webadmin@vlodjumpts00 ~]$ рдкрд┐рдВрдЧ 8.8.8.8

рдкрд┐рдВрдЧ 8.8.8.8 (8.8.8.8) 56(84) рдбреЗрдЯрд╛ рдХреЗ рдмрд╛рдЗрдЯреНрд╕ред

8.8.8.8 рд╕реЗ 64 рдмрд╛рдЗрдЯреНрд╕: icmp_seq=1 ttl=112 рд╕рдордп=10.6 ms

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

-рдмреИрд╢: Mirrorlist.centos.org: рдЖрджреЗрд╢ рдирд╣реАрдВ рдорд┐рд▓рд╛

рдореИрдВ рдЗрд╕реЗ рдЕрдкрдиреЗ рд╕рдВрдЧрдарди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ .. рдЕрдЧрд░ рдореИрдВ "ansible all -m ping" рдХрдорд╛рдВрдб рдЪрд▓рд╛рддрд╛ рд╣реВрдВред рддреНрд░реБрдЯрд┐ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ, рдиреАрдЪреЗ рд╡рд┐рд╡рд░рдг рд╣реИ:

[рдЖ 63457@vlodjumpts00 рдмрд┐рди]$ рд╕рднреА-рдПрдо рдкрд┐рдВрдЧ

рдмрджрд▓реЗрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдмрд╣рд┐рд╖реНрдХрд░рдг рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реЛред рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рд╕рдВрд╕реНрдХрд░рдг 2.10 рдореЗрдВ рд╣рдЯрд╛ рджреА рдЬрд╛рдПрдЧреАред рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ

deprecation_warnings=False in ansible.cfg рд╕реЗрдЯ рдХрд░рдХреЗ рдЕрдХреНрд╖рдо рдХрд┐рдпрд╛ рдЧрдпрд╛ред

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 рдирд╣реАрдВ рд╣реИред

рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ ansible_connection = рд▓реЛрдХрд▓

[рдЖрд░рдЯреАрдИ3рд╡реАрдПрдлрдУ]

RTE3VFOрд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ ansible_host=vlddwblasts001.test.intranet

RTE3VFOрдкреНрд░рдмрдВрдзрд┐рдд ansible_host=vlddwblasts002.test.intranet

[рдЖрд░рдЯреАрдИ3рдИрдкреА]

RTE3EPрд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ ansible_host=vlddwblasts002.test.intranet

RTE3EPрдкреНрд░рдмрдВрдзрд┐рдд ansible_host=vlddwblasts003.test.intranet

[рдЖрд░рдЯреАрдИ3рдЖрд░рдИрдПрд╕]

RTE3RESрдПрдбрдорд┐рди ansible_host=vlddwblasts003.test.intranet

RTE3RESAрдкреНрд░рдмрдВрдзрд┐рдд ansible_host=vlddwblasts004.test.intranet

[RTE3ORCH]

RTE3ORCHрд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ ansible_host=vlddwblasts004.test.intranet

RTE3ORCHрдкреНрд░рдмрдВрдзрд┐рдд ansible_host=vlddwblasts005.test.intranet

[рдЖрд░рдЯреАрдИ3рдИрдПрдПрд╕рдИ]

RTE3EASEрд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ ansible_host=vlddwblasts005.test.intranet

RTE3EASEрдкреНрд░рдмрдВрдзрд┐рдд ansible_host=vlddwblasts006.test.intranet

[рдЖрд░рдЯреАрдИ3рдЖрд░рдЯреАрдПрд╕]

RTE3RTSрд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ ansibke_host=vlddwblasts006.test.intranet

[рдИрдЬрд╝реА-рдПрдПрд╕рдЖрд░-рдЯреЗрд╕реНрдЯ 2: рдмрдЪреНрдЪреЗ]

рдЖрд░рдЯреАрдИ3рд╡реАрдПрдлрдУ

рдЖрд░рдЯреАрдИ3рдИрдкреА

рдЖрд░рдЯреАрдИ3рдЖрд░рдИрдПрд╕

RTE3ORCH

RTE3EASE

RTE3RTS

рдФрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛ рд╣реИ:

[ webadmin@vlodjumpts00 ansible]$ pwd

/рдЖрджрд┐/рдЙрддреНрддрд░рджрд╛рдпреА

[ webadmin@vlodjumpts00 ansible]$ ll

рдХреБрд▓ 84

-рдЖрд░рдбрдмреНрд▓реНрдпреВ -------- 1 рд╡реЗрдмрдПрдбрдорд┐рди рд╡реЗрдмрдПрдбрдорд┐рди 607 рдЬреБрд▓рд╛рдИ 12 2017 1

-rw-r--r-- 1 рд╡реЗрдмрдПрдбрдорд┐рди рд╡реЗрдмрдПрдбрдорд┐рди 17910 рд╕рд┐рддрдВрдмрд░ 19 09:55 ansible.cfg

-rw-r--r-- 1 рд░реВрдЯ рд░реВрдЯ 19985 Dec 8 2019 ansible.cfg.rpmnew

-rw---------- 1 webadmin webadmin 213 Jul 3 2017 easyasr-rte2-ease.yml

-rwxr-xr-x 1 рд╡реЗрдмрдПрдбрдорд┐рди рд╡реЗрдмрдПрдбрдорд┐рди 1034 рд╕рд┐рддрдВрдмрд░ 19 09:16 рдИрдЬрд╝реА-рд╣реЛрд╕реНрдЯ

-rwxr-xr-x 1 рд╡реЗрдмрдПрдбрдорд┐рди рд╡реЗрдмрдПрдбрдорд┐рди 1647 рд╕рд┐рддрдВрдмрд░ 19 10:50 рдореЗрдЬрдмрд╛рди

-rw---------- 1 webadmin webadmin 2679 Jul 3 2017 host.bkp

-рдЖрд░рдбрдмреНрд▓реНрдпреВ -------- 1 рд╡реЗрдмрдПрдбрдорд┐рди рд╡реЗрдмрдПрдбрдорд┐рди 273 рдЬреБрд▓рд╛рдИ 6 2017 рд▓рд╛рдЗрдирдЗрдиреНрд╕рдлрд╛рдЗрд▓_tst.yml

drwx------ 4 webadmin webadmin 4096 Nov 2 2017 playbooks

drwxr-xr-x 3 рд░реВрдЯ рд░реВрдЯ 19 рджрд┐рд╕рдВрдмрд░ 8 2019 рднреВрдорд┐рдХрд╛рдПрдВ

-rwxr-xr-x 1 рд╡реЗрдмрдПрдбрдорд┐рди рд╡реЗрдмрдПрдбрдорд┐рди 7321 рдирд╡рдВрдмрд░ 2 2017 servmix_hosts

-рдЖрд░рдбрдмреНрд▓реНрдпреВ -------- 1 рд╡реЗрдмрдПрдбрдорд┐рди рд╡реЗрдмрдПрдбрдорд┐рди 208 рд╕рд┐рддрдВрдмрд░ 19 10:55 рдЯреЗрд╕реНрдЯ.рд╡рд╛рдИрдПрдордПрд▓

-рдЖрд░рдбрдмреНрд▓реНрдпреВ -------- 1 рд╡реЗрдмрдПрдбрдорд┐рди рд╡реЗрдмрдПрдбрдорд┐рди 122 рд╕рд┐рддрдВрдмрд░ 19 10:54 vars.yaml


рд╣рдо рд╕реАрдзреЗ рд╣реЛрд╕реНрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдирд╣реАрдВ рд╣реИрдВ... рдкрд╣рд▓реЗ рд╣рдорд╛рд░реЗ рдЬрдВрдк рд╕рд░реНрд╡рд░ рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░реЗрдВ рдФрд░ ssh рд╣реЛрд╕реНрдЯ рд╕реЗ...

рдЬрдВрдк рд╕рд░реНрд╡рд░ "vmdcltctws217" рдкреЛрд░реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ = 22, рдХрдиреЗрдХреНрд╢рди рдкреНрд░рдХрд╛рд░ = ssh

рдФрд░ рдлрд┐рд░ рд╣рдорд╛рд░реЗ UN/PWD рдХреЗ рд╕рд╛рде рджрд░реНрдЬ рдХрд░реЗрдВ

рдЙрд╕рдХреЗ рдмрд╛рдж рд╣рдордиреЗ рд╣реЛрд╕реНрдЯ рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП sudo рдХрд┐рдпрд╛ ..

рд╕реБрдбреЛ рд╕реБ - рдЖрд╕рд╛рди

рдФрд░ рдлрд┐рд░ ssh рд╣реЛрд╕реНрдЯ рд╕рд░реНрд╡рд░ рдЬреИрд╕реЗ ..

vlddwblasts001.test.intranet

рдлрд┐рд░ рд╣рдо рдпрд╣рд╛рдВ рд╕реЗ рд╕реНрдЯрд╛рд░реНрдЯ/рд╕реНрдЯреЙрдк рдХрдорд╛рдВрдб рдЪрд▓рд╛рддреЗ рд╣реИрдВ..

рдХреГрдкрдпрд╛ рдореЗрд░реА рдорджрдж рдХрд░реЗрдВ, рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕