dynamic inventory
Last updated
Last updated
ansible์์๋ ์ธ๋ฒคํ ๋ฆฌ๋ฅผ ๋๋น๋ api๋ฑ์์ ๋ฐ์์ฌ์ ์๋ ๊ธฐ๋ฅ์ ์ง์ํฉ๋๋ค.
์ธ๋ฒคํ ๋ฆฌ ํ๋ฌ๊ทธ์ธ ๋ฆฌ์คํธ๋ฅผ ๋ณด์ค์ ์์ต๋๋ค.
์ฌ๊ธฐ์ ์ฐ๋ฆฌ๋ ์คํฌ๋ฆฝํธ ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ ๊ฒ์ ๋๋ค.
์ด๋ค ์คํฌ๋ฆฝํธ๋ ์คํ๋ง ๊ฐ๋ฅํ๊ณ json์ผ๋ก inventory๋ฅผ ์ถ๋ ฅํ๋ฉด ๋ฉ๋๋ค. (php, python, ruby, bash, perl, go, powershell, etc)
์ ๋ go๋ฅผ ์ฌ์ฉํ์ฌ ๋ง๋ค์ด ๋ณด์์ต๋๋ค.
๊ธฐ์กด์ ์๋ cli์ ์ ๊ธฐ๋ฅ๋ง ์ถ๊ฐํ์ฌ ๋ง๋ค์์ต๋๋ค. https://teamsmiley.gitbook.io/devops/go-lang/create-cli
cli ์ต์ ์ถ๊ฐ
binary์์ ๋๊ฐ์ ์ต์
์ ์ง์์ ํ์ฌ์ผ ํฉ๋๋ค. --list
์ --host
์
๋๋ค.
--list
๋ ์ธ๋ฒคํ ๋ฆฌ๋ฅผ ์ถ๋ ฅํ๊ณ --host
๋ ํน์ ํธ์คํธ์ ์ ๋ณด๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
์ด์ ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ฉด server.GetAnsible(name)
๋ฅผ ์คํํฉ๋๋ค.
restapi๋ฅผ ํธ์ถํ์ฌ json์ ๋ฐ์์ค๋ฉด ๋ฉ๋๋ค.
์ด์ cli๋ ์ค๋น๊ฐ ๋ฌ์ผ๋ rest api๋ฅผ ํตํด์ ๋๋น์์ ๊ฐ์ ธ์๋ณด์.
๊ธํ๊ฒ ์ง ์ฝ๋๋ผ ๋์ถฉ ๋๊ฒ๋ง ํ๋ค.
์ด๋ ๊ฒ ์์ฒญ์ ๋ฐ์ผ๋ฉด ์ ์ฝ๋์ฒ๋ผํด์ json์ ๋๊ฒจ์ฃผ๋ฉด๋๋ค.
jsonํํ๊ฐ ์ค์ํ๋ค. ์๋ชปํ๋ฉด ๋์์ด ๋์ง ์์๋ค.
์ ํํ "\""
์ผ๋ก ํด์ผํ๋ค. "'"
๋ก ํ๋ฉด ์๋๋ค.
์ผ๋จ ๊ธํ๊ฒ ์ ๋ฆฌํ๊ฑฐ๋ ์ฌ๊ธฐ๊น์ง
dynamic inventory๋ฅผ ๋ง๋ค์ด์ db์์ ๊ฐ์ ์ฝ์ด์์ ์ฌ์ฉํ๋ฉด ์ด์ ๋ถํฐ๋ ๋๋น์ ํธ์คํธ ์ ๋ณด๋ง ์ ์ ์ด๋๋ฉด ์ธ์ ๋ ์ ๋ฐ์ดํธ๊ฐ ๋๊ณ ๋ชจ๋ ์ฌ๋๋ค์ด ์ฌ์ฉํ ์ ์๋ค.
json.Append("{\"_meta\": {\"hostvars\":{}},");
์ด๋ถ๋ถ์ ๋ค์์ฒ๋ผ ๋ง๋ค์ด์ฃผ๋ ๋ถ๋ถ์ธ๋ฐ ์ด๋ถ๋ถ์ด ์์ผ๋ฉด ansible์ด ๋ชจ๋ ํธ์คํธ์ ๋ํด์ --host
๋ฅผ ํธ์ถํ๋ค. ๋ง๋๊ฒฝ์ฐ ์ด๋ ๊ฒ ํ๋ฉด ์์ฒญ ์ค๋๊ฑธ๋ฆฐ๋ค. ๊ทธ๋์ ์ด๋ ๊ฒ ํ๋ฉด ์๋๋ค.
c#์์ ํด๋์ค๋ฅผ ๋ง๋ค์ด์ ๊ทธ๊ฑธ json์ผ๋ก ๋ณ๊ฒฝ์ํ ์ด์ ๋ ์ผ๋จ ์ด๊ฒ ํธํ๊ธฐ ๋๋ฌธ์ด๊ธฐ๋ ์์ง๋ง ansible inventory json์ด ์ข ์ด์ํด์ ๊ทธ๋ฃน์ด๋ฆ์ json์ key๋ก ์ฌ์ฉํ๋๊ฒฝ์ฐ๊ฐ ์๋๋ฐ ์ด๋ ๊ฒ ๋๋ฉด ํด๋์ค์ ๋ณ์๋ช ์ ๋ฐ๊ฟ์ผํ๋ค. ๊ทธ๋ฐ๋ฐ ์ด ๊ทธ๋ฃน์ด๋ฆ์ด ๋์ ์ด๋ผ. ํด๋์ค ์ด๋ฆ์ ๋์ ์ผ๋ก ์ง์ ํ ์๊ฐ ์์ด์ ์ผ๋จ ์คํธ๋ง์ผ๋ก ์ผ๋จ ๋๊ฒ๋ง ํ๋ค. ์ด๋ฐ์์ ๊ทธ๋ฃน๋ค์์ ๋ณ์์ด๋ฆ์ผ๋ก ์ฌ์ฉํ ์๊ฐ ์๋ค. ๊ทธ๋ฃน์ด๋ฆ์ด ๋ณ๊ฒฝ๋ ๋๋ง๋ค ํด๋์ค๊ฐ ๋ฐ๋์ด์ผํ๋ฏ๋ก ํด๋์ค๋ฅผ ์ฌ์ฉํ์ง์๊ณ ๊ทธ๋ฅ string์ผ๋ก ๋ง๋ค์๋ค.
children์์๋ ๊ผญ ๊ทธ๋ฃน๋ง ๋์์ผํ๋ค. ๊ทธ๋ฃน์ด ์๋ ํธ์คํธ๊ฐ ๋์ค๋ฉด ์๋๋ค.. ๊ธฐ๋ณธ์ ์ผ๋ก ๋ค์ ํํ์ฌ์ผํ๋ค. all -> ๊ทธ๋ฃน๋ค์ด ๋ค ๋์ค๊ณ -> ๊ทธ๋ฃน๋ค์ ์๋์์ ๋ค์ ์ ์ํํ -> hosts๋ฅผ ์ฌ์ฉํด์ ๋ชจ๋ host๋ฅผ ๋ฃ์ด์ค๋ค. all -> children -> ๊ทธ๋ฃน -> hosts๋ฅผ ๋ฐ๋ก ์ฌ์ฉํ๋ฉด ์๋๋ค. ์ ๊ทธ๋ฐ์ง ๋ชจ๋ฅด๊ฒ๋ค.