๋ฌธ์ ์ ํ : ๋ฒ๊ทธ ์ ๊ณ
์ค์๋ธ ๋ฒ์ : 1.9.4
ํ๊ฒฝ : OSX 10.11.1
์์ฝ : lookup
๋ฅผ ์ฌ์ฉํ์ฌ uri
๋ชจ๋์ body
๋งค๊ฐ๋ณ์๋ก ์ ๋ฌ๋๋ ํ
ํ๋ฆฟ์ ๋ ๋๋งํ๋ฉด ์๋ํ์ง ์์ต๋๋ค. TypeError: unhashable type
์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ด์ ๋ํ StackOverflow ์ง๋ฌธ์ ์ด์๊ณ ์ฌ๊ธฐ์๋ ๊ฒ์ํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ด๋ผ๊ณ ์๊ฐํ์ต๋๋ค.
์ฌํ ๋จ๊ณ :
๋ค์ ์์ ์ ์คํํฉ๋๋ค.
- name: Post
uri:
url: https://hooks.slack.com/endpoint
method: POST
return_content: no
HEADER_Content-Type: "application/json"
body: "{{ lookup('template', '../templates/my.json.j2', convert_data=False) }}"
my.json.j2
๋ค์๊ณผ ๊ฐ์ด :
{
"channel": "chatops",
"username": "Deploy",
"text": "TEST Deploy!",
"icon_emoji": ":ghost:"
}
ํ
ํ๋ฆฟ ๋ด์์ JSON์ ํ ์ค๋ก ์ ์ผ๋ฉด ๋์ผํ ํจ๊ณผ๊ฐ ์์ต๋๋ค. to_json
ํตํด lookup
์๋ต์ ํ์ดํํ๋ ๊ฒ๋ ์๋ํ์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ ํ JSON์ ๊ฐ์ ธ์์ ์ฐ๊ทน์์ _์ง์ _ ์ฌ์ฉํ๋ฉด ํจ๊ณผ๊ฐ ์์ต๋๋ค.
์์ ๊ฒฐ๊ณผ : ์ ์ ํ JSON์ด ์๋ํฌ์ธํธ๋ก ์ ์ก๋จ
์ค์ ๊ฒฐ๊ณผ : TypeError: unhashable type
์ค๋ฅ; ๋ํ ํน์ ์ํฉ์์ ์๋ํฌ์ธํธ์์ not valid JSON
์ค๋ฅ๊ฐ ๋ฐํ๋์ด ๋ฐ์ดํฐ๊ฐ ์ ๋๋ก ์ ์ก๋์ง ์๊ณ ์์์ ๋ํ๋
๋๋ค.
์๋ ํ์ธ์!
Ansible์ ๊ด์ฌ์ ๊ฐ์ ธ์ฃผ์ ์ ๋๋จํ ๊ฐ์ฌํฉ๋๋ค. ๊ทธ๊ฒ์ ์ง์ฌ์ผ๋ก ์ฐ๋ฆฌ์๊ฒ ๋ง์ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
์ด๊ฒ์ ์ฌ์ฉ์ ์ง๋ฌธ์ธ ๊ฒ ๊ฐ์ผ๋ฉฐ, ์ฐ๋ฆฌ๋ ์ด๋ฌํ ์ข ๋ฅ์ ๊ฒ๋ค์ ๋ฉ์ผ๋ง ๋ฆฌ์คํธ๋ IRC ์ฑ๋๋ก ๋ณด๋ด๊ณ ์ถ์ต๋๋ค.
๊ฑฐ๊ธฐ์ ๋ค๋ฌ์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค. ์ด๋ฅผ ํตํด ๋ฒ๊ทธ, ํ ๋ฆฌํ์คํธ, RFE ๋ฑ์ ๋ํ ์ด์ ํธ๋์ปค๋ฅผ ์ ์งํ ์ ์์ต๋๋ค.
๋ค์ ํ ๋ฒ ๊ฐ์ฌ๋๋ฆฌ๋ฉฐ ๋ชฉ๋ก์ด๋ IRC์์ ๋ต๊ธฐ๋ฅผ ๊ธฐ๋ํฉ๋๋ค. ๊ฐ์ฌ ํด์!
์ด๊ฒ์ 2.0์์ ์์ ๋์์ต๋๋ค. _body_format: json_์ uri ๋ชจ๋์ ์ถ๊ฐํ๊ณ _convert_data=False_๋ฅผ ์ ๊ฑฐํ๋ฉด ๋ฉ๋๋ค.
๋ํ body_format์ json์ผ๋ก ์ค์ ํ ๋ Content-Type ํค๋๋ฅผ ์ง์ ์ค์ ํ ํ์๊ฐ ์์ต๋๋ค.
์๋ ํ์ธ์, ์ด ๋ฌธ์ ์ ๋ํ ์ง์:
http://stackoverflow.com/questions/43117635/ansible-variable-not-rendered-inside-json-object
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ด๊ฒ์ 2.0์์ ์์ ๋์์ต๋๋ค. _body_format: json_์ uri ๋ชจ๋์ ์ถ๊ฐํ๊ณ _convert_data=False_๋ฅผ ์ ๊ฑฐํ๋ฉด ๋ฉ๋๋ค.
๋ํ body_format์ json์ผ๋ก ์ค์ ํ ๋ Content-Type ํค๋๋ฅผ ์ง์ ์ค์ ํ ํ์๊ฐ ์์ต๋๋ค.