chef - cra16/overcast GitHub Wiki
chef๋ infrastructure๋ฅผ ์๋ํ ํ๊ธฐ ์ํ ํ๋ ์์ํฌ๋ค. ์ ์ฒด ์์คํ ํ์์ ์ฝ๋ํ ํ๊ณ , ์ฝ๋๋ฅผ ์๋์ผ๋ก ์ํํจ์ผ๋ก์จ ์์ฝ๊ฒ ์์คํ ์ ์ด์, ์ ์ง, ํ์ฅ, ๋ณต์ ํ ์ ์๋๋ก ๋์์ค๋ค.
chef๋ ์ปดํจํ ๋ฆฌ์์ค๋ฅผ __provisioning__ํ๊ณ , __์ค์ ์ ๊ด๋ฆฌ__ํ๊ณ ์ด ๊ฒ๋ค์ __ํตํฉ__ํ๋ ์ผ์ ํ๋ค.
Chef๋ RESTfule API ํน์ knife์ CLI๋ฅผ ์ด์ฉํด์, ์์คํ ์ ํ๋ก๋น์ ๋ํ ์ ์๋ค. Baremetal ํธ์คํธ์ ๊ฒฝ์ฐ Chef๋ ๋ฆฌ๋ ์ค์ kickstart๋ solaris์ jumpstart ํน์ AIX์ NIM๊ณผ ๊ฐ์ ์ผ์ ํ๋ค. ๊ฐ์ํ ํ๊ฒฝ์ ๊ฒฝ์ฐ chef๋ libvirt์ XEN, KVM, VMware API๋ฅผ ์ด์ฉํด์ ํ๋ก๋น์ ๋ํ ์ ์๋ค.
ํด๋ผ์ฐ๋์ ๊ฒฝ์ฐ chef๋ AWS๋ vCloud์ cloud API๋ฅผ ์ง์ ํธ์ถํ๋ ๋ฐฉ์์ผ๋ก ํ๋ก๋น์ ๋ ํ๋ค. ๋ํ Java์ jclouds๋ ruby์ fog๋ฑ์ ํด๋ผ์ฐ๋ ์ํํธ์จ์ด์๋ ํตํฉํ ์ ์๋ค.
chef๋ ์ค์ ๊ด๋ฆฌ๋ฅผ ์ํ ๋ชจ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. Role๊ณผ recipes์๋ ์๋ฒ๊ฐ ์ด๋ป๊ฒ ์ค์ ๋ผ์ผ ํ๋์ง์ ๋ํ ์ค์ ์ ๋ณด์ ์ค์ ์ ๋ณด์ ์ํ์ ์ํ ์ฝ๋๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ์์ปจ๋ฐ mysql, apache, hadoop์ ์ํ ์ค์ ์ ๊ด๋ฆฌํ ์ ์๋ค. ๋จ์ง ์ค์ ๋ง์ ๊ด๋ฆฌํ ๋ฟ๋ง ์๋๋ผ, ํจํค์ง๋ฅผ ๊ฒ์ฌํด์ ์ค์นํ๊ณ , ์คํํ๊ณ , ์ค๋จํ ์๋ ์๋ค.
Chef์ ์ต์ข ๋ชฉ์ ์ ์ธํ๋ผ๋ฅผ ์๋์ผ๋ก ๊ตฌ์ฑํ๊ณ ์ด๋ฅผ ํตํฉํ๋ ๊ฒ์ด๋ค. Chef์ ๊ฐ์ฅ ๊ฐ๋ ฅํ ์ ์ค์ ํ๋๋ ์ค์ ๋ก์ง์ผ๋ก ๋ถํฐ ์ค์ ๋ฐ์ดํฐ๊ฐ ๋ถ๋ฆฌ๋ผ ์๋ค๋ ์ ์ด๋ค. ์ค์ ๋ฐ์ดํฐ๋ NoSQL ํํ๋ก ๋ฐ๋ก ๋์ ์ผ๋ก ์์ธ๋์ด์ ์ ์ฅ๋๋ฉฐ, search API๋ฅผ ์ด์ฉํด์ ์ธํ๋ผ ์ ๋ณด๋ฅผ ์ฆ์ ํ์ธํด์ ์ค์ ๋ก์ง์ ์ ์ฉํ ์ ์๋ค. ๋ค๋ฅธ ๋ง๋ก Chef recipes๋ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์คํ ๊ณผ ์๋ฒ๋ค์ ํตํฉํ ์ ์๋ค. ์๋ฅผ ๋ค์ด ์น์๋ฒ๋ search api๋ฅผ ์ด์ฉํด์ database์ memcache ์๋ฒ๋ค์ ์ฐพ์ ์ ์์ผ๋ฉฐ, ์๋์ผ๋ก ์น ์๋ฒ ์ค์ ์ ๋ฐ์ ์ด๋ค์ ์๋ก ๋ฌถ์ ์ ์๋ค.
chef๋ server & client ๋ชจ๋ธ์ ๋ฐ๋ฅด๋ ํ๋ ์์ํฌ๋ก chef server, workstations, node๋ก ๊ตฌ์ฑ๋๋ค.
- Chef Server:
Chef Server๋ ์ธํ๋ผ (์ค์ )์ ๋ณด ์ฝ๋๋ฅผ ์ ์ฅํ๊ธฐ ์ํ Chef ์ฝ๋ ์ ์ฅ์๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ๋ชจ๋ chef ์ฝ๋๋ chef server์ ์ง์คํด์ ๊ด๋ฆฌํ๋ค. chef server๋ REST API๋ฅผ ์ด์ฉํด์ ์ ๊ทผํ ์ ์๋ค. ์ถ๊ฐ์ ์ผ๋ก WebUI๋ฅผ ์ด์ฉํด์ ์ธํ๋ผ์คํธ๋ญ์ณ๋ฅผ ๊ด๋ฆฌํ ์๋ ์๋ค. ๋ฐ์ดํฐ๋ couchdb๋ก ๊ด๋ฆฌ๋ฅผ ํ๋ฉฐ, solr์ ์ด์ฉํด์ ๊ฒ์ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ค.
- Node:
์ธํ๋ผ๋ฅผ ๊ตฌ์ฑํ๋ ๋จ์ ์์คํ ์ผ๋ก chef client๊ฐ ์ค์น๋๋ค. Bearmetal ํน์ VM ํ๊ฒฝ์ผ ์ ์๋ค. ๋ ธ๋๋ chef-client ํ๋ก๊ทธ๋จ์ ์คํํด์ chef server๋ก ๋ถํฐ run list๋ฅผ ๊ฐ์ ธ์์ ์ค์ ์ ๋ณ๊ฒฝํ๊ณ ํจํค์ง๋ฅผ ์ค์นํ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๋ค. ๋ ธ๋๋ ํด๋ผ์ด์ธํธ๋ผ๊ณ ๋ถ๋ฅด๊ธฐ๋ ํ๋ค.
- Workstation :
Chef server๋ (์๋ํ๋ฅผ ์ํ)๋ฐ์ดํฐ์ ๋ก์ง์ ๊ฐ์ง๊ณ ์๋ค. ๋ฐ์ดํฐ์ ๋ก์ง์ knife๋ฅผ ์ด์ฉํด์ ๊ฐ๋ฐ์ ํ๋๋ฐ, knife๊ฐ ์ค์น๋ ์๋ฒ๋ฅผ workstation์ด๋ผ๊ณ ํ๋ค. ์ฆ chef ๊ฐ๋ฐ ๋ ธ๋๋ผ๊ณ ํ ์ ์๋ค. chef ๊ฐ๋ฐ์๋ workstation์ ์ค์น๋ knife๋ฅผ ์ด์ฉํด์ ๋ฐ์ดํฐ์ ์ฝ๋๋ฅผ ๊ฐ๋ฐํ๊ณ ์ด ์ ๋ณด๋ฅผ chef server์ upload ํ๋ค.
๋ ธ๋๋ chef client๊ฐ ์ค์น๋๋ ํธ์คํธ ์ปดํจํฐ๋ค. ๋ ธ๋ ์๋ํ๋ ๋ฐ์ดํฐ์ธ attributes์ ๋ก์ง์ ๋ด๊ณ ์๋ run list์ ์ํด์ ์ด๋ฃจ์ด์ง๋ค. Attributes๋ ๋ ธ๋์ ์์ฑ ๊ฐ๋ค์ด ์ ์ฅ๋๋ค. ๋ ธ๋ ๋ณ์๋ผ๊ณ ์๊ฐํ๋ฉด ์ดํด๊ฐ ์ฝ๋ค.
Run list๋ ์๋ํ๋ฅผ ์ํ ๋ก์ง์ ๋ด๊ณ ์๋ ์ฝ๋ ์กฐ๊ฐ์ด๋ค. ํ๋์ ๋ ธ๋๋ ํ๋ ์ด์์ run list๋ฅผ ๊ฐ์ง๊ณ ์๋๋ฐ, run list๋ ์ฝ๋์ attributes๋ฅผ ์ด์ฉํด์ ์๋ํ๋ฅผ ์ํํ๋ค. ์ฝ๋์ ๋ณ์๋ก ์ด๋ฃจ์ด์ง ์คํ ๊ฐ๋ฅํ ์กฐ๊ฐ ํ๋ก๊ทธ๋จ์ ๋ชฉ๋ก์ด run list์ ์ ์ฒด๋ค..
Chef๋ ๋๋์ ๋ ธ๋๋ฅผ ์๋ํํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๊ณ ์๋ค. ์ด๋ค ๋ ธ๋๋ค์ ๋์ผํ ์์ฑ์ ๊ฐ์ง ๊ทธ๋ฃน์ด๋ฃจ ์ด๋ฃจ์ด์ง ๊ฒ์ด๋ค. ์์ปจ๋ฐ, ์น ์๋น์ค ๋ ธ๋๋ค์ด๋ผ๋ฉด apache, dbms, php๋ฅผ ํฌํจํด์ ๋์ผํ ์์ฑ์ ๊ฐ์ง ๊ฒ์ด๋ค.
Role๋ฅผ ์ด์ฉํด์ ๊ฐ์ ํน์ฑ์ ๊ฐ์ง๋ node๋ค์ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์ด์ ๊ด๋ฆฌํ ์ ์๋ค. Role๋ ํ๋ ์ด์์ run list๋ฅผ ๊ฐ์ง๊ณ ์๋๋ฐ, ๊ฐ์ role์ ๊ณต์ ํ๋ node๋ค์ ๋ชจ๋ ๋์ผํ ์ค์ ๊ณผ์ ์ ๊ฑฐ์น๊ฒ ๋๋ค.
Cookbooks๋ recipe, resource definition, attribute, library, cookbook file ๊ทธ๋ฆฌ๊ณ template ํ์ผ, ๊ธฐํ ๋ฉํ๋ฐ์ดํฐ์ ๋ชจ์์ด๋ค. ์ผ๋ฐ์ ์ผ๋ก Cookbook๋ ์ ํ๋ฆฌ์ผ์ด์ ๋จ์๋ก ๊ฐ๋ฐํ๋ค. ์ฆ mysql cookbook, apache cookbook, DHCP cookbook ํ์์ผ๋ก ๊ฐ๋ฐํ๋ค.
์ผ๋ฐ์ ์ผ๋ก chef ์ฝ๋์ ๊ฐ๋ฐ์ cookbook์ ๊ฐ๋ฐํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
Recipe๋ cookbook์ ๊ตฌ์ฑ์์๋ก ์ค์ ๋ก์ง์ ๋ด๊ณ ์๋ ์ฝ๋๋ค. recipe๋ ruby ์ฝ๋๋ก ๋ง๋ค์ด์ ธ ์์ผ๋ฉฐ, ruby ์ฝ๋์ attribute, resource ๋ฑ์ ์ด์ฉํด์ ๋ง๋ ๋ค.
๋ฆฌ์์ค๋ ์๋ํ๋ฅผ ์ํด์ ๋ง์ด ์ฌ์ฉํ๋ ์ฝ๋๋ฅผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํํ๋ก ๊ฐ๋ฐํด ๋ chef ๊ตฌ์ฑ์์๋ค. Chef๋ user(์ ์ ๊ด๋ฆฌ), group, directory, file, cron, service ๋ฑ ์์คํ ์๋ํ์ ํ์์ ์ผ๋ก ์ฌ์ฉํ๋ ๊ธฐ๋ฅ๋ค์ resource ํํ๋ก ์ ๊ณตํ๋ค.
๋ฆฌ์์ค๋ ๋ฉํฐ ํ๋ซํผ์ ์งํฅํ๋ค. ์๋ฅผ ๋ค์ด package๋ฆฌ์์ค๋ฅผ ์ด์ฉํ๋ฉด ํจํค์ง๋ฅผ ์ค์นํ ์ ์๋๋ฐ, apt, yum, BSD ports๋ฑ์ ํ๋ ํผ์ ๋ง๋ ํจํค์ง ์์คํ ์ ์ฌ์ฉํ๋ค.
Data bags๋ chef server์ ์ ์ฅ๋๋ key - value ํ์์ ๋ฐ์ดํฐ๋ค. data bags์ ๋ฐ์ดํฐ๋ ๋ชจ๋ cookbook์์ ์ ์ญ๋ณ์์ฒ๋ผ ์ฌ์ฉํ ์ ์๋ค. ์ธํ๋ผ์คํธ๋ญ์ณ ์ ์ฒด์์ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํด์ ์ฌ์ฉํ๋ค.