๊ธฐ๋ฅ ์์ด๋์ด
ํต์ฌ
2.1
how:
forks: 1
pause: 0
squash: name
label: "{{item.name}}"
end: on_fail
with_items: ...
๋ฌธ์๋ฅผ ํ์ฌ ์ํ๋ก:
http://docs.ansible.com/ansible/playbooks_loops.html#loop -์ ์ด
how
๋ผ๊ณ ๋ถ๋ฅด์ง ๋ง์๋ค. become: true
๋ณด๋ค ์ฝ๊ธฐ๊ฐ ๋ ๋์ฉ๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ ์๋์ ๊ธฐ๋ฅ์ ํ๋ฅญํด ๋ณด์
๋๋ค.
#10695์ ๋ํ ์์ ์ฌํญ ํฌํจ
ํ๋ฅญํ. ์์ ๊ฑฐ ์ด๋์ looping:
๋ผ๊ณ ๋ถ๋ฅผ ์๋ ์์ต๋๋ค.
:+1:
+1
ํนํ ํธ์คํธ ๋ณ๋ ฌํ์ ๋ํด +1!
:+1:
:+1:
ํ์ง๋ง ๊ทธ๊ฒ์ "์ด๋ป๊ฒ"๋ผ๊ณ ๋ถ๋ฅด์ง ๋ง์
์ฒซ ๋ฒ์งธ ์คํจ ํ ๋ฃจํ ์์ ์ ์ค๋จํ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- hosts: localhost
vars:
myvar:
- 1
- 2
- 3
- 4
- 5
tasks:
- name: break loop after 3
debug: msg={{item}}
failed_when: item == 3
register: myresults
when: not (myresults|default({}))|failed
with_items: "{{myvar}}"
@bcoca ๊ฐ ๋์์ ์๋ํ์ง ์์ต๋๋ค(ansible 1.9.3 ์ฐ๋ถํฌ)
TASK: [3 ์ดํ ๋ฃจํ ์ค๋จ] * * * * * * * * * * * * * * ** *
ํ์ธ: [๋ก์ปฌ ํธ์คํธ] => (ํญ๋ชฉ=1) => {
"์คํจ": ๊ฑฐ์ง,
"failed_when_result": ๊ฑฐ์ง,
"ํญ๋ชฉ": 1,
"๋ฉ์์ง": "1"
}
ํ์ธ: [๋ก์ปฌ ํธ์คํธ] => (ํญ๋ชฉ=2) => {
"์คํจ": ๊ฑฐ์ง,
"failed_when_result": ๊ฑฐ์ง,
"ํญ๋ชฉ": 2,
"๋ฉ์์ง": "2"
}
์คํจ: [localhost] => (ํญ๋ชฉ=3) => {"์คํจ": true, "failed_when_result": true, "ํญ๋ชฉ": 3, "verbose_always": true}
๋ฉ์์ง: 3
ํ์ธ: [localhost] => (ํญ๋ชฉ=4) => {
"์คํจ": ๊ฑฐ์ง,
"failed_when_result": ๊ฑฐ์ง,
"ํญ๋ชฉ": 4,
"๋ฉ์์ง": "4"
}
ํ์ธ: [localhost] => (ํญ๋ชฉ=5) => {
"์คํจ": ๊ฑฐ์ง,
"failed_when_result": ๊ฑฐ์ง,
"ํญ๋ชฉ": 5,
"๋ฉ์์ง": "5"
}
์, ์, ๋ฃจํ๊ฐ ์๋ฃ๋ ๋๊น์ง ๋ฑ๋ก์ด ๋ฐ์ํ์ง ์๋ 1.9์์์ ๊ฐ์ด 2.0์์ ๊ทธ๋๋ก ์๋ํฉ๋๋ค.
ํฌํฌ์ +1
+1
์๋ง๋ "๋ฐฉ๋ฒ", loop_details ๋๋ ์ต์
๋์ ?
+1
+1, $ localhost
wait_for
๋ฅผ ์ฌ์ฉํ์ฌ 100๊ฐ์ EC2 ํธ์คํธ๊ฐ ์ฌ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ์ ์ ๋ฅผ ์ฃฝ์ด๋ ๊ฒ์
๋๋ค...
senderista์ ๋น์ทํ ์ด์ ๋ก +1
+1
:+1:
squash
๋ฐ forks
๋ ๋ชจ๋ Ansible ์คํ ์๋๋ฅผ ์์ฒญ๋๊ฒ ๋์ผ ์ ์๋ ๋ฉ์ง ๊ธฐ๋ฅ์
๋๋ค.
๋ํ how
๋ฅผ loop_details
, loop_settings
, loop_options
๋๋ ์ด์ ์ ์ฌํ ๊ฒ์ผ๋ก ๋์ฒดํฉ๋๋ค.
loop_control
, ์ด๋ฏธ label
๋ถ๋ถ์ด ๊ตฌํ๋ 2.1์ ์์ต๋๋ค.
์ค์ฟผ์๋ ๊ทธ๊ฒ์ ์ง์ํ๋ ๋ชจ๋์ ๋ชฉ๋ก์ ์ ๋ฌํ๊ธฐ ์ฝ๊ธฐ ๋๋ฌธ์ ๊ทธ๋ฅ ์ฌ๋ผ์ง ์ ์์ต๋๋ค.
apt: name={{listofpackages}}
๋ฃจํ๋ฅผ ์์ ํ ํผํ์ญ์์ค
+1 ํฌํฌ
+1 ํฌํฌ
์กฐ๊ฑด๋ถ ์ค๋จ break_when
์ ๋ํ ์ ๊ตฌ์ฑ์ ๋ํ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์์์ต๋๋ค.
+1 ํฌํฌ ๋ฐ ๋ค์๊ณผ ๊ฐ์ด ์คํํ ์์
์ํ์ค๋ฅผ ๋ณ๋ ฌํํ๋ ๋ฐ๋ ์๋ํ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
- include: service.yml
with_items: "{{services|default([])}}"
๊ทธ๋ ์ง ์์ผ๋ฉด async/async_status
๊ฐ ์ด๋ฏธ ์์ต๋๋ค.
+1 ํฌํฌ
100๊ฐ ์ด์์ ํญ๋ชฉ์์ with_
๋ฃจํ๋ฅผ ๋ฐ๋ณตํ๋ openstack ๋ชจ๋์ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค...
ํฌํฌ์ +1. ๋ชจ๋ AWS ๋ฆฌ์ ์ AMI๋ฅผ ๋ณต์ฌํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํฌํฌ์ +1. ์ ๋ฐ! loop_control์ ์ผ๋ถ๋ก ๋ง๋์ญ์์ค.
ํฌํฌ์ +1
ํฌํฌ์ +1
+1, ํฌํฌ๋ ํ์ํฉ๋๋ค :-)
ํฌํฌ์ +1
ํฌํฌ์ +1
ํฌํฌ๋ ๊ต์ฅํ ๊ฒ์ ๋๋ค, +1
๋๋ ์คํธ์ ๊ธฐ์ฌํ๊ณ ์ถ์ง ์๊ณ ํญ์ ์นจ๋ฌต ์์ ์์ ์์ต๋๋ค. ํ์ํ๋์ง ์ฌ๋ถ๋ฅผ ํ๋ก์ ํธ ์ฌ์ด์ ์ธก์ ํ๊ธฐ ์ด๋ ต๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋ฌ๋ ํฌํฌ +1 ๊ธฐ์ฐจ๊ฐ ์ญ์ ๋ ๋ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค!
ํฌํฌ์ +1
ํฌํฌ์ +1
ํฌํฌ์ +1
:+1: ํฌํฌ์
@bcoca ์๋ ํ์ธ์! ์๊ฐ์ ๋ด์ด ์ด ๋ฌธ์ ๋ฅผ ์ด์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ปค๋ฎค๋ํฐ์์ ๊ทํ์ ๋ฌธ์ ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ ค๋ฉด ์กฐ๊ธ ๋ ๋ง์ ์ ๋ณด๊ฐ ํ์ํฉ๋๋ค.
์ค๋ช ์์ ์ฐพ์ ์ ์๋ ํญ๋ชฉ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ด ํ
ํ๋ฆฟ์ผ๋ก ์ด ๋ฌธ์ ์ ๋ํ ์ค๋ช
์ ์ค์ ํ์ธ์.
https://raw.githubusercontent.com/ansible/ansible/devel/.github/ISSUE_TEMPLATE.md
ํฌํฌ์ +1
ํฌํฌ์ +1!
ํฌํฌ์ +1!
ํฌํฌ์ +1!
ํฌํฌ์ +1!
ํฌํฌ์ ๋ํ ์
๋ฐ์ดํธ๊ฐ ์์ต๋๊น? ์ธ์ ์ฏค ์ค๋นํด์ผ ํ ๊น์?
๋ด ์ฌ์ฉ ์ฌ๋ก๋ with_sequence ๋ฅผ ์ฌ์ฉํ์ฌ ์๋ฒ์์ ์ฝ 20๊ฐ์ ์ปจํ
์ด๋๋ฅผ ์ธ์คํด์คํํ๋ ๊ฒ์
๋๋ค. ์ด์ ์๊ฐ์ด ๋๋ฌด ๋ง์ด ๊ฑธ๋ฆฝ๋๋ค :(
๋์์ด ๋๋ค๋ฉด ๊ธฐ์์ง๋ง ์์ ๋ ๊ณณ์ ๋ํ ๋ช ๊ฐ์ง ํ์ด ํ์ํฉ๋๋ค.
@bitliner ์๋ฌด๋ ๊ทธ๊ฒ์ ๋ํ PR์ ๋ง๋ค์ง ์์์ต๋๋ค. ๊ทธ๊ฒ์ด ๋น์ ์ด ์๊ตฌํ๋ ๊ฒ์ด๋ผ๋ฉด ์ค์ ๋ก ์ฌ๋ฐ๋ฅด๊ฒ ์ํํ๊ธฐ๊ฐ ๋งค์ฐ ์ด๋ ต์ต๋๋ค.
๋ฌธ์ ์ ๊ฒฝ์ฐ ์ธ๋ฒคํ ๋ฆฌ์์ X ํธ์คํธ๋ฅผ ์ ์ธํ๊ณ $# with_
hosts:
๋ฅผ ๋ฐ๋ณตํ์ฌ ๋ณ๋ ฌ๋ก ์์ฑํ์ญ์์ค.
๋ชฉ๋ก:
[containers]
container[000:020]
hosts: containers
gather_facts: false
tasks:
- container: state=present name={{inventory_hostname}}
์ฆ, ์ปจํ ์ด๋๋ '๊ตฌ์ฑ๋' ๋ชจ๋์ ๋๋ค.
@bcoca ๊ทํ์ ์๋ฃจ์ ์ ๋์๊ฒ ๋ช ํํ์ง ์์ต๋๋ค. ํ์คํ, ์ด๊ฒ์ด ๋น์ ์ด ์๋ฏธํ๋ ๋ฐ์ ๋๊น?
ํธ์คํธ ํ์ผ
[containers]
192.168.1.100
192.168.1.100
192.168.1.100
192.168.1.100
... and so on based on the degree of parallelism I want to get ...
main.yml ํ์ผ
hosts: containers
gather_facts: false
tasks:
- container: state=present name={{inventory_hostname}}
๊ตฌํํด์ผ ํ๋ ์ปจํ ์ด๋ ๋ชจ๋์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๊น? ์ด ๊ฒฝ์ฐ ๋ชจ๋ ์ปจํ ์ด๋๊ฐ ๋์ผํ ์ด๋ฆ์ ๊ฐ๊ฒ ๋๋ฉฐ ์ด๋ ํ์ฉ๋์ง ์์ต๋๋ค. ๋ง์ต๋๊น?
๋ํ ๋ฃจํ๋ฅผ ๋ณ๋ ฌ๋ก ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌํํ๋ ๋ฐ ์ด๋ค ์ด๋ ค์์ด ์์ต๋๊น?
๋ด ์ฌ์ฉ ์ฌ๋ก๋ ์ด ์์ ์ ์๋๋ฅผ ๋์ฌ์ผ ํฉ๋๋ค.
- name: "Start clients"
docker_container:
name: "mycontainer-{{ item }}"
image: myimage
links:
- server-{{item}}:server-{{item}}
with_sequence: count={{ scale }}
ํน์ ๋ฐฉ์์ผ๋ก ์ปจํ ์ด๋ ๊ฐ์ ํธ๋ํฝ์ ๋ผ์ฐํ ํด์ผ ํ๊ธฐ ๋๋ฌธ์ docker-compose scale ์ ์ฌ์ฉํ ์ ์์ต๋๋ค(์ด๊ฒ์ด ๋ค๋ฅธ ๋์ปค ์ปจํ ์ด๋ ์ด๋ฆ์ ์์ฑํ๊ธฐ ์ํด with_sequence ๋ฅผ ์ฌ์ฉํ๋ ์ด์ ์ ๋๋ค).
์ปจํ ์ด๋ ์ ์ธ์ ์ทจํ๊ณ scale ๋งค๊ฐ๋ณ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๊ฒฉ์ผ๋ก ์ฌ๋ฌ ์ปจํ ์ด๋๋ฅผ ๋ณ๋ ฌ๋ก ์ธ์คํด์คํํ๋ ๋ชจ๋์ ๋น๋ํ ์ ์์ต๋๋ค. ๋ง์ด ๋๋์? myModule docker_container ๋ชจ๋์์ ํธ์ถ/์ฌ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๊ณผ Ansible์ด ๋ณ๋ ฌ๋ก ์คํํ๊ธฐ ์ํด ์ ๊ณตํ๋ API๋ฅผ ์ดํดํ๋ ๋ฐ ๋์์ด ์์ต๋๊น?
@bitliner ๋น์ ์ ๋ด ์ง์๋ฅผ ๋ฐ๋ฅด์ง ์์์ต๋๋ค. ์ธ๋ฒคํ ๋ฆฌ์ ๊ณ ์ ํ ์ด๋ฆ์ด ์์์ต๋๋ค(๋ฒ์๋ฅผ ์ฌ์ฉํ์ฌ ์ํ์ค์ฒ๋ผ ์๋ํจ). ์ด๋ฆ์ ์ธ๋ฒคํ ๋ฆฌ์์ ๊ณ ์ ํ๋ฏ๋ก ๋์ผํ ์ด๋ฆ์ N๋ฒ ์ ์ธํ์ง๋ง ์ฌ์ ํ ํ๋์ ํธ์คํธ๊ฐ ์์ผ๋ฏ๋ก 1๊ฐ์ ํธ์คํธ์ ๋ํด์๋ง ๋ฃจํ๋ฅผ ๋๊ธฐ ๋๋ฌธ์ ์ปจํ ์ด๋์ ์์์ ์ด๋ฆ์ ๋ ๋ฒ์งธ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค.
์ด๋ค ๊ฒฝ์ฐ๋ ๋ฌธ์ ์ ๋ํ ํ์ ์กฐ์น๋ฅผ ์ทจํ๋ ค๋ฉด ์ด ํฐ์ผ์ ์ฃผ์ ์์ ์ฝ๊ฐ ๋ฒ์ด๋ ML ๋๋ IRC๋ฅผ ์ฌ์ฉํ์ธ์.
@bcoca 20๊ฐ์ ํธ์คํธ๋ฅผ ์ ์ธํ๋๋ฐ ์ด๋ป๊ฒ ํ๋์ ํธ์คํธ๋ฅผ ๊ฐ์ง ์ ์๋์?
[containers]
container[000:020]
container001
, container002
๋ฑ์ ์ฐ๊ฒฐํ ๊ฒ์
๋๋ค.
๊ทธ๊ฒ์ ๊ณ ์ ํ ์ด๋ฆ์ ๊ฐ์ง ๋ ์๋ํ์ง๋ง ๋์๊ฒ ๋ช
ํํ์ง ์์ ๊ฒ์ ๋ด๊ฐ ์ฌ์ ํ ํ๋์ ํธ์คํธ(20 ๋์ )๋ฅผ ๊ฐ์ง๊ณ ์๋ค๊ณ ๋งํ๋ ์ด์ ์
๋๋ค.
hosts:containers
๋ ๋์๊ฒ ํ๋๊ฐ ์๋๋ผ 20๋ช
์ ํธ์คํธ๋ฅผ ์๋ฏธํฉ๋๋ค. ์ด ์๋ฃจ์
์์ ๋ฌด์์ ๋ฌด์ํ๊ณ ์์ต๋๊น?
@bitliner ๋ ๋ค์์ ์ ๋ฐํฉ๋๋ค.
[containers]
192.168.1.100
192.168.1.100
192.168.1.100
192.168.1.100
4๊ฐ์ ํธ์คํธ๊ฐ ์๋๋ผ 1๊ฐ์ ํธ์คํธ์ ๋๋ค.
๋ํ ์ด ์์ ์์ ์ด๊ฒ์ ์ฃผ์ ์์ ๋ฒ์ด๋ ๊ฒ์ ๋๋ค. ์ด์ ๋ํ ๋์์ ๊ณ์ ๋ฐ๊ณ ์ถ๋ค๋ฉด IRC ๋๋ ML๋ก ์ด๋ํ์ญ์์ค.
๋๋ ์ฌ์ฉํ์ฌ ํด๊ฒฐํ๋ค
[containers]
ip[000:020] ansible_host=192.168.1.100
๊ทธ๋ฆฌ๊ณ
- name: "Start containers"
docker_container:
name: "my-container-{{ inventory_hostname }}"
์ง๋ฌธ: fork
๋ฌธ์ ์ถ๊ฐํ๊ธฐ ์ํ ์ด๋ฏธ์ง, ๋ณ๋ ฌ ์ฒ๋ฆฌ ๋ฐ ๋น๋๊ธฐํ ์์ค์ ๊ด๋ฆฌํ๊ธฐ ์ํด run_loop ๋ฉ์๋๋ฅผ ๋ค์ ์์ฑํ๋ ๊ฒ์ผ๋ก ๋ณ๊ฒฝ ์ฌํญ์ด ๊ตฌ์ฑ๋ฉ๋๊น?
๊ทธ๋ฐ ๋ค์ '์ฌ๋ฏธ'๋๊ธฐ ์์ํฉ๋๋ค ...:
--forks
์ ๋ํด ๊ณ์ฐํฉ๋๊น?๊ทธ๋ฆฌ๊ณ ์๊ณ ์๋ ๋ช ๊ฐ์ง ๋ค๋ฅธ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋๊ตฐ๊ฐ๊ฐ ๊ทธ๊ฒ์ ๊ตฌํํ๋ ค๊ณ ํ ๋๊น์ง ๋ด๊ฐ ์์ง ๋ชปํ ๋ง์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋ช ๊ฐ์ง์ ๋ํ ์๋ฃจ์ ์ด ์์ง๋ง ๊ฝค ๋นจ๋ฆฌ ์์์ ๋ฒ์ด๋๊ธฐ ์์ํฉ๋๋ค.
@bcoca ๋ฃจํ ๋ถ๊ธฐ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด์๋ ์ ๋ฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ด 1๋ก ์ค์ ๋ ๊ฒ์ ๋ณด๊ณ forks
๋๋ serial
๋งค๊ฐ๋ณ์๋ก ๋์
ํ์ง๋ง ๊ฒฝ๊ณ ๋ฅผ ํฌํจํ๊ณ ์ถ์ต๋๋ค. ์ผ๋ถ ๊ธฐ์กด ์ฝ๋๊ฐ ์์๋ ์ ์์ต๋๋ค. ์ฆ, ์ด ๊ธฐ๋ฅ์ ๋งค์ฐ ๊ธฐ๋ํ๊ณ ์์ต๋๋ค(ํนํ delegate_to
๊ฐ ํ์ํ ์์
์ ๊ฒฝ์ฐ).
ํฌํฌ์ ๊ฒฝ์ฐ +1(๊ธฐ๋ณธ์ ์ผ๋ก false)
+1 ํฌํฌ
+1 ํฌํฌ
+1 ํฌํฌ
+1 ํฌํฌ
+1 ํฌํฌ
ํฌํฌ์ ๊ฒฝ์ฐ์๋ +1์ด์ง๋ง ๊ทธ ๋์ ์ผ๋ฐ์ ์ผ๋ก ํฐ ์ฑ๋ฅ ํฅ์๊ณผ with_items
๋ฃจํ๋ฅผ ์ ๊ณตํ๋ ์๋ก์ด Ansible ์ ๋ต ํ๋ฌ๊ทธ์ธ๋ ์์ต๋๋ค. ์๋ง๋ ์ฑ๋ฅ์์ ์ด์ ๋ก ํฌํฌ๋ฅผ ์ํ๋ ์ฌ๋๋ค์๊ฒ๋ ๋ค์์ ์ดํด๋ณผ ๊ฐ์น๊ฐ ์์ต๋๋ค.
https://github.com/dw/mitogen
https://mitogen.readthedocs.io/en/latest/ansible.html
์ด๊ฒ์ด with_items ๋ฃจํ๋ฅผ ์ ํํ ์ด๋ป๊ฒ ๊ฐ์ ํ ์ง ์ ์ ์์ต๋๋ค. ์ด ํ๋ฌ๊ทธ์ธ
ssh๋ฅผ ์ฐ๊ฒฐ ๋ฐฉ๋ฒ์ผ๋ก ์ฌ์ฉํ์ฌ ๋ฐ์ํ๋ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ๊ฐ์ ํฉ๋๋ค.
ํนํ ์ฅ๊ฑฐ๋ฆฌ ๋ฐ ์ ์ฌ ๋คํธ์ํฌ์์ ๋ง์ ์
์๋ฒ์.
์ด๊ฒ์ ์คํ์ด ํ์ํ AWS ๋๋ Azure ํด๋ผ์ฐ๋ ๊ธฐ๋ฅ์๋ ๋์์ด ๋์ง ์์ต๋๋ค.
๊ฐ๋ฅํ ์ปจํธ๋กค๋ฌ์์ ๋ฐ์ํ๊ณ ํญ๋ชฉ ์งํฉ์์ ์คํ๋ฉ๋๋ค.
ํด๋น ํด๋ผ์ฐ๋ ์์คํ
์ ํธ์คํธ์ ์ ํ ์ฐ๊ฒฐ๋์ง ์์ต๋๋ค.
with_items๊ฐ ๋๋ฆฐ ์ฃผ์ ๋ฌธ์ . ๊ทธ๊ฒ์ ํฐ ์ธํธ์ ๊ด๋ จ์ด ์์ต๋๋ค
์์คํ
๋๋ ๋๊ธฐ ์๊ฐ ๋๋ ssh์ ๊ด๋ จ๋ ๋ชจ๋ ๊ฒ. ๊ทธ๊ฒ์ ๋จ์ํ ์ฌ์ค์ด๋ค
์ง๋ ฌ๋ก with_items ๋ฃจํ์์ ํด๋ผ์ฐ๋ ๊ธฐ๋ฅ์ ์คํํ๊ณ ์๋ฌด ๊ฒ๋ ์คํํ์ง ์์ต๋๋ค.
ํด๋ผ์ฐ๋ ๊ณต๊ธ์๊ฐ ์๋๋ฅผ ๊ฐ์ ํ๊ฑฐ๋
์ด๋ฌํ ํด๋ผ์ฐ๋ ๊ธฐ๋ฅ์ ๋ณ๋ ฌ ์คํ์ ๊ฐ๋ฅํฉ๋๋ค.
๋ํ ๊ธฐ์ฌ์์ with_items์ ๋ํด ์ ํ ์ธ๊ธํ์ง ์์ผ๋ฏ๋ก ๋ฐฉ๋ฒ์ ์ ์ ์์ต๋๋ค.
์ด๊ฒ์ ์์ฃผ ์์ ๋ถ๋ถ์๋ ๋์์ด ๋ ๊ฒ์
๋๋ค. ์ข ๋ ์ค๋ช
ํด์ฃผ์ค ์ ์๋์
์ด๊ฒ์ด ์ด๋ป๊ฒ ๋์์ด ๋ ๊น์? ๋ด๊ฐ ๋๋ฝ๋ ๊ฒฝ์ฐ ๋ด๊ฐ ๋ฌด์์ ๋์น๊ณ ์๋์ง ์๊ณ ์ถ์ต๋๋ค
์ฌ๊ธฐ ๋ญ๊ฐ.
2018๋ 3์ 10์ผ ํ ์์ผ 21:58 NielsH [email protected] ์์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
ํฌํฌ์๋ +1์ด ์์ง๋ง ๊ทธ ๋์ ์๋ก์ด Ansible๋ ์์ต๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ํฐ ์ฑ๋ฅ ํฅ์์ ์ ๊ณตํ๋ ์ ๋ต ํ๋ฌ๊ทธ์ธ ๋ฐ
with_items ๋ฃจํ์ ๊ฒฝ์ฐ. ์๋ง๋ ์ฑ๋ฅ์ ์ํด ํฌํฌ๋ฅผ ์ํ๋ ์ฌ๋๋ค์ ์ํด
์ดํด๋ณผ ๊ฐ์น๊ฐ ์๋ ์ด์ :https://github.com/dw/mitogen
https://mitogen.readthedocs.io/en/latest/ansible.htmlโ
๋น์ ์ด ๋๊ธ์ ๋ฌ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/ansible/ansible/issues/12086#issuecomment-372070418 ,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AJd59qWI9n_DNmUqpmZYiIOMZAyjJy3uks5tdEyQgaJpZM4Fx8zF
.
์ฌ์ค ๋ชจ๋ ๊ฒฝ์ฐ์ ๋์์ด ๋์ง๋ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ด๊ฐ with_items์์ ํฌํฌ๋ฅผ ์ฐพ๋ ์ด์ ๋ ๊ฐ ํญ๋ชฉ์ ๊ฐ๋ณ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ ์๋๊ฐ ๋๋ฆฌ๊ธฐ ๋๋ฌธ์
๋๋ค(ํ์ดํ๋ผ์ด๋์ ์ฌ์ฉํ๋๋ผ๋). ๋๋ก๋ host_vars๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ง์ ์(์๋ฐฑ ๊ฐ)์ ๋๋ ํ ๋ฆฌ๋ฅผ ์์ฑํ๊ฑฐ๋ ์๋ฐฑ ๊ฐ์ ํ์ผ์ ํ
ํ๋ฆฟํํด์ผ ํฉ๋๋ค. ๊ทธ๋์ ์ ๋ ์ฃผ๋ก file
๋ฐ template
๋ชจ๋์ ๋ฐ๋ณตํ๊ณ ์์ต๋๋ค.
๋๋ ํ ๋ฒ with_items๋ฅผ ํตํด 100๊ฐ์ ๊ฐ๋ณ ํ์ผ์ 100๊ฐ์ ํ์ผ์ ํ ํ๋ฆฟํํ๋ ๊ฒ๊ณผ jinja ํ ํ๋ฆฟ ์์ฒด์ ํญ๋ชฉ์ ๋ฐ๋ณตํ๊ณ ํ ํ๋ฆฟ์ ํ๋์ ํฐ ํ์ผ์ ๋ณํฉํ๋ ๊ฒ์ ํ ์คํธํ์ต๋๋ค. ๋จ์ผ ํ์ผ์ ๋ชจ๋ ์์ ์ 5์ด๊ฐ ๊ฑธ๋ฆฌ์ง๋ง 100๊ฐ์ ๊ฐ๋ณ ๊ตฌ์ฑ ํ์ผ์ ๋ง๋๋ ๋ฐ๋ 30๋ถ์ด ๊ฑธ๋ฆฝ๋๋ค.
์ ๊ฐ ์ธ๊ธํ ํ๋ฌ๊ทธ์ธ์ ์ ์๊ฒ ํฐ ๊ฐ์ ์ ์ฃผ์์ต๋๋ค. ์ ๋ ์ฌ๊ธฐ์ ์ธ๊ธํ ๊ฐ์น๊ฐ ์๋ค๊ณ ์๊ฐํ์ต๋๋ค.
๋ฃจํ๋ ํญ๋ชฉ๋น ๋์ผํ ์์ ์ ํ ๋ฒ๋ง ์คํํ๋ฏ๋ก ์์ ์คํ ์๋๊ฐ ํฅ์๋๋ฉด ๋ฃจํ๊ฐ ๋ ๋นจ๋ผ์ง๋๋ค. ์ด๊ฒ์ '์๊ฒฉ ์์ '์๋ง ์ํฅ์ ๋ฏธ์น๋ฏ๋ก ๋ก์ปฌ์๋ ์ด๋์ด ํ์๋์ง ์์ต๋๋ค.
๋์. ๋ก์ปฌ ์์ ๋ง ์คํํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํนํ, ์ญ์ฌ ๊ฐ ์ ๋์ ๋์ปค ์ด๋ฏธ์ง๋ฅผ ๋น๋ํฉ๋๋ค. ํ์ฌ sible์ ์ง๋ ฌ๋ก ๋น๋ํ๊ธฐ ๋๋ฌธ์ ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆฌ๊ณ ๋ฉํฐ์ฝ์ด CPU ํ์ฉ๋๊ฐ ๋ฎ์ต๋๋ค. ์ฌ๋ฌ ๋์ปค ์ด๋ฏธ์ง๋ฅผ ๋ณ๋ ฌ๋ก ๋ง๋ค๊ณ ์ถ์ต๋๋ค.
@gjcarneiro ๊ทธ๋ฐ ๋ค์ ๋ฐ์ดํฐ๋ก ์ ์ํ์ง ์๊ณ ํธ์คํธ๋ก ์ ์ํ๊ณ ๋์์ผ๋ก ์ง์ ํ ๋ค์ delegate_to: localhost
๋ก ์์
์ ๋ณ๋ ฌ๋ก ์คํํฉ๋๋ค.
ํ, ๊น๋ํ ํธ๋ฆญ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. :) ํ์ง๋ง ์๋ํ๋๋ผ๋(ํ ์คํธํ์ง ์์์ง๋ง) ์์ ์ ๋ณ๋ ฌ๋ก ์คํํ๋ ๋ค์ ๋ณต์กํ ๋ฐฉ๋ฒ์ ๋๋ค.
๊ทธ๋ฐ ๋ค์ ๋ค์, ๋๋ ์๋ ํ ๊ฒ๊ณผ ์์ ํ ๋ค๋ฅธ ๋ชฉ์ ์ผ๋ก ๊ฐ๋ฅํ ๊ฒ์ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก ์ด๋ค๋ฉด์์๋ ๋ด ์๋ชป์ ๋๋ค :(
์ค์ ๋ก ๋ณต์กํ์ง๋ ์์ง๋ง Ansible์ด ๋ณ์๊ฐ ์๋ ํธ์คํธ๋ณ๋ก ๋ณ๋ ฌํ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
์, ์ดํดํฉ๋๋ค. Ansible์ ์๋ชป์ด ์๋๋๋ค. ์ดํดํฉ๋๋ค. ๊ทธ๋ฌ๋ Ansible์ ๋๋ถ๋ถ์ ๋ฉด์์ ๋น๋ ์์คํ ์ผ๋ก ํ๋ฅญํ๊ธฐ ๋๋ฌธ์ (์๋ฅผ ๋ค์ด make ๋์ ) ๋น๋ ์์คํ ์ผ๋ก Ansible์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ด ์๊ฐ์๋ ๋น๋ ์์คํ ์ผ๋ก ์๊ฐํ๋ "ํธ์คํธ"๊ฐ ์๋ฏธ๊ฐ ์์ต๋๋ค. "make"์ ๊ฐ์ ๋น๋ ์์คํ ์ "ํธ์คํธ"์ ๋ํด ์ ๊ฒฝ ์ฐ์ง ์๊ณ ํ์ผ๊ณผ ์์ ์๋ง ๊ด์ฌ์ ๊ฐ์ต๋๋ค. Ansible์ ๋น๋ ์์คํ ์ผ๋ก ์ฌ์ฉํ๋๋ก ๊ฐ์ ํ๊ณ ์์ผ๋ฉฐ, ์ด๋ก ์ธํด ์ฝ๊ฐ์ ์ธ์ง ๋ถ์กฐํ๊ฐ ๋ฐ์ํฉ๋๋ค. ๊ทธ๊ฒ ์ ๋ถ์ ๋๋ค.
Ansible์ ํธ์คํธ์ ์์ ์๋ง ๊ด์ฌ์ ๋๊ณ ์์ผ๋ฉฐ, 'ํธ์คํธ'๋ฅผ ๊ตฌ์ถํ๊ณ ์๋ ์ด๋ฏธ์ง๋ฅผ ๊ณ ๋ คํ๋ฉด ๊ฐ์๊ธฐ ๋ ํจ๋ฌ๋ค์์ ๋ชจ๋ ๋ง์ต๋๋ค.
Ansible์ ๋ค๋ฅธ ๋ง์ ๊ฒ๋ค์ ์ํ ๊ตฌ์ฑ ๊ด๋ฆฌ ๋๊ตฌ์
๋๋ค.
๋ค์๊ณผ ๊ฐ์ ์์ฒญ๋ ์์ ํด๋ผ์ฐ๋ ์๋น์ค๋ฅผ ์ํ ์ค์ ๋ฐ ๊ฐ์ ์ฅ์น
elastic beanstalk, ๋๋ค ๋ฐ ๋ชจ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฐ์ ์น ์๋น์ค
IAM ๋ณด์ ๊ตฌ์ฑ ์์์ฒ๋ผ ์ ์ฉ๋๋ ๊ตฌ์ฑ ์์์ธ ๋ฐ๋ฉด Ansible์
์ฌ์ ํ ๋๋ถ๋ถ์ VM/ํธ์คํธ๋ฅผ ๊ธฐ๋ณธ์ ์ผ๋ก ์คํํ๋ ๊ฒฝ์ฐ ํธ์คํธ์ ๋ฅ์ํฉ๋๋ค.
2000๋
๋ ์ด๋ฐ IT. ์ฌ๊ธฐ์์ ๋๊ตฐ๊ฐ๋ฅผ ํ๋๊ฒํ์ง ์๋ ๊ฒ์ด ๋๋๋ก ์ค์ํฉ๋๋ค.
VM ๋๋ ๋์ปค ์ปจํ
์ด๋๋ฅผ ์คํํ๋ ์ด์ ๋ ๋ชจ๋
๋ ๊ฑฐ์ ์ด์ . ์ค์ ๋ก ์ ์ ๋ ๋ง์ ํธ์คํธ๊ฐ
์๋ํํ๋ ๊ฒ. IMO ๋ง์ฝ ์ฐ๋ฆฌ๊ฐ with_items์ ํํํ์ง ์๋ค๋ฉด ์ฐ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ด ํ ์ ์์ต๋๋ค.
๋ชจ๋ ํจ๊ป ์คํฌ๋ฉํ ์ ์์ต๋๋ค.
์ฌ๊ธฐ์์ ๊ธ์ ์ ์ผ๋ก ์๊ฐํ๊ณ ์ฌ์ฉํ๋ ค๊ณ ํฉ๋๋ค.
์ผ๋ถ ํด๋ผ์ฐ๋ ์๋น์ค์ ๊ฒฝ์ฐ delegate_to 200+์์ ์คํ์ ์๋ํ ์ ์ด ์์์ ์๋ฏธํฉ๋๋ค.
์ด๋ฐ ์์ผ๋ก ํ์ํ ํด๋ผ์ฐ๋ ๊ตฌ์ฑ ์์๋ ๋ชฉ๋ก์ ์ฟผ๋ฆฌํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
๊ฐ๋ฅํ ํธ์คํธ ํ์์ ํธ์คํธ ํ์ผ์ ๋คํ ํ ๋ค์ ์๋ํ์ญ์์ค.
delegate_to: localhost ์ฌ๊ธฐ์ ๊ฒฐ๊ณผ๋ฅผ ํผ๋๋ฐฑํ๊ฒ ์ต๋๋ค. ์์ ์๋ํ๋ ๊ฒฝ์ฐ
์ ์ด๋ ์ฐ๋ฆฌ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ํ ๋ฌธ์ ํ ๋ฆฌํ์คํธ๋ฅผ ํ ์ ์์ต๋๋ค.
์ด๋ฌํ ๋ฐฉ์์ผ๋ก with_item ๋ฃจํ ์ง๋ ฌ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ ๋ํ ๋งํฌ๊ฐ ์๋์ง ํ์ธํ ์ ์์ต๋๋ค.
ํด๋ผ์ฐ๋ ๋ชจ๋ ์น์
๋ฐ docker ์น์
์ ์์ต๋๋ค.
2018๋ 3์ 12์ผ ์์์ผ 18:49์ Brian Coca [email protected] ์ด ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
Ansible์ Hosts์ Tasks์๋ง ๊ด์ฌ์ด ์์ต๋๋ค.
'ํธ์คํธ'๋ฅผ ๊ตฌ์ถํ๊ณ ๊ฐ์๊ธฐ ๋ ํจ๋ฌ๋ค์์ ๋ชจ๋ ๋ง์ต๋๋ค.โ
๋น์ ์ด ๋๊ธ์ ๋ฌ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/ansible/ansible/issues/12086#issuecomment-372422169 ,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AJd59nhLIM3s3BL_xM_WwbJS6-uROzjSks5tdsNCgaJpZM4Fx8zF
.
@gjcarneiro ๊ทธ๋ฐ ๋ค์ ๋ฐ์ดํฐ๋ก ์ ์ํ์ง ์๊ณ ํธ์คํธ๋ก ์ ์ํ๊ณ ๋์์ผ๋ก ์ง์ ํ ๋ค์ delegate_to: localhost๋ก ์์ ์ ๋ณ๋ ฌ๋ก ์คํํฉ๋๋ค.
์ด๊ฒ์ ๋งค์ฐ ์ข์ ์ ๊ทผ ๋ฐฉ์์ด์ง๋ง serial=1
์๋ฎฌ๋ ์ด์
(#12170)์ ์ฌ์ฉํ ๋กค๋ง ์ฌ์์์ ๋ํ ํด๊ฒฐ ๋ฐฉ๋ฒ ๋ด์์๋ ์๋ํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ฐ๋ผ์ ๋ณ๋ ฌํ ์ต์
์ ํจ์ฌ ๋ ๋ง์ ์ ์ฐ์ฑ์ ์ถ๊ฐํฉ๋๋ค.
์์ฌ์ ์ฌ์ง๊ฐ ์์ง๋ง ๊ทธ๊ฒ์ ๋ํ ๋ณต์ก์ฑ์ ๊ฑฐ๋ํ ๊ณ์ธต์ ์ถ๊ฐํ๊ณ ๋จ์ผ ํธ์คํธ์์ ๋์ ์์
์ ์ฒ๋ฆฌํด์ผ ํ๋ ํ์์ฑ์ ์ถ๊ฐํฉ๋๋ค. hosts:all
+ lineinfile
+ delegate_to: localhost
Hrrm ์ง๊ธ๊น์ง ๋๋ delegate_to: 127.0.0.1์ ๋ํ ์์ ํ
์คํธ๋ฅผ ๋ง๋ค์์ต๋๋ค.
์ญ์ ์์
์ ๋๋ ๊ท๋ชจ์ ๊ณ ํต์ด๊ธฐ๋ ํฉ๋๋ค.
ํธ์คํธ: "{{ ๋ฐฐํฌ ๊ทธ๋ฃน }}"
์์ :
๋๋ฆฌ์ธ ๋์: 127.0.0.1
๋ถํํ๋ ์ฌ์ ํ ํธ์คํธ์ ๋์ด๋ ์์คํ
์ ์ฐ๊ฒฐ์ ์๋ํฉ๋๋ค.
azure ์์
azure_rm_virtualmachine์ ์คํํฉ๋๋ค.
๋๋ ์ด๊ฒ์ ์ฌ๋ฐ๋ฅด๊ฒ ํ๊ณ ์๋๊ฐ? ๋ด๊ฐ ๋ญ๊ฐ๋ฅผ ๋์น๊ณ ์๋ ๊ฒ ๊ฐ์ง๋ง ์ด๊ฒ์ ์๋ํ์ต๋๋ค.
์ด์ ์๋ ์ฌ๋ฌ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ์ํํ ์ ์์ผ๋ฏ๋ก
์ด๊ฒ.
์ด๊ฒ์ด ์ค์ ๋ก ์๋ํฉ๋๊น? ๋ฐ๋ผ๊ฑด๋ ์ด๊ฒ์ ๋จ์ง ๊ตฌ๋ฌธ ๋ฌธ์ ์ผ ๋ฟ์ ๋๋ค.
2018๋ 3์ 12์ผ ์์์ผ ์คํ 7์ 55๋ถ, Isaac Egglestone < [email protected]
์ผ๋ค:
Ansible์ ๋ค๋ฅธ ๋ง์ ๊ฒ๋ค์ ์ํ ๊ตฌ์ฑ ๊ด๋ฆฌ ๋๊ตฌ์ ๋๋ค.
์์ฒญ๋ ์์ ํด๋ผ์ฐ๋๋ฅผ ์ํ ์ค์ ๋ฐ ๊ฐ์ ๋คํธ์ํฌ ์ฅ์น
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฐ์ ์๋น์ค, elastic beanstalk, ๋๋ค์ ๊ฐ์ ์น ์๋น์ค
IAM ๋ณด์ ๊ตฌ์ฑ ์์์ ๊ฐ์ด ์ฌ๊ธฐ์ ์ ์ฉ๋๋ ๋ชจ๋ ๊ตฌ์ฑ ์์์
Ansible์ ์ฌ์ ํ โโ๋๋ถ๋ถ์ VM/ํธ์คํธ๋ฅผ ์คํํ๋ ๊ฒฝ์ฐ ํธ์คํธ์ ์ ํฉํฉ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก 2000๋ ๋ ์ด๋ฐ IT. ์ฌ๊ธฐ์์ ๋๊ตฐ๊ฐ๋ฅผ ๋ถ์พํ๊ฒํ์ง ์๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค.
VM ๋๋ ๋์ปค ์ปจํ ์ด๋๋ฅผ ์คํํ๋ ์ค์ํ ์ด์ ์ด์ง๋ง ๋ชจ๋
๋ ๊ฑฐ์ ์ด์ ์ ๋ค์ ์ค๊ธฐ. ์ค์ ๋ก ์ ์ ๋ ๋ง์ ํธ์คํธ๊ฐ
์๋ํ๋๋ ๊ฒ๋ณด๋ค ์ ์ด์ง๋๋ค. IMO ์ฐ๋ฆฌ๊ฐ ํํ์ ์ป์ง ๋ชปํ๋ค๋ฉด
with_items ์ฐ๋ฆฌ๋ ๊ฐ๋ฅํ ๋ชจ๋ ๊ฒ์ ํจ๊ป ํ๊ธฐํ ์๋ ์์ต๋๋ค.์ฌ๊ธฐ์์ ๊ธ์ ์ ์ผ๋ก ์๊ฐํ๊ณ ์ฌ์ฉํ๋ ค๊ณ ํฉ๋๋ค.
์ผ๋ถ ํด๋ผ์ฐ๋ ์๋น์ค์ ๊ฒฝ์ฐ delegate_to 200+์์ ์คํ์ ์๋ํ ์ ์ด ์์์ ์๋ฏธํฉ๋๋ค.
์ด๋ฐ ์์ผ๋ก ํ์ํ ํด๋ผ์ฐ๋ ๊ตฌ์ฑ ์์๋ ๋ชฉ๋ก์ ์ฟผ๋ฆฌํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
๊ฐ๋ฅํ ํธ์คํธ ํ์์ ํธ์คํธ ํ์ผ์ ๋คํ ํ ๋ค์ ์๋ํ์ญ์์ค.
delegate_to: localhost ์ฌ๊ธฐ์ ๊ฒฐ๊ณผ๋ฅผ ํผ๋๋ฐฑํ๊ฒ ์ต๋๋ค. ์์ ์๋ํ๋ ๊ฒฝ์ฐ
์ ์ด๋ ์ฐ๋ฆฌ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ํ ๋ฌธ์ ํ ๋ฆฌํ์คํธ๋ฅผ ํ ์ ์์ต๋๋ค.
์ด๋ฌํ ๋ฐฉ์์ผ๋ก with_item ๋ฃจํ ์ง๋ ฌ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ ๋ํ ๋งํฌ๊ฐ ์๋์ง ํ์ธํ ์ ์์ต๋๋ค.
ํด๋ผ์ฐ๋ ๋ชจ๋ ์น์ ๋ฐ docker ์น์ ์ ์์ต๋๋ค.2018๋ 3์ 12์ผ ์์์ผ 18:49์ Brian Coca [email protected] ์ด ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
Ansible์ Hosts์ Tasks์๋ง ๊ด์ฌ์ด ์์ต๋๋ค.
'ํธ์คํธ'๋ฅผ ๊ตฌ์ถํ๊ณ ๊ฐ์๊ธฐ ๋ ํจ๋ฌ๋ค์์ ๋ชจ๋ ๋ง์ต๋๋ค.โ
๋น์ ์ด ๋๊ธ์ ๋ฌ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/ansible/ansible/issues/12086#issuecomment-372422169 ,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AJd59nhLIM3s3BL_xM_WwbJS6-uROzjSks5tdsNCgaJpZM4Fx8zF
.
์ข์ต๋๋ค. ์ฌ์ค ์์ง์ ๋นํ์ฑํํ๋ฉด ์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ง๋ง
๋ ๋ค๋ฅธ ํ๋๋ host_vars๊ฐ ๋ ์ด์ azure ๋์ ์ธ๋ฒคํ ๋ฆฌ๋ฅผ ํฌํจํ์ง ์๋๋ค๋ ๊ฒ์
๋๋ค.
ํ์ค์.
๋ฐ๋ผ์ resource_group: "{{ host_vars[item]['resource_group'] }}"๋
์์์ ์๋ํ๊ณ ๋ฆฌ์์ค ๊ทธ๋ฃน ์ด๋ฆ์ผ๋ก ํ๋ ์ฝ๋ฉ๋์ด์ผ ํฉ๋๋ค.
2018๋
3์ 18์ผ ์ผ์์ผ ์ค์ 11:14, Isaac Egglestone <
[email protected]> ์ด:
Hrrm ์ง๊ธ๊น์ง ๋๋ delegate_to: 127.0.0.1์ ๋ํ ์์ ํ ์คํธ๋ฅผ ๋ง๋ค์์ต๋๋ค.
์ญ์ ์์ ์ ๋๋ ๊ท๋ชจ์ ๊ณ ํต์ด๊ธฐ๋ ํฉ๋๋ค.๋ด ํ๋ ์ด๋ถ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ํธ์คํธ: "{{ ๋ฐฐํฌ ๊ทธ๋ฃน }}"
์์ :
- ์ด๋ฆ: VM ๋ฐ ๋ชจ๋ ๊ด๋ จ ๋ฆฌ์์ค ์ ๊ฑฐ
azure_rm_virtualmachine:
resource_group: "{{ host_vars[ํญ๋ชฉ]['resource_group'] }}"
์ด๋ฆ: "{{ ์ธ๋ฒคํ ๋ฆฌ ํธ์คํธ ์ด๋ฆ }}"
์ํ: ๋ถ์ฌ๋๋ฆฌ์ธ ๋์: 127.0.0.1
๋ถํํ๋ ์ฌ์ ํ ํธ์คํธ์ ๋์ด๋ ์์คํ ์ ์ฐ๊ฒฐ์ ์๋ํฉ๋๋ค.
azure ์์ azure_rm_virtualmachine์ ์คํํฉ๋๋ค.
๋๋ ์ด๊ฒ์ ์ฌ๋ฐ๋ฅด๊ฒ ํ๊ณ ์๋๊ฐ? ๋ด๊ฐ ๋ญ๊ฐ๋ฅผ ๋์น๊ณ ์๋ ๊ฒ ๊ฐ์ง๋ง ์ด๊ฒ์ ์๋ํ์ต๋๋ค.
์ด์ ์๋ ์ฌ๋ฌ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ์ํํ ์ ์์ผ๋ฏ๋ก
์ด๊ฒ.์ด๊ฒ์ด ์ค์ ๋ก ์๋ํฉ๋๊น? ๋ฐ๋ผ๊ฑด๋ ์ด๊ฒ์ ๋จ์ง ๊ตฌ๋ฌธ ๋ฌธ์ ์ผ ๋ฟ์ ๋๋ค.
2018๋ 3์ 12์ผ ์์์ผ ์คํ 7์ 55๋ถ, Isaac Egglestone <
[email protected]> ์ด:Ansible์ ๋ค๋ฅธ ๋ง์ ๊ฒ๋ค์ ์ํ ๊ตฌ์ฑ ๊ด๋ฆฌ ๋๊ตฌ์ ๋๋ค.
์์ฒญ๋ ์์ ํด๋ผ์ฐ๋๋ฅผ ์ํ ์ค์ ๋ฐ ๊ฐ์ ๋คํธ์ํฌ ์ฅ์น
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฐ์ ์๋น์ค, elastic beanstalk, ๋๋ค์ ๊ฐ์ ์น ์๋น์ค
IAM ๋ณด์ ๊ตฌ์ฑ ์์์ ๊ฐ์ด ์ฌ๊ธฐ์ ์ ์ฉ๋๋ ๋ชจ๋ ๊ตฌ์ฑ ์์์
Ansible์ ์ฌ์ ํ โโ๋๋ถ๋ถ์ VM/ํธ์คํธ๋ฅผ ์คํํ๋ ๊ฒฝ์ฐ ํธ์คํธ์ ์ ํฉํฉ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก 2000๋ ๋ ์ด๋ฐ IT. ์ฌ๊ธฐ์์ ๋๊ตฐ๊ฐ๋ฅผ ๋ถ์พํ๊ฒํ์ง ์๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค.
VM ๋๋ ๋์ปค ์ปจํ ์ด๋๋ฅผ ์คํํ๋ ์ค์ํ ์ด์ ์ด์ง๋ง ๋ชจ๋
๋ ๊ฑฐ์ ์ด์ ์ ๋ค์ ์ค๊ธฐ. ์ค์ ๋ก ์ ์ ๋ ๋ง์ ํธ์คํธ๊ฐ
์๋ํ๋๋ ๊ฒ๋ณด๋ค ์ ์ด์ง๋๋ค. IMO ์ฐ๋ฆฌ๊ฐ ํํ์ ์ป์ง ๋ชปํ๋ค๋ฉด
with_items ์ฐ๋ฆฌ๋ ๊ฐ๋ฅํ ๋ชจ๋ ๊ฒ์ ํจ๊ป ํ๊ธฐํ ์๋ ์์ต๋๋ค.์ฌ๊ธฐ์์ ๊ธ์ ์ ์ผ๋ก ์๊ฐํ๊ณ ์ฌ์ฉํ๋ ค๊ณ ํฉ๋๋ค.
์ผ๋ถ ํด๋ผ์ฐ๋ ์๋น์ค์ ๊ฒฝ์ฐ delegate_to 200+์์ ์คํ์ ์๋ํ ์ ์ด ์์์ ์๋ฏธํฉ๋๋ค.
์ด๋ฐ ์์ผ๋ก ํ์ํ ํด๋ผ์ฐ๋ ๊ตฌ์ฑ ์์๋ ๋ชฉ๋ก์ ์ฟผ๋ฆฌํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
๊ฐ๋ฅํ ํธ์คํธ ํ์์ ํธ์คํธ ํ์ผ์ ๋คํ ํ ๋ค์ ์๋ํ์ญ์์ค.
delegate_to: localhost ์ฌ๊ธฐ์ ๊ฒฐ๊ณผ๋ฅผ ํผ๋๋ฐฑํ๊ฒ ์ต๋๋ค. ์์ ์๋ํ๋ ๊ฒฝ์ฐ
์ ์ด๋ ์ฐ๋ฆฌ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ํ ๋ฌธ์ ํ ๋ฆฌํ์คํธ๋ฅผ ํ ์ ์์ต๋๋ค.
์ด๋ฌํ ๋ฐฉ์์ผ๋ก with_item ๋ฃจํ ์ง๋ ฌ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ ๋ํ ๋งํฌ๊ฐ ์๋์ง ํ์ธํ ์ ์์ต๋๋ค.
ํด๋ผ์ฐ๋ ๋ชจ๋ ์น์ ๋ฐ docker ์น์ ์ ์์ต๋๋ค.2018๋ 3์ 12์ผ ์์์ผ, 18:49, Brian Coca [email protected]
์ผ๋ค:Ansible์ Hosts์ Tasks์๋ง ๊ด์ฌ์ด ์์ต๋๋ค.
'ํธ์คํธ'๋ฅผ ๊ตฌ์ถํ๊ณ ๊ฐ์๊ธฐ ๋ ํจ๋ฌ๋ค์์ ๋ชจ๋ ๋ง์ต๋๋ค.โ
๋น์ ์ด ๋๊ธ์ ๋ฌ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/ansible/ansible/issues/12086#issuecomment-372422169 ,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AJd59nhLIM3s3BL_xM_WwbJS6-uROzjSks5tdsNCgaJpZM4Fx8zF
.
์ข์ต๋๋ค. ์ฌ๋ฌ ๊ฐ์ง๋ฅผ ์๋ํ๊ธฐ ์ํด ์๋ ํ๋ ์ด๋ถ์ ์์ ํ์ต๋๋ค.
1st ๋๋ delegate_facts: True ์ค์ ์ ์๋ํ์ง๋ง ์ด๊ฒ์ด ๋์์ด ๋์์ง๋ง ๋ฌผ๋ก
๋ฌธ์๋ฅผ ๊ธฐ๋ฐ์ผ๋กํ๋๋ผ๋ ๋๋ ๊ทธ๊ฒ์ด ์ค์ ๋ก ์๋ ํ ๊ฒ์ด๋ผ๊ณ ๊ธฐ๋ํ์ง ์์์ต๋๋ค.
2nd gather_facts: no๋ฅผ ์ค์ ํ๊ณ ์ค์ ์ ์คํํ์ฌ ์ฌ์ค์ ์ค์ด๋ ค๊ณ ํ์ต๋๋ค.
์ ํ ์ฐ๊ฒฐ๋์ง ์๊ธฐ๋ฅผ ๋ฐ๋ผ๋ฉด์ ์๋ฌด๊ฒ๋ ๋ชจ์ผ์ง ๋ง
๋ฌผ๋ก ์์๋๋ก ์ฌ์ ํ ๊ธฐ๊ณ์ ์ฐ๊ฒฐ์ ์๋ํ์ต๋๋ค.
3๋ฒ์งธ ์ฐ๊ฒฐ ์ค์ ์๋: localhost ํ์ง๋ง ์ด์ํ๊ฒ๋ ์ฌ์ ํ
๊ธฐ๊ณ๊ฐ ์๊ณ ์์์๋ ๋ถ๊ตฌํ๊ณ ์ฌ์ค์ ์์งํ๊ธฐ ์ํด ๊ธฐ๊ณ์ ์๊ฒฉ์ผ๋ก ์ฐ๊ฒฐ
๋ก์ปฌ์์ ํ๋ ์ด๋ฅผ ์คํํ ๊ฒ์
๋๋ค. ์ฝ๊ฐ ์ฑ๊ฐ์์ง๋ง ๋ค์๊ณผ ๊ฐ์ ๋
ผ๋ฆฌ๋ฅผ ์ป์ต๋๋ค.
์ํํ์ง ์๊ณ ๋ฌธ์ ์ ํธ์คํธ์ ๋ํ ์ธ๋ถ ์ ๋ณด๋ฅผ ์ด๋ป๊ฒ ์ ์ ์์ต๋๊น?
์ด๊ฒ..
์๋ง๋ ํ๋ ์ด๋ถ์ ์ฌ์ฉํ์ฌ ๋จผ์ ๊ธฐ๊ณ๋ฅผ ์ผ ๋ค์
๊ทธ๋ค์๊ฒ ๊ฐ๋ฅํ ๋ก๊ทธ์ธํ๊ณ ๋ถํ์ํ ์ฌ์ค์ ์์งํฉ๋๋ค. ์ด๋ ๊ฒ ๋ ๊ฒ์
๋๋ค
host_vars๊ฐ ์๋ํ๋๋ก ํ ๋ค์ ์์คํ
์ ์ญ์ ํ ์ ์์ต๋๋ค. ์๊ณ ์ถ์ต๋๋ค
๋๊ตฌ๋ ์ง ์ฌ๊ธฐ์ ๋ ๋์ ์๋ฃจ์
์ด ์๋ค๋ฉด ์์ฒญ๋ ์๊ฐ์ด ์์๋ฉ๋๋ค.
100๊ฐ ์ด์์ ๊ธฐ๊ณ๊ฐ ์๊ณ ๊ทธ ๊ธฐ๊ณ์ ์ ์์ ๊ณต๊ธํด์ผ ํ ๋์ ๋
ธ๋ ฅ
๋ชจ๋ ์ญ์ ํ๊ธฐ ์ ๊น์ง๋ง ๊ฐ๋ฅํฉ๋๋ค.
์ง๊ธ๊น์ง with_items ๋ณ๋ ฌ ๋์ ์๋ฃจ์
์ผ๋ก ์ด๊ฒ์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
์๋ฃจ์
์ ์ ์ฌ๋ ฅ์ด ์์ง๋ง ๋ฌธ์ ์ ๊ธฐ๊ณ๋ ์ฌ์ ํ
azure_rm.py์์ ์ด๋ค ์ข
๋ฅ์ ์ฌ์ค์ด๋ผ๋ ํ์ํ ๊ฒฝ์ฐ ๋๋ฌํ ์ ์์ต๋๋ค.
์ด๋ ๊ฒ ํ๋ฉด ์ต์ํ ํ๋์ ์ฃผ์ ์ฌํญ์ด ์์ต๋๋ค. ๊ทธ๊ฒ์ ๋๊ตฐ๊ฐ๊ฐ ์์ง ์๋ ํ
ํ์ค์ ํตํด ์ ๋ฌ๋๋ azure์์ host_vars์ ์ก์ธ์คํ๋ ๋ฐฉ๋ฒ
์์งํ ๋: ์๋์
์ฌ์ค ๋๋ ์ด๊ฒ์ ์ฌ์ฉํ์ฌ ๋ชจ๋ ๊ฒ์ ์คํํ ๋ ๋ฌผ๋ก ๊ฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
with_items ๋ชฉ๋ก, ๊ทธ๋ฌ๋ ๋ด๊ฐ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ํด๋น ๋ฌธ์ ๋ฅผ ํผํ๊ณ ์ถ์์ต๋๋ค.
ํธ์คํธ๋ฅผ ๋ค์ ์ฌ์ฉํ ๊ฒ์
๋๋ค. ํด๊ฒฐ ๋ฐฉ๋ฒ์ azure_rm.py๋ฅผ
๋ช
๋ น์ค์์ json ํ์ผ์ ๊ฐ์ ธ์จ ๋ค์ ๋ณ์์ ๋ก๋ํ์ฌ ๊ฐ์ ธ์ค๊ธฐ
๋ค์ ์ก์ธ์คํ ์ ์์ต๋๋ค.
์๋ฐฑ ๋๋ ์์ฒ์ ์์ ํ๋ ์ต์ข
๋ชฉํ๊ฐ ์ฌ๊ธฐ์์ ๊ธฐ๋๋๋ค๋ฉด
๋ณ๋ ฌ๋ก ์๋ฒ๋ฆฌ์ค ๊ตฌ์ฑ ์์์
azure_rm_functionapp_facts์ ๊ฐ์ ๊ฒ์ ์ฌ์ฉํ์ญ์์ค.
http://docs.ansible.com/ansible/latest/azure_rm_functionapp_facts_module.html
์๊ฒ
๊ทธ๋ค์ ๋ํ ์ฌ์ค์ ์์งํ๊ณ ์ด๋ก ์ผ๋ก ์ฐ๊ทน์์ ์ฌ์ฉํ์ญ์์ค.
์์ง ํ
์คํธ๋์ง ์์์ต๋๋ค.
๋๋ ์ด๊ฒ์ ๋ง๋ค๊ธฐ ์ํด ์ด๊ฒ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ํํ๋ ๋ฐฉ๋ฒ์ ๋ํ ํ๋ฅญํ ๋
ผ๋ฆฌ๊ฐ ์์ง ์์ต๋๋ค.
๋ฐฉ๋ฒ์ด ์ง๊ธ๊น์ง ํฌ๊ฒ ๋ณด์ด๋ ๊ฒ์ฒ๋ผ ์ด์ ๋ํ ๋ฌธ์ ํ ์์ฒญ
๋น์ ์ดํ๋ ์ผ์ ๋ฐ๋ผ ๋ค๋ฅด๋ฉฐ ์ฌ์ฉ์ ์ ์ํ๊ณ ์ถ์ง ์์ต๋๋ค.
์ค๋ช
์์ json ๋คํ ํดํน.
์ด ๋ฌธ์ ์ ๋ํด ๊ด์ฌ์ ๊ฐ๊ณ ๊ณ์ ๋ถ์ ํผ๋๋ฐฑ์ ๊ธฐ๋ค๋ฆฌ๊ฒ ์ต๋๋ค.
์ด ๋ฌธ์ ๋ชฉ๋ก์ ๋ค์ ๋จ๊ณ๋ฅผ ๊ฒฐ์ ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๊ทธ๋์ ํดํน์ ์ด์ฉํด
๋ด ์ฆ๊ฐ์ ์ธ ์์
์ด ์๋ฃ๋์์ต๋๋ค.
2018๋
3์ 18์ผ ์ผ์์ผ ์คํ 12:04, Isaac Egglestone <
[email protected]> ์ด:
์ข์ต๋๋ค. ์ฌ์ค ์์ง์ ๋นํ์ฑํํ๋ฉด ์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ง๋ง
๋ ๋ค๋ฅธ ํ๋๋ host_vars๊ฐ ๋ ์ด์ azure ๋์ ์ธ๋ฒคํ ๋ฆฌ๋ฅผ ํฌํจํ์ง ์๋๋ค๋ ๊ฒ์ ๋๋ค.
ํ์ค์.๋ฐ๋ผ์ resource_group: "{{ host_vars[item]['resource_group'] }}"
์์์ ์๋ํ์ง ์์ผ๋ฉฐ ๋ฆฌ์์ค ๊ทธ๋ฃน์ ํ๋ ์ฝ๋ฉ๋์ด์ผ ํฉ๋๋ค.
์ด๋ฆ.2018๋ 3์ 18์ผ ์ผ์์ผ ์ค์ 11:14, Isaac Egglestone <
[email protected]> ์ด:Hrrm ์ง๊ธ๊น์ง ๋๋ delegate_to: 127.0.0.1์ ๋ํ ์์ ํ ์คํธ๋ฅผ ๋ง๋ค์์ต๋๋ค.
์ญ์ ์์ ์ ๋๋ ๊ท๋ชจ์ ๊ณ ํต์ด๊ธฐ๋ ํฉ๋๋ค.๋ด ํ๋ ์ด๋ถ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ํธ์คํธ: "{{ ๋ฐฐํฌ ๊ทธ๋ฃน }}"
์์ :
- ์ด๋ฆ: VM ๋ฐ ๋ชจ๋ ๊ด๋ จ ๋ฆฌ์์ค ์ ๊ฑฐ
azure_rm_virtualmachine:
resource_group: "{{ host_vars[ํญ๋ชฉ]['resource_group'] }}"
์ด๋ฆ: "{{ ์ธ๋ฒคํ ๋ฆฌ ํธ์คํธ ์ด๋ฆ }}"
์ํ: ๋ถ์ฌ๋๋ฆฌ์ธ ๋์: 127.0.0.1
๋ถํํ๋ ์ฌ์ ํ ํธ์คํธ์ ๋์ด๋ ์์คํ ์ ์ฐ๊ฒฐ์ ์๋ํฉ๋๋ค.
azure ์์ azure_rm_virtualmachine์ ์คํํฉ๋๋ค.
๋๋ ์ด๊ฒ์ ์ฌ๋ฐ๋ฅด๊ฒ ํ๊ณ ์๋๊ฐ? ๋ด๊ฐ ๋ญ๊ฐ๋ฅผ ๋์น๊ณ ์๋ ๊ฒ ๊ฐ์ง๋ง ์๋ํ์ต๋๋ค.
์ด๊ฒ์ ์ด์ ์ ์ฌ๋ฌ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ์ด๋ฃจ์ด์ก๊ธฐ ๋๋ฌธ์
์ด ์์ ์ ์ํ.์ด๊ฒ์ด ์ค์ ๋ก ์๋ํฉ๋๊น? ๋ฐ๋ผ๊ฑด๋ ์ด๊ฒ์ ๋จ์ง ๊ตฌ๋ฌธ ๋ฌธ์ ์ผ ๋ฟ์ ๋๋ค.
2018๋ 3์ 12์ผ ์์์ผ ์คํ 7์ 55๋ถ, Isaac Egglestone <
[email protected]> ์ด:Ansible์ ๋ค๋ฅธ ๋ง์ ๊ฒ๋ค์ ์ํ ๊ตฌ์ฑ ๊ด๋ฆฌ ๋๊ตฌ์ ๋๋ค.
์์ฒญ๋ ์์ ํด๋ผ์ฐ๋๋ฅผ ์ํ ์ค์ ๋ฐ ๊ฐ์ ๋คํธ์ํฌ ์ฅ์น
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฐ์ ์๋น์ค, elastic beanstalk, ๋๋ค์ ๊ฐ์ ์น ์๋น์ค
IAM ๋ณด์ ๊ตฌ์ฑ ์์์ ๊ฐ์ด ์ฌ๊ธฐ์ ์ ์ฉ๋๋ ๋ชจ๋ ๊ตฌ์ฑ ์์์
Ansible์ ์ฌ์ ํ โโ๋๋ถ๋ถ์ VM/ํธ์คํธ๋ฅผ ์คํํ๋ ๊ฒฝ์ฐ ํธ์คํธ์ ์ ํฉํฉ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก 2000๋ ๋ ์ด๋ฐ IT. ์ฌ๊ธฐ์์ ๋๊ตฐ๊ฐ๋ฅผ ๋ถ์พํ๊ฒํ์ง ์๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค.
VM ๋๋ ๋์ปค ์ปจํ ์ด๋๋ฅผ ์คํํ๋ ์ค์ํ ์ด์ ์ด์ง๋ง ๋ชจ๋
๋ ๊ฑฐ์ ์ด์ ์ ๋ค์ ์ค๊ธฐ. ์ค์ ๋ก ์ ์ ๋ ๋ง์ ํธ์คํธ๊ฐ
์๋ํ๋๋ ๊ฒ๋ณด๋ค ์ ์ด์ง๋๋ค. IMO ์ฐ๋ฆฌ๊ฐ ํํ์ ์ป์ง ๋ชปํ๋ค๋ฉด
with_items ์ฐ๋ฆฌ๋ ๊ฐ๋ฅํ ๋ชจ๋ ๊ฒ์ ํจ๊ป ํ๊ธฐํ ์๋ ์์ต๋๋ค.์ฌ๊ธฐ์์ ๊ธ์ ์ ์ผ๋ก ์๊ฐํ๊ณ ์ฌ์ฉํ๋ ค๊ณ ํฉ๋๋ค.
์ผ๋ถ ํด๋ผ์ฐ๋ ์๋น์ค์ ๊ฒฝ์ฐ delegate_to 200+์์ ์คํ์ ์๋ํ ์ ์ด ์์์ ์๋ฏธํฉ๋๋ค.
์ด๋ฐ ์์ผ๋ก ํ์ํ ํด๋ผ์ฐ๋ ๊ตฌ์ฑ ์์๋ ๋ชฉ๋ก์ ์ฟผ๋ฆฌํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
๊ฐ๋ฅํ ํธ์คํธ ํ์์ ํธ์คํธ ํ์ผ์ ๋คํ ํ ๋ค์ ์๋ํ์ญ์์ค.
delegate_to: localhost ์ฌ๊ธฐ์ ๊ฒฐ๊ณผ๋ฅผ ํผ๋๋ฐฑํ๊ฒ ์ต๋๋ค. ์์ ์๋ํ๋ ๊ฒฝ์ฐ
์ ์ด๋ ์ฐ๋ฆฌ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ํ ๋ฌธ์ ํ ๋ฆฌํ์คํธ๋ฅผ ํ ์ ์์ต๋๋ค.
์ด๋ฌํ ๋ฐฉ์์ผ๋ก with_item ๋ฃจํ ์ง๋ ฌ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ ๋ํ ๋งํฌ๊ฐ ์๋์ง ํ์ธํ ์ ์์ต๋๋ค.
ํด๋ผ์ฐ๋ ๋ชจ๋ ์น์ ๋ฐ docker ์น์ ์ ์์ต๋๋ค.2018๋ 3์ 12์ผ ์์์ผ, 18:49, Brian Coca [email protected]
์ผ๋ค:Ansible์ Hosts์ Tasks์๋ง ๊ด์ฌ์ด ์์ต๋๋ค.
'ํธ์คํธ'๋ฅผ ๊ตฌ์ถํ๊ณ ๊ฐ์๊ธฐ ๋ ํจ๋ฌ๋ค์์ ๋ชจ๋ ๋ง์ต๋๋ค.โ
๋น์ ์ด ๋๊ธ์ ๋ฌ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/ansible/ansible/issues/12086#issuecomment-372422169 ,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AJd59nhLIM3s3BL_xM_WwbJS6-uROzjSks5tdsNCgaJpZM4Fx8zF
.
ํฌํฌ์ ๋ํ ์ฌ์ฉ ์ฌ๋ก๋ ์์ผ๋ฏ๋ก ์ด๋ฅผ ํจ์ฌ ์ฝ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค. ํ๋ ์ด๋ถ์ ๋ฌด์์๋ก ์ ํ๋ ๋ถ๋ IP๊ฐ ์๋ ํ ๋ผํผ์ ํตํด ์ฌ๋ฌ ๊ฐ์ openstack ์ธ์คํด์ค๋ฅผ ๋ฐฐํฌํ๊ณ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ip๋ฅผ ๋ฐ๋ณตํ์ฌ ์์ฑ๋ ๊ฐ ํธ์คํธ์์ ํฌํธ 22๊ฐ ์ด๋ ค ์๋์ง ํ์ธํฉ๋๋ค. ์ด๋ฅผ ์ํํ๋ ํ์ฌ ๋ฐฉ๋ฒ์ ๋ฉํฐํ๋ ์ด ํ๋ ์ด๋ถ์ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค.
- hosts: localhost
connection: local
gather_facts: no
tasks:
...
- name: Run terraform
terraform:
plan_file: '{{tf_plan | default(omit)}}'
project_path: '{{terraform_path}}/{{infra}}'
state: '{{state}}'
state_file: '{{stat_tfstate.stat.exists | ternary(stat_tfstate.stat.path, omit)}}'
variables: '{{terraform_vars | default(omit)}}'
register: tf_output
- name: Add new hosts
with_items: '{{tf_output.outputs.ip.value}}' # configued this in terraform to output a list of assigned ips.
add_host:
name: '{{item}}'
groups: new_hosts
- hosts: new_hosts
gather_facts: no
connection: local
tasks:
- name: Wait for port 22 to become available
wait_for:
host: '{{ansible_host}}'
port: 22
state: started
timeout: 60
์ด๊ฒ์ ansible-playbook -i localhost, deploy-test-clients.yml --extra-vars="infra=terraform_os_instances state=present"
๋ก ์คํ๋ฉ๋๋ค.
๋ฌผ๋ก ์ด๊ฒ์ ์์
ํ ์ ์๋ ๊น๋ํ๊ฒ ์ธ๋ฒคํ ๋ฆฌ ๊ตฌ๋ฌธ ๋ถ์ ๊ฐ๋ฅํ IP ๋ชฉ๋ก์ด ํญ์ ์๋ ๊ฒ์ ์๋๊ธฐ ๋๋ฌธ์ ์ ํ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์
๋๋ค.
๋ง์ ์ฌ๋๋ค์ด ๋ก์ปฌ์์ ํ์ผ์ ํ ํ๋ฆฟํ๋ ๋ฐ ์ด๋ ค์์ ๊ฒช๊ณ ์๋ ๊ฒ ๊ฐ๊ธฐ ๋๋ฌธ์ ์ด ํน์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ํน์ template_local ๋ชจ๋์ ๋์ ์์ฑํ ์ ์์ต๋๋ค. ์ ์ด๋ ์์์ ๋ ํ ๋ฐ... ์ง์ ๊ฐ๋ณผ ์๋ ์๊ฒ ์ง๋ง ๊ฐ๊น์ด ์ฅ๋์ ์๊ฐ์ด ์์ ๊ฒ์ ๋๋ค.
jinja๋ก 5์ด ์์ ํ ์ ์๋ 100๊ฐ์ ํ์ผ์ ํ ํ๋ฆฟํํ๋ ๋ฐ 30๋ถ ์ด์์ ์ฐ์ค๊ฝ์ค๋ฝ์ต๋๋ค.
@saplla ํ ํ๋ฆฟ์ ํญ์ ๋ก์ปฌ์์ ๋ฐ์ํ๋ฉฐ ์๊ฒฉ์ผ๋ก ๋ฐ์ํ๋ ์ ์ผํ ์์ ์ ํ ํ๋ฆฟ์ ๋ณต์ฌํ๊ณ ๊ถํ์ ์ค์ ํ๋ ๊ฒ์ ๋๋ค.
๋ช ํํ ํ๊ธฐ ์ํด, ์๋ฅผ ๋ค์ด ๋ค๋ฅธ ๋น๋ ์์คํ ์ ํผ๋ํ๊ฑฐ๋ ์ ๊ฒฝ์ฐ์๋ kubectl์ ์ฌ์ฉํ์ฌ k8s ๋ฆฌ์์ค๋ฅผ ๋ฐฐํฌํ๊ธฐ ์ํด ๋ก์ปฌ ์์ ์ผ๋ก ํ ํ๋ฆฟ ํ์ผ์ ์ํ๋ ์ฌ์ฉ์์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์ต๋๋ค.
๋ด ๋ง์ ๋จ์ํ ๋ํผ์ธ ๋ชจ๋์ ํตํด ๋ฃจํ๊ณผ ํ
ํ๋ฆฟ์ jinja๋ก ์คํ๋ก๋ํ๋ ๊ฒ์
๋๋ค. ๋ชจ๋์ ์ปจํ
์คํธ์ ๋ฃจํ ์ ์(์ผ๋ฐ์ ์ผ๋ก with_nested
๋ฐ ์น๊ตฌ์ ๋ฃ๋ ๊ฒ)๋ฅผ ์ทจํ๊ณ ์ด ์์
์ ์ํด ์์ ํ ์๋ผ๋ผ ์ ์์ต๋๋ค(์๋ง๋ ๋ํผ๊ฐ ์๋๋ฅผ ๋์ด๋ฉด jinja๋ฅผ ๋ณ๋ ฌ๋ก ์คํํ ์ ์์) .
๋ค์๊ณผ ๊ฐ์ด ํธ์ถํ ์ ์์ต๋๋ค.
template_parallel:
src: "{{ item[0] }}"
dest: "{{ tempdir }}/{{ item[1] }}-{{ item[0] | basename }}"
context: "{{ hostvars[inventory_hostname] }}"
nested:
- "{{ templates.stdout_lines }}"
- "{{ namespaces.stdout_lines }}"
์์ ์๋ ansible์ ์ํด ์ ์๋ ๋ชจ๋ ๋ณ์๋ฅผ ์ปจํ ์คํธ๋ก ์ฌ์ฉํ์ง๋ง ์ด๋ค dict๋ ์ ๋ฌํ ์ ์์ต๋๋ค.
๋ด๊ฐ ๋งํ๋ฏ์ด ์ง๊ธ์ ์ด ์์ ์ ํ ์๊ฐ์ด ์์ง๋ง ์ ๊ทผ ๋ฐฉ์์ด @bcoca ์์ ์คํ ๊ฐ๋ฅํ ๊ฒ์ฒ๋ผ ๋ค๋ฆฝ๋๊น?
์ด๋ ๊ฐ ํญ๋ชฉ์ด ๋ ๋ฆฝ์ ์ด๋ผ๊ณ ๊ฐ์ ํฉ๋๋ค. ํญ์ ๊ทธ๋ฐ ๊ฒ์ ์๋๋๋ค. ํ์ฌ ํญ๋ชฉ ๊ฐ์ ์ด์ ํญ๋ชฉ ๋ฐ/๋๋ ์ด์ ๋ฐ๋ณต์ ๊ฒฐ๊ณผ์ ์์กดํ๋๋ก ๋ง๋ค๊ฑฐ๋ ๋จ์ํ ๋์ ๋ ์ ์์ต๋๋ค.
ํ ํ๋ฆฟ์ ์์๋๋ ๋๋ถ๋ถ์ ์๊ฐ์ ํ ํ๋ฆฟ ์์ฒด๊ฐ ์๋๋ผ ๋ณ์์ ๊ด๋ จ์ด ์์ต๋๋ค. ์ผ๊ด์ฑ์ด ํ์ํ๊ธฐ ๋๋ฌธ์ ํ์ฌ ๊ฐ์ ์ ๊นจ๋ ๋์์ ๊ธฐ๊บผ์ด ๋ณ๊ฒฝํ์ง ์๋ ํ ๋ณ๋ ฌ ์ฒ๋ฆฌ์์ ๋ง์ ์ด์ ์ ์ป์ง ๋ชปํ ๊ฒ์ ๋๋ค.
๋ํ ํ ํ๋ฆฟ์ ํญ๋ชฉ๋ณ๋ก๊ฐ ์๋๋ผ ํธ์คํธ๋ณ๋ก ์ด๋ฏธ ๋ณ๋ ฌ์ ๋๋ค.
๋ค, ์๊ฐํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ค์ ๋ก ๋ด ์ฌ์ฉ ์ฌ๋ก์ ์ถฉ๋ถํ ๊ฒ์ด๊ณ ์ด ์ค๋ ๋์ ๋ค๋ฅธ ์ฌ๋๋ค์๊ฒ๋ ๋ง์ฐฌ๊ฐ์ง์ผ ๊ฒ์ ๋๋ค. ์ ๋ ๊ณ์ธต์ ๊ตฌ์ฑ๊ณผ ํ ํ๋ฆฟ ํ์ผ์ ๋ฐฐํฌํ๋ ๋ฐ์ด๋๋ฆฌ(kubectl, helm ๋ฑ)๋ฅผ ํธ์ถํ๊ธฐ ์ ์ ๋ก์ปฌ๋ก ansible์ ์ฌ์ฉํ์ฌ ๋ก๋ํ๊ณ ์์ต๋๋ค. ์ฑ๋ฅ์ด ๋๋ฌด ์ข์์ ํ ํ๋ฆฟ ์๊ฐ์ ๋ช ๋ถ์์ ๋ช ์ด๋ก ์ค์ธ๋ค๋ฉด ์์ฃผ ๊ฐ๋จํ๊ณ ๊ฐ๋ฒผ์ด ํ ํ๋ฆฟ ๋ชจ๋์ ๋ง์กฑํ ๊ฒ์ ๋๋ค.
๋๊ตฐ๊ฐ๊ฐ ๋๋ฅผ ๋๋ฆฌ์ง ์๋ ํ ์ด๊ฒ์ด ์ฐ๋ฆฌ์๊ฒ ๋ฌธ์ ๊ฐ ๋ ๋ ์ด๊ฒ์ ๋ณด๋ ค๊ณ ๋ ธ๋ ฅํ ๊ฒ์ ๋๋ค.
๋๋ ์๋ #10695๋ฅผ ์ ์ถํ์ง๋ง ์ด๊ฒ์ด ํจ๊ป ํ๋ ๋ฐ ์๊ฐ์ด ๊ฑธ๋ฆด ๊ฒ์ด๋ผ๋ ๊ฒ์ ์๊ณ ์ ์คํฌ๋ฆฝํธ๋ก ์ด๋ฌํ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ํด๊ฒฐํ๊ฒ ๋์์ต๋๋ค(์: ๋จ์ผ ํธ์คํธ์์ 50๊ฐ์ Git ์ ์ฅ์์์ ๋ญ๊ฐ๋ฅผ ํด์ผ ํ๋ค๊ณ ๋งํ๋ฉด, ์ ๋ Ansible์ ์ฌ์ฉํฉ๋๋ค. 50๋ฒ ์ํํ๋ ๋จ์ผ ์คํฌ๋ฆฝํธ๋ฅผ ํ ๋ฒ ์คํ). ๋ถํํ๋ ์ด๊ฒ์ ๋งค์ฐ ์ธ๋ถํ๋ ๋ณ๊ฒฝ ๋ณด๊ณ ์ ๊ฐ์ด Ansible์์ ๋ฌด๋ฃ๋ก ์ป์ ์ ์๋ ์ผ๋ถ ํญ๋ชฉ์ ํฌ๊ธฐํ๊ณ ๋ชจ๋ "๋ง์ฝ ์คํ๋๋ ๊ฒฝ์ฐ์๋ง ์คํ" ๋ ผ๋ฆฌ๋ฅผ ์ง์ ๊ตฌํํ๊ณ ์ค๋ฅ ์ฒ๋ฆฌ์ ๋ํด ๋งค์ฐ ์ฃผ์ํด์ผ ํจ์ ์๋ฏธํฉ๋๋ค. ์๋ง๋ 2๋ฐฐ ๋ ๋น ๋ฅผ ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ ๋์ค์ "๋ณ๋ ฌ" ์ต์ ์ ์ป๊ฒ ๋๋๋ผ๋ ๋ด ์ฌ์ฉ์ ์ง์ ์คํฌ๋ฆฝํธ๋งํผ ๋น ๋ฅด์ง ์์ ์ ์์ผ๋ฉฐ ์๋ง๋ ์ด ์ต์ ์ผ๋ก ์ ํํ๋ ๋ฐ ์ ๊ฒฝ์ ์ฐ์ง ์์ ๊ฒ์ ๋๋ค.
@wincent Ansible์ '์ก์ ์ ์ฉ' ์ด์์ ๊ธฐ๋ฅ์ ์ํํ๋ฏ๋ก ๋ณ๋ ฌ ๋ฃจํ๋ ์ฌ์ ํ ์ ์คํฌ๋ฆฝํธ/์ ์ฉ ํ๋ก๊ทธ๋จ๋ณด๋ค ํญ์ ๋๋ฆด ๊ฒ์ ๋๋ค.
@bcoca : ๋ค, ์ ์ดํด๋ฅผ ํ์ธ์์ผ์ค๋๋ค.
@saplla k8s_raw๊ฐ ํ
ํ๋ฆฟ์ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค ๋ซ์ต๋๋ค. ํ์ํ ๊ฒฝ์ฐ ์ธ๋ฒคํ ๋ฆฌ์ yaml์ ์ธ๋ผ์ธํ ์ ์์ต๋๋ค. :) (์ด PR์ ์ฃผ์ ๊ฐ ์๋)
์ด๊ฒ์ ๋ํ ํ์ฌ ์ํ๋ ๋ฌด์์
๋๊น? 2.6 @bcoca ์์ ๋ญ๊ฐ๋ฅผ ๊ธฐ๋ํ ์ ์์ต๋๊น?
๋ด DB ํด๋ฌ์คํฐ์์ ์์ฒ ๊ฐ์ postgresql ๊ถํ์ ๊ด๋ฆฌํ๊ณ ์์ผ๋ฉฐ 25๋ถ์ด ๋งค์ฐ ๋๋ฆฝ๋๋ค.
@nerzhul ๊ฐ์ฌํ์ง๋ง ์ฐ๋ฆฌ์๊ฒ๋ ๋ ์ข์ง ์์ต๋๋ค. ๋๋ฌด ๋ง์ ๋ง๋ฒ. ํ ํ๋ฆฟ์ด ํ์ํฉ๋๋ค.
@sapila ํ ํ๋ฆฟ๋น ํธ์คํธ ๋์์ ํญ์ ์์ฑํ์ฌ ํ ํ๋ฆฟ์ ์ต๋ํ ๋ณ๋ ฌํํ ๋ค์ ํ์ ์ฌ์ ๋๋ ์์์ ์ฌ์ฉํ์ฌ ์ ์ ํ ์ค์ ํธ์คํธ์ ์ ๋ฌํ ์ ์์ต๋๋ค.
@bcoca ์กฐ๊ธ ํดํค :)
์ ํ, ๋ง์ ํดํน์ด ์๋์ง๋ง ์ค๋ ์๋ํฉ๋๋ค.
https://github.com/ansible/proposals/issues/140 ์ ์ฐฌ์ฑํ์ฌ ๋ง๊ฐ
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
+1 ํฌํฌ
100๊ฐ ์ด์์ ํญ๋ชฉ์์
with_
๋ฃจํ๋ฅผ ๋ฐ๋ณตํ๋ openstack ๋ชจ๋์ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค...