CloudStack API - cra16/overcast GitHub Wiki
์ด ๋ฌธ์๋ ์ค๋๋ ๋ด์ฉ์ ๋ค๋ฃจ๊ณ ์์ต๋๋ค. ์ต์ ๋ด์ฉ์ผ๋ก ๊ฐฑ์ ํ ์์ ์ ๋๋ค.
์ด ๋ฌธ์๋ 2012๋ ๋น์์ CloudStack ์ค์น ๋ฐฉ๋ฒ์ ๋ค๋ฃจ๊ณ ์์ต๋๋ค. ์ค์ต์ ํ์ฉํ๊ธฐ์๋ ๋ฌด๋ฆฌ๊ฐ ์์ผ๋ ์ค์น ํ๋ฆ์ ๋ฐฐ์ฐ๋ ๋จ์ ์ฐธ๊ณ ์ฉ์ผ๋ก ์ฌ์ฉํด์ฃผ์๊ธฐ ๋ฐ๋๋๋ค.
CloudStack์ ๋ชจ๋ ๊ธฐ๋ฅ์ web api๋ก ์ ๊ณตํ๋ค. CloudStack web ui๋ฅผ ์ด์ฉํด๋ ๋๋ถ๋ถ์ ํ์ํ ์์ ์ ํ ์ ์์ง๋ง ๋ชจ๋ ๊ธฐ๋ฅ์ web ui๋ก ์ ๊ณตํ์ง๋ ์๋๋ค. ๋ํ ๊ณ ๊ธ ์์ฉ์ ์ํด์๋ web api์ ์ฌ์ฉ์ด ํ์์ ์ด๊ธฐ๋ ํ๋ค.
๊ด๋ฆฌ์๋ ๊ธฐ๋ณธ์ผ๋ก ์ ๊ณต๋๋ web UI๋ฅผ ํตํด์ ์ ์ดํ๋ฉด ๋์ง๋ง, ์ผ๋ฐ ์ฌ์ฉ์๋ฅผ ์ํ UI๋ API ํต์ ์ผ๋ก ์ ๊ณต๋๋ค.
3.0์ ๊ธฐ์ค์ผ๋ก ํ๋ค. ๊ธฐ๋ณธ web api ํฌํธ๋ฒํธ๋ 8086์ด๋ฉฐ, ์ฌ์ฉ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค. vm์ ๋ง๋ค๊ธฐ ์ํ api ํธ์ถ์ด๋ค.
# wget http://mycloudstack.com:8086/?command=deployVirtualMachine&serviceofferingid=1\
&templateid=3&zoneid=1&account=admin&diskofferingid=5
- command : api ๋ช ๋ น. deployVirtualMachine๋ vm์ ์์ฑํ๋ผ๋ ์๋ฏธ๋ค.
- serviceofferingid :
- templateid : vm ์์ฑ์ ์ํด ์ฌ์ฉํ ์ด์์ฒด์ ํ ํ๋ฆฟ์ id
- zoneid : vm์ ์์ฑํ zone์ id
- account : vm์ ์์ ํ account
- diskofferingid : vm์ ์์ฑํ ๋์คํฌ ํํ. (ํฌ๊ธฐ, shared / dedicate ๋ฐฉ์ ๋ฑ...)
์์ฒญ ๊ฒฐ๊ณผ๋ JSON ํํ๋ก ๋ฐํํ๋ค.
์ฉ์ด ์ ๋ฆฌ
cloudstack api์ ๋์ค๋ ์ฉ์ด๋ค์ ์ ๋ฆฌํ๋ค. ์ฃผ๋ก ๋งค๊ฐ๋ณ์๋ค์ด๋ค.
-
VirtualMachine ๊ฐ์ ๋จธ์ ํน์ VM์ด๋ผ๊ณ ๋ ํ๋ค.
-
virtualmachineid ๋ง๋ค์ด์ง vm์ ์ผ๋ จ๋ฒํธ
-
service offering VM์ ๋ง๋ค๋ ์ฌ์ฉํ VMํน์ง๋ค์ด๋ค. hypvervisor ํ์ , cpu ์๋์ ๊ฐฏ์, memory ํฌ๊ธฐ, root volume ํฌ๊ธฐ, root disk tag๋ฑ์ด ์ ์๋ผ์๋ค. ํ๋ ์ด์์ service offering์ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, VM์ ์ฉ๋์ ๋ฐ๋ผ์ ์ ํํ๋ฉด ๋๋ค. ํ์์ ๋ฐ๋ผ service offering๋ฅผ ๋ง๋ค ์ ์๋ค.
-
serviceofferingid ๋ง๋ค์ด์ง service offering์ id๋ก API ํธ์ถ์ ์ฌ์ฉํ๋ค.
-
account cloudstack ๊ณ์ .
-
domain account๋ฅผ ๋ฌถ๋ ์์ ์นดํ ๊ณ ๋ฆฌ. ํ๋์ domain์ ์ฌ๋ฌ ๊ฐ์ account๋ฅผ ๊ฐ์ง ์ ์๋ค. domain > account > user ์ 3 ๊ณ์ธต์ ๊ฐ์ง๋ค. domain์ ์๋น์ค ํ๋ก๋ฐ์ด๋, account๋ ์๋น์ค๋ฅผ ๋ฐ๋ ๊ณ์ , user์ account์ ํฌํจ๋ ์ฌ์ฉ์ ๊ณ๋ ์ด๋ค.
-
host
cloudstack๊ฐ ๊ด๋ฆฌํ๋ cnode(computing node)๋ก hypervisor๊ฐ ์ฌ๋ผ๊ฐ ์๋ฒ๋ค. bear metal host๋ ๊ด๋ฆฌํ ์ ์๋ค.
-
hostid API ํธ์ถ์ ์ฌ์ฉํ๋ ํธ์คํธ์ ์ผ๋ จ ๋ฒํธ
-
securitygroup basic network mode์์ vm๊ฐ isolation์ ์ํด์ ์ฌ์ฉํ๋ ํด์ด๋ค. iptable, arptable๋ฅผ ์ด์ฉ ํจํท์ ํํฐ๋งํ๋ ๋ฐฉ์์ผ๋ก ์ด๋ฃจ์ด์ง๋ค. vm์ ํ๋ ์ด์์ securitygroup๋ฅผ ๊ฐ์ง๋ค. 2.2๊น์ง๋ ์ ๋ ฅ ํจํท์ ๋ํ ํํฐ๋ง๋ง ๊ฐ๋ฅํ์ผ๋ 3.0 ๋ถํฐ๋ ์ ์ถ๋ ฅ ํจํท ๋ชจ๋ ํํฐ๋ง์ด ๊ฐ๋ฅํ๋ค.
-
disk offering VM์ด ์ฌ์ฉํ disk ๋ช ์ธ๋ก, VM์ ์ ํํ ๋ ๋ฐ๋์ ํ๋์ disk offering์ ์ ํํ๋ค. ๋์คํฌ์ ํฌ๊ธฐ, disk tag๋ฑ์ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
-
diskofferingid API ํธ์ถ์ ์ฌ์ฉํ๋ disk offering์ ์ผ๋ จ ๋ฒํธ
-
zone cloudstack๋ cloud ์ธํ๋ผ์คํธ๋ญ์ณ๋ฅผ ์ถ์ํ ํ๋๋ฐ, zone์ ์ต์์ ๊ฐ๋ ์ด๋ค. zone > pod > cluster > host ์ ๊ณ์ธต๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ค.
-
zoneid API ํธ์ถ์ ์ฌ์ฉํ๋ zone์ ์ผ๋ จ ๋ฒํธ
-
volume vm์ด ์ฌ์ฉํ๋ ๋์คํฌ ๊ณต๊ฐ. volume์ root disk volume๊ณผ data disk volume์ด ์๋ค. root disk volume์ VM์ ๊ตฌ๋์ ์ํด์ ์ฌ์ฉํ๋ ๋ณผ๋ฅจ์ผ๋ก ์ปค๋์ด ์์นํ๋ค. data disk volume์ ์ถ๊ฐ์ ์ผ๋ก ๋ณผ๋ฅจ์ ์ ๊ณตํ๊ธฐ ์ํด์ ์ฌ์ฉํ๋ค.
-
job cloudstack์ด ์คํํ๋ ์์ ๋จ์. API๋ฅผ ํธ์ถํ๋ฉด job์ด ๋ง๋ค์ด์ง๊ณ ์ด job์ job queue์ ๋ค์ด๊ฐ๋ค.
-
jobid job์ ์ผ๋ จ๋ฒํธ. jobid๋ฅผ ์ด์ฉํด์ job ์ํ์ ์ํ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ ์ ์๋ค.
-
template vm์ vhd์ vhd์ ๋ฉํ์ ๋ณด๋ฅผ ํฌํจํ๊ณ ์๋ค. cloudstack ์ ์ ๋ ๋ฏธ๋ฆฌ ์ค๋น๋ template๋ฅผ ์ด์ฉํด์ vm์ ๋ง๋ ๋ค.
-
templateid API ํธ์ถ์ ์ฌ์ฉํ๋ template์ ์ผ๋ จ ๋ฒํธ
-
egressrule securitygroup์์ ์ถ๋ ฅ ํจํท์ ํํฐ๋งํ๊ธฐ ์ํด์ ์ฌ์ฉํ๋ค.
-
ingresule securitygroup์์ ์ ๋ ฅ ํจํท์ ํํฐ๋งํ๊ธฐ ์ํด์ ์ฌ์ฉํ๋ค.
-
mysql cloudstack์ mysql๋ก cloud ์ธํ๋ผ๋ฅผ ๊ด๋ฆฌํ๋ค. ์ฌ๊ธฐ์ node, vm, template, job, disk, network ๋ฑ ๋ชจ๋ ์ ๋ณด๊ฐ ๋ค์ด๊ฐ๋ค.