Ansible: uri ๋ชจ๋“ˆ์„ ํ†ตํ•ด Ansible ๋ฐ POST์—์„œ JSON์„ ๋ Œ๋”๋งํ•  ์ˆ˜ ์—†์Œ

์— ๋งŒ๋“  2015๋…„ 11์›” 26์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: ansible/ansible

๋ฌธ์ œ ์œ ํ˜• : ๋ฒ„๊ทธ ์‹ ๊ณ 
์•ค์„œ๋ธ” ๋ฒ„์ „ : 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 ์˜ค๋ฅ˜๊ฐ€ ๋ฐ˜ํ™˜๋˜์–ด ๋ฐ์ดํ„ฐ๊ฐ€ ์ œ๋Œ€๋กœ ์ „์†ก๋˜์ง€ ์•Š๊ณ  ์žˆ์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์ด๊ฒƒ์€ 2.0์—์„œ ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. _body_format: json_์„ uri ๋ชจ๋“ˆ์— ์ถ”๊ฐ€ํ•˜๊ณ  _convert_data=False_๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
๋˜ํ•œ body_format์„ json์œผ๋กœ ์„ค์ •ํ•  ๋•Œ Content-Type ํ—ค๋”๋ฅผ ์ง์ ‘ ์„ค์ •ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  3 ๋Œ“๊ธ€

๋ชฉ๋ก ์ •๋ณด

์•ˆ๋…•ํ•˜์„ธ์š”!

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

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰