Ansible: ์ˆ˜ํ•™ ์กฐ์ž‘ ์ค‘์— ๋ณ€์ˆ˜ ์œ ํ˜•์ด int์—์„œ ๋ฌธ์ž์—ด๋กœ ๋ณ€๊ฒฝ๋จ

์— ๋งŒ๋“  2016๋…„ 12์›” 22์ผ  ยท  1๋…ผํ‰  ยท  ์ถœ์ฒ˜: ansible/ansible

๋ฌธ์ œ ์œ ํ˜•

  • ๋ฒ„๊ทธ ์‹ ๊ณ 
๊ตฌ์„ฑ ์š”์†Œ ์ด๋ฆ„
ANSIBLE ๋ฒ„์ „
ansible 2.2.0.0
  config file = /etc/ansible/ansible.cfg
  configured module search path = Default w/o overrides
๊ตฌ์„ฑ
OS / ํ™˜๊ฒฝ


Ubuntu 14.04
Ubuntu 16.04

์š”์•ฝ

int ๋ณ€์ˆ˜๋Š” ์กฐ์ž‘ ์ค‘์— ๋ฌธ์ž์—ด๋กœ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค.

์žฌํ˜„ ๋‹จ๊ณ„

- hosts: localhost
  vars:
    a: 1
    b: "{{ a }}"
    c: "{{ a+1 }}"
  tasks:
    - debug: msg="{{ a + 0 }}"
    - debug: msg="{{ b + 0 }}"
    - debug: msg="{{ c + 0 }}"
      ignore_errors: yes
    - debug: msg="{{ c + '0' }}"
์˜ˆ์ƒ ๊ฒฐ๊ณผ


์„ธ ๋ฒˆ์งธ ์ž‘์—…์€ int 2๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผํ•˜๋ฉฐ ๋„ค ๋ฒˆ์งธ ์ž‘์—…์€ ์‹คํŒจ ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค.

์‹ค์ œ ๊ฒฐ๊ณผ


์„ธ ๋ฒˆ์งธ ์ž‘์—… ์‹คํŒจ

$ ansible-playbook a.yml -vvvvv
Using /etc/ansible/ansible.cfg as config file
 [WARNING]: provided hosts list is empty, only localhost is available

Loading callback plugin default of type stdout, v2.0 from /usr/lib/python2.7/dist-packages/ansible/plugins/callback/__init__.pyc

PLAYBOOK: a.yml ****************************************************************
1 plays in a.yml

PLAY [localhost] ***************************************************************

TASK [setup] *******************************************************************
Using module file /usr/lib/python2.7/dist-packages/ansible/modules/core/system/setup.py
<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: yurii
<127.0.0.1> EXEC /bin/sh -c '/usr/bin/python && sleep 0'
ok: [localhost]

TASK [debug] *******************************************************************
task path: /home/yurii/sandbox/ans/a.yml:7
ok: [localhost] => {
    "msg": "1"
}

TASK [debug] *******************************************************************
task path: /home/yurii/sandbox/ans/a.yml:8
ok: [localhost] => {
    "msg": "1"
}

TASK [debug] *******************************************************************
task path: /home/yurii/sandbox/ans/a.yml:9
fatal: [localhost]: FAILED! => {
    "failed": true, 
    "msg": "Unexpected templating type error occurred on ({{ c + 0 }}): coercing to Unicode: need string or buffer, int found"
}
...ignoring

TASK [debug] *******************************************************************
task path: /home/yurii/sandbox/ans/a.yml:11
ok: [localhost] => {
    "msg": "20"
}

PLAY RECAP *********************************************************************
localhost                  : ok=5    changed=0    unreachable=0    failed=0   
affects_2.2 bug

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

์ด๊ฒƒ์€ ์ •๋ง๋กœ Jinja์˜ ์žฌ๋ฏธ ์ผ๋ฟ์ž…๋‹ˆ๋‹ค. var์˜ ์†Œ์Šค๋ฅผ ํ•ญ์ƒ ์•Œ ์ˆ˜๋Š” ์—†๊ธฐ ๋•Œ๋ฌธ์— (์˜ˆ : ๋ช…๋ น ์ค„ -e vars๋Š” YAML ์œ ํ˜• ์ถ”๋ก ์„ ๊ฑฐ์น˜์ง€ ์•Š์œผ๋ฏ€๋กœ ํ•ญ์ƒ ๋ฌธ์ž์—ด ์ž„) ๋‹จ์–ธํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. / ์ˆ˜ํ•™์  ์—ฐ์‚ฐ์„ํ•˜๊ธฐ ์ „์— ๊ฐ•์š”ํ•˜์‹ญ์‹œ์˜ค. ์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

- debug: msg="{{ c | int + 0 }}"

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

์ด๊ฒƒ์€ ์ •๋ง๋กœ Jinja์˜ ์žฌ๋ฏธ ์ผ๋ฟ์ž…๋‹ˆ๋‹ค. var์˜ ์†Œ์Šค๋ฅผ ํ•ญ์ƒ ์•Œ ์ˆ˜๋Š” ์—†๊ธฐ ๋•Œ๋ฌธ์— (์˜ˆ : ๋ช…๋ น ์ค„ -e vars๋Š” YAML ์œ ํ˜• ์ถ”๋ก ์„ ๊ฑฐ์น˜์ง€ ์•Š์œผ๋ฏ€๋กœ ํ•ญ์ƒ ๋ฌธ์ž์—ด ์ž„) ๋‹จ์–ธํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. / ์ˆ˜ํ•™์  ์—ฐ์‚ฐ์„ํ•˜๊ธฐ ์ „์— ๊ฐ•์š”ํ•˜์‹ญ์‹œ์˜ค. ์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

- debug: msg="{{ c | int + 0 }}"
์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰