๋ฒ๊ทธ ์ ๊ณ
๊ฐ๋ฅํ 1.7
์คํ OS: OSX 10.9
๊ด๋ฆฌ: ์ฐ๋ถํฌ 14.04
ํ์คํฌ๊ฐ "with_dict" ๋ฐ "when"๊ณผ ํจ๊ป ์ฌ์ฉ๋๊ณ when ๊ฐ์ด false๋ก ํ๊ฐ๋๋ฉด,sible์ dict ๊ฐ์ ํ์ธํ๋ ค๊ณ ์๋ํ๊ณ ํ์คํฌ๋ฅผ ๊ฑด๋๋ฐ์ด์ผ ํ ๋ ์คํจํฉ๋๋ค.
ํธ์คํธ:
[test]
testhost
ํ๋ ์ด๋ถ.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
users_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({}) }}"
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
๋ํ ๋ชฉ๋ก์ด ์ ์๋์ง ์์ ๋์ ๊ธธ์ด๊ฐ 0์ด๊ธฐ ๋๋ฌธ์ when ์ ์ ์ ๊ฑฐํ ์ ์์ต๋๋ค.
์ถ๊ฐ ์ง๋ฌธ์ด ์์ผ์๋ฉด ์ธ์ ๋ ์ง sible-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
๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์๋ ํ์ธ์!
์ด๊ฒ์ ์ฝ๊ฐ์ ์คํด์ด์ง๋ง ์ฌ๊ธฐ์์ ์กฐ๊ฑด๋ถ๋ ํ์ํ ๊ธฐ๋ฅ์ธ ๋ชจ๋ ํญ๋ชฉ์ ๋ํด ํ๊ฐ๋ฉ๋๋ค. ๊ฐ ํญ๋ชฉ์ ๋ํด ํ๊ฐํ๋ ค๋ฉด ๋ฐ๋ณตํ ์ ์๋ ํญ๋ชฉ์ผ๋ก ์์ํด์ผ ํฉ๋๋ค.
๋ฐ๋ผ์ ๋ค์๊ณผ ๊ฐ์ด ํ ์ ์์ต๋๋ค.
with_dict: "{{ users_deleted | default({}) }}"
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
๋ํ ๋ชฉ๋ก์ด ์ ์๋์ง ์์ ๋์ ๊ธธ์ด๊ฐ 0์ด๊ธฐ ๋๋ฌธ์ when ์ ์ ์ ๊ฑฐํ ์ ์์ต๋๋ค.
์ถ๊ฐ ์ง๋ฌธ์ด ์์ผ์๋ฉด ์ธ์ ๋ ์ง sible-project์ ๋ค๋ฌ์ฃผ์ธ์. ๊ธฐ๊บผ์ด ๋์๋๋ฆฌ๊ฒ ์ต๋๋ค.
๊ฐ์ฌ ํด์!