æè¿ãä»äºãã趣å³ãã㧠AWS / OpenStack / GCE ãã®ä»ã®ããããIaaSãªãã©ãããã©ã¼ã ã調æ»ããããããã£ããããã®APIãããã£ããããæ©ä¼ãå¤ãã£ãã
ãã®è¾ºã®éç¨ãèãã¦ãã¦è©¦ãããã¨ãã¶ã¤ãã£ããã¨ãªã©ãã¾ã¨ãããã
å®éãã£ããã¨ã¨ãã¦ã¯ãç¹å®ã®ãã©ãããã©ã¼ã ã«ä¾åãã¦ãã訳ã§ã¯ãªãããããã¦ãã®äººã¯AWSã®ã¢ã¬ããã¿ãããªã¤ã¡ã¼ã¸ãæã£ãæ¹ãèªã¿é²ããããããããªããã¨æãã
ã´ã¼ã«ãã³ã¤ã¡ã¼ã¸ãéã«èµ°ããããã¨
ãã®æã®IaaSã®åºæ¬ã§ãããããµã¼ãã¼ã¯ã¤ã³ã¹ã¿ã³ã¹ã¨å¼ã°ããã¤ã¡ã¼ã¸ãæå®ãã¦èµ·åãããec2 aws run-instanceã¨ãnova bootã¨ããã®é¡ãã§ããã
ã¤ã¡ã¼ã¸ããã®èµ·åã®ããã«ã¯éã«ã¯å¤§ãã2è¦ç´ ããã£ã¦ãä¸ã¤ã¯ã¤ã¡ã¼ã¸èªä½ã®æ§ç¯ãããä¸ã¤ã¯èµ·åç´å¾ã®ããããã®ã¤ã³ã¹ã¿ã³ã¹ã®ç¹æ§ã«åãããåæåå¦çã®ãã§ã¼ãºã§ããã
ãã®ãã¤ã¡ã¼ã¸èªä½ã®æ§ç¯ãã¨ãåæåå¦çãã®ä¸¡æ¹ãå®å ¨ã«ãã£ã¡ãåµããã¨ã§ããµã¼ãã®èµ·åã¯é«éã«ãªãããµã¼ãã®è¿½å åé¤ã¯å§åçã«ç°¡åã«ãªãã
ãã®è¾ºãçªãè©°ãã¦éã«ã³ãã³ãä¸çºã§ãµã¼ã追å ãã§ããããã«ãªãã¨ãããã俺ã¯ã©ã¦ãã ããæãåºã¦ãããããéãããã
ã¤ã¡ã¼ã¸ã®ãã«ããã¤ãã©ã¤ã³
ãã¤ã¡ã¼ã¸èªä½ã®æ§ç¯ãã«ã¤ãã¦èããã¨ãè²ã ã¨è©¦è¡é¯èª¤ããçµæã以ä¸ã®ãããªãã¤ãã©ã¤ã³ããã£ããæ¥ãã®ã§æãã¦ã¿ãã
ã¤ã¡ã¼ã¸ã®ç¨®é¡ã¨ãã¦ã
- minimalã¤ã¡ã¼ã¸
- ã¢ããªã±ã¼ã·ã§ã³ç³»ã®ã¤ã¡ã¼ã¸
- é »ç¹ã«æ´æ°ããã/ã¤ã³ã¹ã¿ã³ã¹æ°ãåç ã¨è¨ãç¹å¾´ããããã®ãé »ç¹ã«å¤æ´ããã®ã§ãå·®åã§æ§ç¯ããããã«ãã¦ãã
- ããããä¸ããæ§ç¯ãç´ãæ段ã確ä¿ãã¦ããã¹ã
- ãã®ä»ã®ãã¼ã«ã®ã¤ã¡ã¼ã¸
- ããã¯minimalããã¯ãªã¼ã³ã«ä½ããããã«ãããã¸ã§ãã³ã°è¨å®ãã¡ã³ããã¦ããã
ãã®3種é¡ãã»ã¨ãã©ã®ãµã¼ãã¹ã«ã´ãã£ã¨åµãããããªããã¨æãã
ã¢ããªã±ã¼ã·ã§ã³ã®é åãåä»ã ããRailsãªããããããåãã¢ã¼ããã¯ãã£ã§ãbundle install + asset precompileæ¸ã®ã¢ããªã±ã¼ã·ã§ã³ããtgzã«è©°ãã¦ç¨æãããããs3çãªãã®ã«ç½®ãã¦ããã¦ï¼å¾è¿°ã®ãããã¸ã§ãã®ãã§ã¼ãºã§ï¼åã£ã¦ããããããã®éããè¯ããããããªãã
ãã ããµã¼ãæ§æã®å¤æ´ã¨ã¢ããªã±ã¼ã·ã§ã³ã®å¤æ´ã¯é »åº¦ãå ¨ç¶éãã®ã§ãã¢ããªã±ã¼ã·ã§ã³ãµã¼ãç³»ã®ãã«ãã¯ããä¸ãã§ã¼ãºç½®ãã¦ãè¯ãããã¨è¨ãæãã¯ããã
packer
ãã«ããã¤ãã©ã¤ã³ãæ§ç¯ããä¸ã§ãEC2ãªã©ã§ã¯ç¬èªã®ãã¼ã«ããããã¨ã¯ãããpackerãåªãã¦ããã¨æãã
- åºæ¬çã«ã¯ãã©ãããã©ã¼ã ã«ä¾åããªãï¼å®æ度ã®éãã¯ãã...ï¼
- ãããã¤ãï¼AWSã OpenStackã ããããã¯VirtualBoxã ï¼ã¨ãããã¸ã§ãã³ã°ï¼shellã ã®puppetã ã®ï¼ã¨ãåããã¦ããã®ã¯ãéçºã®ä¸ã§æ±ãããã
- OSSãªã®ã§ã©ããã¦ãå°ã£ããã½ã¼ã¹ã追ãããããã
ãªã©ãã¡ãªããã
ã³ãã¨ãã¦ã¯ä»¥ä¸ã®ãããªç¹ããã£ãã
- åºæ¬ãuserdataã§è¤éãªãã¨ã¯ãããªããå¾è¿°ããã¦ã¼ã¶ã®ä½æã追å ãgitã¿ãããªèªåã§å ¥ããã®ãããã©ããããã¼ã«ã®ã¤ã³ã¹ãã¼ã«ã«ã¨ã©ããã¹ããPackerã§ã¯runcmdã使ã£ããè² ãã¨æããã¨ã
- è¤éãªãã¨ã¯shellã®ãããã¸ã§ãã¼ã§è¡ãããããã¸ã§ãã¼ã§ã®å®è¡çµæã¯Packerããã¾ããã¨ãã®ã³ã°ãã¦ãããã®ã§åãããããã
- éã«ãcloud-initã®ãã°ã¯åºæ¬ /var/log/messages ã«åãããã®ã§ãã¤ã¡ã¼ã¸æ§ç¯ã«ããã¦ã¯ç¢ºèªããããã°ãé£ããã
- Puppet/Chefã®ãã¹ã¿ã¼ãµã¼ããå¥éç¨æããæ¹ã便å©ã«ãªãããã¡ã¤ã«ã¢ãããã¼ãã®æ©è½ã¯Packerã«ã¯ããã¨ã¯è¨ããpuppet agent ä¸çºã§æ¸ãæ¹ãè¯ãã
ãã¨ããããã®tipsã¨ãã¦ãPackerã«ããæ§ç¯ç´å¾(AMIåã®ç´å)ã®ç¶æ ãServerspecã§æ¤æ»ã§ããã®ãããã¯ä¸å®ãæ¸ãã®ã§è¯ãã
cloud-init
ãåæåå¦çããå¸ãã®ãcloud-initã
cloud-initã¯ã»ã¨ãã©æ¥æ¬èªã®æ å ±ããªããAWSã«é¢ããããã°ã§æåãªã¯ã©ã¹ã¡ã½ãã社ã®è¨äºãç®ç«ã¤ããªã³ãã¬ã§è¨ãcobblerã¿ãããªããã¨èããã°è¯ããããããªãããããã®èª¬æããã£ã¡ãéã ãª......ã
cloud-initã®ä»çµã¿ã§èµ·åæã«æµãè¾¼ã¾ããåæåãã¼ã¿ããuserdataãã¨å¼ãã ãããããã®userdataã§ãã使ãå½¢å¼ã¯äºç¨®é¡ãã£ã¦ãä¸ã¤ã¯cloud-configå½¢å¼ã¨ãå¼ã°ããYAMLãã©ã¼ãããã
ããã¯å è¿°ã®Packerã§ä½¿ãã¨è¯ãã¨æããä¸èº«ã¯ãããªã¤ã¡ã¼ã¸ã§ãã¦ã¼ã¶ä½æã¨è¨å®ï¼ãããæå¤ã¨puppetã§ããã®ã¯ããã©ãããï¼ããã±ã¼ã«ãã¿ã¤ã ã¾ã¼ã³ãªã©ããããªã«ãã¦ããã
#cloud-config repo_update: true repo_upgrade: none packages: - git - curl - unzip users: - default - name: app lock-passwd: true sudo: ALL=(ALL) NOPASSWD:ALL locale: ja_JP.UTF-8 timezone: Asia/Tokyo
ããä¸ã¤ã¯æ®éã«ã·ã§ã«ã¹ã¯ãªããã§ãuserdataã¨ãã¦ã·ã§ã«ã¹ã¯ãªãããæµãè¾¼ãã¨æ®éã«å®è¡ãã¦ãããã
ãã¡ãã¯ãrun-instanceã®ã¿ã¤ãã³ã°ã§ãä¸è¨ã®ãããªå¦çãå®è¡ãããã®ã«åãã¦ããã
- monitã®èµ·å
- mackerelãconsulãªã©ã®ã¯ã©ã¹ã¿åå
- ELBãªã©ã¸ã®ã¸ã§ã¤ã³
- éç¥ç³»ï¼curlã§ã takosan ãå©ããªã©ï¼
å人çã«ã¯ãrun-instanceã®ã¿ã¤ãã³ã°ã§ãããã¤ãpuppetã®é©ç¨ã¿ãããªæéã®ãããããã¤ãã¡ã¤ã«ã·ã¹ãã ã«ä¿åã§ããç³»ã®æä½ã¯ãããªãæ¹ãè¯ãã¨æãããã£ãã¨èµ·åãã¦ãããæ¹ãè²ã
ã¨è¦ç©ãããããã®ã§ã
ã¾ããrun-instanceã®ã¿ã¤ãã³ã°ã§ã /etc/cloud/cloud.cfg ã«æ¸ããã¦ããcloud-initã®å¦çã¯èµ°ã£ã¦ãã¾ãã®ã§ãä¾ãã°æå³ããhostnameãç½®ãæãã£ã¦ãã¾ããããããªããé©å®ã³ã³ããªã¯ãããªãããã«æèããæ¹ãè¯ãã¨æãã
ããã¦cloud-initã¯ããªãå¤æ©è½ã§ãå®ã¯ã¼ãã使ãã¨ãã®æ©è½ããã£ããããææ¡ãã¦ããªãã®ã§ãã£ã...ã
APIãã©ããããç°¡åãªãã¼ã«
以ä¸ã®ãããªãã¼ã«ã¯åºæ¬çã«ã³ãã³ãã©ã¤ã³ã§æä½ã§ããã®ã§ããã®æä½ã®ã²ã¨ã¾ã¨ããThorãç¨ãã¦ã©ãããããã®ãä½ãã¨å§åçã«ä¾¿å©ã«ãªããæé æ¸ããã³ã¼ãã§ããã
ä¸è¨ã®ãæä½ã®ã²ã¨ã¾ã¨ããã«ã¯å¾ã ã«ãã¦userdataã®åçãªçæãå«ã¾ããã®ã§ããªãããã³ãã³ãã©ã¤ã³ãã¼ã«ã§ã©ãããã¹ãã ã¨æãã
Thorã¯å²ã¨æè»ã«æ¸ããã®ãããããã¼ããããããRubyã«æ £ãã¦ããã®ã§é¸ãã ãä»æ¥æ¥ãªãGoè¨èªã§ä½æããã®ãè¯ããããããªãããã®æã®ãã¼ã«ã¯ããããXMLã¾ãã¯JSONãHTTPã§å©ãã ããªã®ã§Windowsã§ãåä½ãããã¼ã«ã«ãªãå¯è½æ§ã¯é«ãï¼ã©ãã¾ã§åãããã¼ãã¯Windowsãæã£ã¦ããªãã®ã§å®éã®ã¨ããã¯è©¦ãã¦ããªãï¼ï¼ï¼æåã¯ãã£ã¨éã§å«ã¿ãªè¡¨ç¾ã ã£ãã®ã§ç´ããï¼ã
追è¨
ããã¾ã§ã®ãã¤ãã©ã¤ã³ãããã«ä¸ãã管è½ãããã®ã¨ãã¦Terraformãåå¨ãããã¨ã¯è¨åãããã
ã¨ã¯ããã試ããæ§æã§ã¯Thorãã¼ã¹ã®ãã¼ã«ã§ç¨ã«è¶³ãã¦ãã¾ã£ãï¼ã¨å¤æããï¼ã®ã§Terraformã®æ¤è¨¼ã¾ã§ã¯è³ã£ã¦ããªããç¬èªã®ãã¼ã«ããã³ãã¥ããã£ãHashicorp社ã®ãµãã¼ãã®ãããã¼ã«ã®æ¹ãæå©ãªé¢ãå¤ãã ãããããã©ããã§è©¦ãããã¨ããã§ã¯ããã
[PR]ã¾ã¨ã
ãããªãããªãããæ°ã¶æãããèãã¦ããã®ã ããminneã¨è¨ããµã¼ãã¹ãç±ã人æãåéãã¦ãã¦ãããè¨ãæãã®ãã¨ã沢山èããã試ãããããã®ã§ããã¸ã§ä¸ç·ã«ããã¾ãããï¼ï¼ï¼