Ansible: with_dict рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдФрд░ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реЛрдиреЗ рдкрд░ рдХрд╛рд░реНрдп рдХреЛ рдХрдм рдЫреЛрдбрд╝рдирд╛ рдирд╣реАрдВ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 11 рдЕрдЧре░ 2014  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: ansible/ansible

рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдкреНрд░рдХрд╛рд░:

рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ

рдЙрддреНрддрд░рджрд╛рдпреА рд╕рдВрд╕реНрдХрд░рдг:

рдЙрддреНрддрд░рджрд╛рдпреА 1.7

рд╡рд╛рддрд╛рд╡рд░рдг:

OS рд╕реЗ рдЪрд▓ рд░рд╣рд╛ рд╣реИ: OSX 10.9
рдкреНрд░рдмрдВрдз: рдЙрдмрдВрдЯреВ 14.04

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

рдЬрдм рдХрд┐рд╕реА рдХрд╛рд░реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ "with_dict" рдФрд░ "рдХрдм" рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЬрдм рдХрд╛ рдореВрд▓реНрдп рдЕрд╕рддреНрдп рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рддрд╛ рд╣реИ, рддреЛ ansible рдПрдХ рддрд╛рдирд╛рд╢рд╛рд╣реА рдореВрд▓реНрдп рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЬрдм рдЙрд╕реЗ рдХрд╛рд░реНрдп рдЫреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдП рддреЛ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдкреНрд░рдЬрдирди рдХреЗ рдЪрд░рдг:

рдореЗрдЬрдмрд╛рди:

[test]
testhost

playbook.yml:

- hosts: all
  tasks:
   - name: Delete a user
     user: name="{{item}}" state=absent
     when: users_deleted is defined
     with_dict: users_deleted

рдЖрджреЗрд╢: ansible-playbook -i hosts playbook.yml
рдореИрдВрдиреЗ user_deleted рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдХрд╛рд░реНрдп рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
playbook.yml рдореЗрдВ рдпрджрд┐ рдЖрдк "with_dict" рдХреЛ "with_items" рдореЗрдВ рдмрджрд▓рддреЗ рд╣реИрдВ рддреЛ рдХрд╛рд░реНрдп рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдо:

"with_dict" рдХреЗ рдмрдЬрд╛рдп "with_items" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдп рдЪрд▓рд╛рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдо:

PLAY [all] ********************************************************************

GATHERING FACTS ***************************************************************
ok: [testhost]

TASK: [Delete a user] *********************************************************
skipping: [testhost] => (item=users_deleted)

PLAY RECAP ********************************************************************
testhost             : ok=2    changed=0    unreachable=0    failed=0
рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдгрд╛рдо:
PLAY [all] ********************************************************************

GATHERING FACTS ***************************************************************
ok: [testhost]

TASK: [Delete a user] *********************************************************
fatal: [testhost] => with_dict expects a dict

FATAL: all hosts have already failed -- aborting

PLAY RECAP ********************************************************************

testhost            : ok=1    changed=0    unreachable=1    failed=0

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

рдирдорд╕реНрддреЗ!

рдпрд╣ рдереЛрдбрд╝реА рдЧрд▓рддрдлрд╣рдореА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рд╕рд╢рд░реНрдд рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдкреНрд░рддреНрдпреЗрдХ рдЖрдЗрдЯрдо рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдЖрдЗрдЯрдо рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рдХрд┐рд╕реА рдРрд╕реА рдЪреАрдЬрд╝ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╡рд╣ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░ рд╕рдХреЗред

рдЬреИрд╕реЗ, рдЖрдк рдХреБрдЫ рдРрд╕рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ:

with_dict: "{{users_deleted | default({}) }}"

рдЬреЛ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред

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

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдФрд░ рдкреНрд░рд╢реНрди рд╣реИрдВ, рддреЛ рдмреЗрдЭрд┐рдЭрдХ ansible-project рдкрд░ рд░реБрдХреЗрдВ рдФрд░ рд╣рдореЗрдВ рдЗрд╕рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред

рдзрдиреНрдпрд╡рд╛рдж!

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

рдирдорд╕реНрддреЗ!

рдпрд╣ рдереЛрдбрд╝реА рдЧрд▓рддрдлрд╣рдореА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рд╕рд╢рд░реНрдд рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдкреНрд░рддреНрдпреЗрдХ рдЖрдЗрдЯрдо рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдЖрдЗрдЯрдо рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рдХрд┐рд╕реА рдРрд╕реА рдЪреАрдЬрд╝ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╡рд╣ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░ рд╕рдХреЗред

рдЬреИрд╕реЗ, рдЖрдк рдХреБрдЫ рдРрд╕рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ:

with_dict: "{{users_deleted | default({}) }}"

рдЬреЛ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред

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

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдФрд░ рдкреНрд░рд╢реНрди рд╣реИрдВ, рддреЛ рдмреЗрдЭрд┐рдЭрдХ ansible-project рдкрд░ рд░реБрдХреЗрдВ рдФрд░ рд╣рдореЗрдВ рдЗрд╕рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред

рдзрдиреНрдпрд╡рд╛рдж!

рдореИрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдорд╛рдкреНрдд рд╣реБрдЖ:
with_dict: users_deleted | рдЪреВрдХ рдЬрд╛рдирд╛({})

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

рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рдЕрднреА рднреА 2.0.1.0 . рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдорд┐рд▓реА рд╣реИ

[DEPRECATION WARNING]: Skipping task due to undefined Error, in the future this will be a fatal error.. This feature will be removed in a future
release. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.
fatal: [xxx.xxx.xxx.xxx]: FAILED! => {"failed": true, "msg": "with_dict expects a dict"}

рдореБрдЭреЗ рдЗрд╕реЗ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ignore_errors рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

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

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

tspivey picture tspivey  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

adamprato picture adamprato  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

rchady picture rchady  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

RaymiiOrg picture RaymiiOrg  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

cowboy picture cowboy  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ