±¾ÎĽéÉÜÁËÒ»ÖÖÎªÔÆ¼ÆËãÆ½Ì¨Öг£ÓõÄÅäÖùÜÀí¹¤¾ß
Chef Ëù´òÔìµÄ¼¯³É¿ª·¢²âÊÔ»·¾³½â¾ö·½°¸£¬ÀûÓÃÁËÇáÁ¿¼¶ÐéÄ⻯¼¼Êõ Docker£¬½« Chef-Server¡¢Chef-Workstation
ºÍ Chef-Client ²¿ÊðÔÚͬһ¸öÐéÄâ»úµ±ÖУ¬ÊµÏÖÁËϵͳ×ÊÔ´×îС»¯¼°¿ª·¢Ð§ÂÊ×î´ó»¯µÄ³¢ÊÔ¡£Í¨¹ý±¾ÎÄÄú¿ÉÒÔÈ«ÃæµØÁ˽⵽ÈçºÎÔÚÒ»¸ö×ÊÔ´ÓÐÏ޵Ļ·¾³ÏÂÃæ(±ÈÈ翪·¢ÈËÔ±µÄ±Ê¼Ç±¾µçÄÔ)½«
Chef ϵͳµÄ¸÷¸öÄ£¿é°´ÕÕÇåÎúµÄÂß¼½á¹¹²¿Êð²¢ÔËתÆðÀ´£¬´Ó¶ø¿ìËÙ¸ßЧµØ½øÐÐ Chef Cookbook
µÄ¿ª·¢Óë²âÊԵĽâ¾ö·½°¸Óëʵʩϸ½Ú¡£
ǰÑÔ
Chef ÊÇ DevOps Ãô½Ý¿ª·¢ÔËά¼¼ÊõµÄÖØÒª¹¤¾ßÖ®Ò»£¬ÊÇÒ»ÖÖÖ±½ÓÃæÏò¿ª·¢ºÍÔËάµÄ¼¯ÖÐÅäÖùÜÀí¹¤¾ß¡£Chef
³£ÓõŤ×÷ģʽÊÇ Client-Server ģʽ£¬¿ª·¢²âÊÔ»·¾³ÐèÒª¶à¸öÍøÂç½Úµã¡£ÈçºÎ¸ßЧÀûÓÃÓ²¼þ×ÊԴͬʱÓÖÄܹ»Ãô½ÝÇá±ãµØ´î½¨¹¦ÄÜÍ걸µÄ¿ª·¢²âÊÔ»·¾³ÊÇÒ»¸öÓÐÒâÒåµÄÎÊÌâ¡£Docker
ÊÇÒ»¸ö¹¹½¨ÔÚ LXC(Linux Container)¼¼ÊõÖ®Éϵ쬻ùÓÚ½ø³ÌÈÝÆ÷(Process Container)µÄÇáÁ¿¼¶
VM ½â¾ö·½°¸¡£±¾ÎĽéÉÜÁ˲ÉÓà VMware ÐéÄâ»úǶÌײ¿Êð Docker ÈÝÆ÷µÄ·½Ê½Ä£Äâ¶à½ÚµãµÄÍøÂç»·¾³£¬¹¹½¨Ò»Ì×¼¯³É»¯µÄ
Chef ¿ª·¢²âÊÔ»·¾³£¬Ê¹ Chef µÄ¿ª·¢²âÊÔ¸ü¼Ó¸ßЧÃô½Ý¡£
ÇáÁ¿¼¶ÐéÄ⻯¼¼Êõ Docker µÄ¼ò½é¼°ÔÚÈí¼þ¿ª·¢²âÊÔÁìÓòµÄʹÓó¡¾°ÃèÊö
Docker ÊÇ PaaS ÌṩÉÌ dotCloud ¿ªÔ´µÄÒ»¸ö»ùÓÚ LXC
µÄÓ¦ÓÃÈÝÆ÷ÒýÇæ£¬Èÿª·¢Õß¿ÉÒÔ´ò°üËûÃǵÄÓ¦ÓÃÒÔ¼°ÒÀÀµ°üµ½Ò»¸ö¿ÉÒÆÖ²µÄÈÝÆ÷ÖУ¬·¢²¼µ½ÈκÎÁ÷ÐÐµÄ Linux
»úÆ÷ÉÏ£¬ÊµÏÖÒ»ÖÖÇáÁ¿¼¶µÄÐéÄ⻯·½°¸¡£Docker ÈÝÆ÷ÊÇÍêȫʹÓÃɳÏä»úÖÆ£¬Ï໥֮¼ä²»»áÓÐÈκνӿڣ¬¼¸ºõûÓÐÐÔÄÜ¿ªÏú£¬²»ÒÀÀµÓÚÈκÎÓïÑÔ¡¢¿ò¼Ü»ò°üװϵͳ£¬¿ÉÒÔºÜÈÝÒ×µØÔÚ»úÆ÷ºÍÊý¾ÝÖÐÐÄÖÐÔËÐС£
Docker µÄ»·¾³°üÀ¨ image ºÍ container¡£image
ÊDzÙ×÷ϵͳ¾µÏñ£¬container ÊÇÔËÐоµÏñµÄÈÝÆ÷£¬ËüÃÇÖ®¼ä¾ÍÏñÊÇÃæÏò¶ÔÏó³ÌÐòÉè¼ÆÖÐÀàºÍʵÀýÖ®¼äµÄ¹ØÏµ¡£Docker
Ìṩһ¸ö¾µÏñ·þÎñÆ÷µÄ¹¦ÄÜ£¬¿ÉÒÔÖ±½Ó´ÓÍøÉÏÏÂÔØ¸÷ÖÖÊÂÏÈÅäÖúõľµÏñ¡£°ÑÏÂÔØµÄ»ù´¡¾µÏñÔÚÈÝÆ÷ÖÐÔËÐÐÆðÀ´ºó£¬¿ÉÒÔ¼ÌÐøÔÚÀïÃæ°²×°²¿ÊðÓ¦Óü°·þÎñ£¬¾ÍÏñÊÇÔÚһ̨¶ÀÁ¢µÄÐéÄâ»úÖеIJÙ×÷Ò»Ñù£¬ËùÓеÄÓ¦Óð²×°¼°ÅäÖñ仯¶¼¿ÉÒÔ±£´æ»òÕß´ò°üÉú³ÉÒ»¸öÐµĶ¨ÖÆ»¯
image¡£
¶ÔÓÚÉú²ú»·¾³À´Ëµ£¬Docker ÊÇÒ»¸ö·Ç³£ÇáÁ¿¼¶µÄÈÝÆ÷£¬ËùÒÔ²»±Øµ£ÐÄÐÔÄÜÎÊÌâ¡£ÓÈÆäÔÚijЩӲ¼þ×ÊÔ´½ôÕÅÈ´ÓÖÐèÒª¶ą̀¶ÀÁ¢Ö÷»ú½øÐзֲ¼Ê½¼ÆËãµÄʹÓó¡¾°ÖУ¬ÒýÈë
Docker À´ÊµÏÖÐéÄâ»úµÄǶÌײ¿ÊðÒ»·½Ãæ¿ÉÒÔÂú×ã¶ÀÁ¢Ö÷»ú×ÊÔ´µÄÄ£Ä⣬ÁíÒ»·½ÃæÓÖ¿É´ó´ó½µµÍÓ²¼þ×ÊÔ´µÄÐèÇó¡£ÏÂÎÄÖн«Òª½éÉܵÄÅäÖùÜÀí¹¤¾ß
Chef µÄ¼¯³É»¯¿ª·¢²âÊÔ»·¾³¾ÍÊÇ Docker µÄÒ»¸ö±È½ÏµäÐ͵ÄÓ¦Óó¡¾°¡£
ÅäÖùÜÀí¹¤¾ß Chef ¼°Æä¸÷¸ö¹¦ÄÜÄ£¿é½éÉÜ
Chef ÊÇĿǰ±È½ÏÁ÷ÐеÄÒ»ÖÖÖ±½ÓÃæÏò¿ª·¢ºÍÔËάµÄ¼¯ÖÐÅäÖùÜÀí¹¤¾ß£¬ÓÉÒ»ÖÖ´¿
Ruby µÄÁìÓòרÓÃÓïÑÔ£¨DSL£©±£´æÏµÍ³ÅäÖá£Chef ÓÉ Opscode ¹«Ë¾¿ª·¢£¬²¢ÔÚ Apache
ÐÒé°æ±¾ 2.0 Ï¿ªÔ´·¢²¼¡£
Chef ¶ÔÒªÅäÖõĶÔÏóÌṩÁË¿çÆ½Ì¨µÄ³éÏó£¬Ê¹Óà Chef ½øÐÐϵͳÅäÖõÄϵͳ¹ÜÀíÔ±Ôڴ󲿷Öʱ¼äÖ»Ðè¸úÕâЩ³éÏóµÄ×ÊÔ´´ò½»µÀ£¬¶ø²»ÓùØÐľßÌåʵÏÖ£¬ÈçÖ»Ðè¹ØÐÄÒªÌí¼ÓʲôÈí¼þ»òÓû§£¬²»ÐèÒª¹ØÐÄÕâЩÓû§»òÈí¼þÊÇÔõôÌí¼ÓÉÏÈ¥µÄ¡£
Chef Ò»°ã³£ÓõÄÓÐÁ½ÖÖ¹ÜÀíģʽ£¬·Ö±ðΪ£º
1.Chef-Solo ģʽ£¬¼´ Chef µÄ standalone ģʽ£¬Ã»ÓÐרÃŵÄ
Chef-server£¬Chef-Solo ×÷Ϊһ¸öºǫ́·þÎñÒ»ÑùÔËÐÐÔÚËù¹ÜÀíµÄ·þÎñÆ÷ÉÏ£¬Í¨¹ý cookbook
À´¿ØÖƱ¾»úµÄÅäÖùÜÀí¡£
2.Client-Server ģʽ£¬¼´Ëù¹ÜÀíµÄ·þÎñÆ÷×÷Ϊ chef-client£¬Í³Ò»ÓÉ
chef-server ½øÐйÜÀí£¬¹ÜÀí°üÀ¨°²×°¡¢ÅäÖõȹ¤×÷¡£Chef-client Óë Chef-server
Ö®¼äÓÃÖ¤Êé½øÐÐÈÏÖ¤¡£¿ª·¢ÈËÔ±¿Éͨ¹ý¿ª·¢¹¤×÷Õ¾ Chef-workstation ÌṩµÄ¹¤¾ß¼¯½øÐоßÌåµÄÅäÖÃʵÀýµÄ¿ª·¢Óë¹ÜÀí¡£¶¨ÖƺõÄÅäÖÃʵÀýÒÔ²ËÆ×"Cookbook"µÄÐÎʽͨ¹ý
Chef-workstation ÉÏ´«µ½ Chef-server ÖУ¬ÓÉ Chef-server Õë¶Ô¿Í»§¶ËÉú³É×ÊÔ´ÁÐ±í£¬È»ºóÍÆË͵½¿Í»§¶Ë£¬ÔÚ¿Í»§¶ËÉÏÔËÐнÓÊÕµ½µÄ×ÊÔ´ÁÐ±í¡£´ËÖÖģʽ¹¦Äܹ¦ÄÜ×îÈ«£¬Ò²×ÔÓ£¬ÏÂÎĵĿª·¢²âÊÔ»·¾³´î½¨¾ÍÊÇ»ùÓÚÕâÖÖģʽ¡£
ÐèÇó·ÖÎö£º¹¹½¨Ò»Ì×ÍêÕûµÄ Chef ¿ª·¢²âÊÔ»·¾³ËùÐèµÄÍøÂç¼Ü¹¹¼°ÏµÍ³×ÊÔ´
Ò»¸ö Client-Server ģʽÏ嵀 Chef µÄ¿ª·¢²âÊÔ»·¾³£¬ÐèÒª
chef-server¡¢chef-workstation ÒÔ¼° chef-client µÈ¹¦Äܽڵ㣬ÔÚÍøÂç×ÊÔ´Éϱ˴˶ÀÁ¢¡£Èç¹ûÓÃʵÌåÖ÷»úÀ´Ö§³Åÿһ¸ö¹¦ÄܽڵãÄ£ÄâÉú²ú»·¾³µÄ»°£¬ÔòÓ²¼þ¿ªÏú»á±È½Ï´ó£¬ÇÒ×ÊÔ´·ÖÅäÏà¶ÔÈßÓ࣬ÐԼ۱Ⱥܵ͡£
ÔÚµ¥Ò»ÎïÀí»úÉÏÓà VMware ÐéÄâ»úÀ´Ö§³Å¸÷¹¦Äܽڵ㣬¿ÉÒÔ´ó´ó¼õÉÙÎïÀíÖ÷»úµÄÊýÁ¿£¬µ«¿¼Âǵ½ÐéÄâ»úÊǶԲÙ×÷ϵͳµÄÍêȫģÄ⣬ËùÐèÕ¼ÓõÄ×ÊÔ´ºÍÎïÀíÖ÷»ú²î²»¶à£¬¶à¸öÐéÄâ»úͬʱÔËÐеÄʱºò¶ÔËÞÖ÷ʵÌå»úµÄÐÔÄÜÊǸö¿¼Ñé¡£ÔÚ¶à¸ö
chef-client ¼¯Öв¿ÊðµÄÓ¦Óó¡¾°Ï£¬ÏµÍ³×ÊÔ´ºÜ¿ì±ã»á±»ºÄ¾¡¡£Èçͼ 1 ËùʾÊÇij¸ö Chef ¿ª·¢ÈËÔ±µÄ
8G Äڴ湤×÷»ú£¬ÔÚͬʱ¿ªÆôÁËÈý̨¸÷·ÖÅäÁË 1G ÄÚ´æµÄ VMware ÐéÄâ»úÔËÐÐ Chef µÄ Server/Workstation/Client
Ö®ºó£¬ÔÙ¿ªÆô Eclipse µÈ¿ª·¢¹¤¾ß£¬µ±µ÷ÊÔÔËÐÐʱϵͳ×ÊÔ´ÒѱôÁٺľ¡£¬´Ëʱ¿ª·¢Ð§ÂÊ´óÊÜÓ°Ïì¡£

ͼ 1. ֻʹÓà VMware ÐéÄâ»ú¹¹½¨
Chef »·¾³µÄ×ÊԴʹÓÃÇé¿ö
Docker µÄÈÝÆ÷¼¶ÇáÁ¿»¯ÐéÄâ¼¼ÊõÇ¡µ½ºÃ´¦µØ½â¾öÁËÕâ¸öÄÑÌ⣬ͨ¹ýÈÝÆ÷°Ñ
Chef µÄ¸÷¸ö¹¦Äܽڵã±Ë´Ë¸ôÀëµÄͬʱ£¬ÓÖÌÞ³ýÁË´óÁ¿ÎÞνµÄ×ÊÔ´Õ¼Óã¬Ï൱ÓÚ°ÑÒ»¸öÔÏÈÐèÒª¶àÈËÁªºÏ²Ù×÷µÄÖØÐÍÎäÆ÷±ä³ÉÁËÒ»¸öÇáÓ¯Á鶯µÄËæÉíµ¥±ø×°±¸¡£
ÒÔ±¾ÎĽÓÏÂÀ´ÒªÕ¹Ê¾µÄ²Ù×÷»·¾³ÎªÀý£¬Ó²¼þ·½ÃæÎïÀíÖ÷»ú»¹ÊÇ 8G ÄÚ´æµÄ±Ê¼Ç±¾µçÄÔ£¬´ÓÓ²ÅÌÖÐÔ¤Áô
30G ´æ´¢¿Õ¼ä¸øÐéÄâ»ú¡£Èí¼þ·½ÃæÀûÓà VMware Workstation »ò VMware Server
´´½¨Ò»Ì¨ÐéÄâ»ú£¬·ÖÅä 1G Äڴ棬°²×° 64 λµÄ Ubuntu 12.04.3£¬ÐéÄâÍøÂçÒÔ VMware
µÄ NAT ģʽÓë Host Ö÷»úÏàÁ¬£¬ÒÔ·½±ãÐéÄâ»úÁ¬½ÓÍâÍø½øÐÐÈí¼þ°üµÄ»ñÈ¡ÓëÉý¼¶¡£

ͼ 2. ±¾ÎÄ»·¾³ÖÐ VMware ÐéÄâ»úµÄÅäÖÃ
ϵͳÉè¼Æ£ºÀûÓà Docker µÄÇáÁ¿¼¶ÐéÄâ»ú²¿Êð Chef µÄ¸÷¸öÄ£¿é
Ê×ÏÈÔÚ VMware Öд Ubuntu12.04.3 ÐéÄâ»ú£¬È»ºó°²×°
Docker£¬ÏÞÓÚÆª·ù VMware ÐéÄâ»úºÍ Docker µÄ¾ßÌå°²×°²½Öè¾Í²»Ïêϸ½éÉÜÁË£¬ÈçÐèÒªÇë²Î¼û±¾ÏµÁÐÆäËûÏà¹ØÎÄÕ¡£ÏÂÃæÖØµã½éÉÜÒ»ÏÂΪÁ˴
Chef µÄ¼¯³É¿ª·¢²âÊÔ»·¾³ÔÚ Docker »·¾³ÖÐËù´´½¨µÄ container ºÍÏà¹ØÅäÖá£
ÔÚ Docker ÖÐÔ¤ÏÈÏÂÔØÁËÁ½ÖÖ²Ù×÷ϵͳµÄ image£¬·Ö±ðÊÇ Ubuntu ºÍ CentOS¡£ÓÉ Ubuntu
image Éú³ÉÁ½¸ö Container£¬·Ö±ð±ê¼ÇΪ Container1 ºÍ Container2£¬
ÓÉ CentOS image Éú³ÉÒ»¸ö Container£¬±ê¼ÇΪ Container3¡£Chef-Server
½«±»²¿ÊðÔÚ Ubuntu Ðé»úÉÏ£¬Chef-Workstation ½«±»²¿ÊðÔÚ Docker Container1
ÉÏ£¬Container2 ºÍ Container3 ×÷ΪÁ½ÖÖ²»Í¬²Ù×÷ϵͳµÄ Chef-client¡£ÓÉÓÚ
Docker ÊÇ»ùÓÚ LXC µÄ£¬¶ø LXC ÓÖÊÇ»ùÓÚ cgroup µÈ Linux kernel ¹¦Äܵģ¬ËùÒÔ
Container µÄ guest ϵͳֻÄÜÊÇ Linux base µÄ£¬Ò²¾ÍÊÇ˵ Windows ϵÄ
Chef-Client ÎÞ·¨Óà Docker µÄ Container À´Ä£Ä⣬ֻÄÜÔÙ½¨Ò»¸ö Windows
Ðé»ú£¬ÕâÒ²ÊÇĿǰʹÓà Docker µÄÒ»¸ö¾ÖÏÞ£¬µ«±ÈÆðÈ«²¿½Úµã¶¼Õ¼ÓÃÒ»¸öÐéÄâ»úµÄÔ·½°¸£¬ÒýÈë Docker
»¹ÊÇÖÁÉÙÊͷųöÁË Chef-Workstation ÕâÒ»¸öÐé»ú×ÊÔ´£¬ÔÚʹÓà Linux base µÄ Chef-Client
µÄ³¡¾°ÏÂ×ÊÔ´µÄ½ÚÊ¡Ôò¸ü¼ÓÏÔÖø¡£ÏÂÃæÊÇÏÂÔØ image ²¢ÅäÖà Container ÔËÐеĹý³Ì£¬ÒÔ Ubuntu
¾µÏñΪÀý£º
ÔÚ VMware ÐéÄâ»úÉÏÏÂÔØ Ubuntu image ²¢²é¿´½á¹û
# docker pull ubuntu # docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE ubuntu latest 736be02b6054 4 months ago 238.4 MB |
ÒÔ½»»¥Ê½´ò¿ªÒ»¸ö Ubuntu Container£¬°²×° SSH ·þÎñÆ÷£¬ÒÔ±ãºóÃæ¿ÉÒÔÈà Container
ÔÚºǫ́ÔËÐУ¬È»ºóͨ¹ý SSH ¿Í»§¶ËÁ¬È룬ÕâÑùÔÚʹÓÃÉÏ¾ÍºÍÆÕͨÐé»úÒ»ÑùÁË¡£
# docker run ¨Ci ¨Ct ubuntu /bin/bash root@24808f660519:/# apt-get update #ÔÚ ubuntu container µÄ½»»¥Ê½»·¾³ÖиüРapt Ô´ root@24808f660519:/# apt-get install openssh-server root@24808f660519:/# mkdir /var/run/sshd root@24808f660519:/# passwd #ÉèÖà ubuntu container µÄ root ÃÜÂ룬ÒÔ±ã SSH ¿Í»§¶ËµÇ¼ root@24808f660519:/# exit |
Õâʱ¾Í¿ÉÒÔͨ¹ýºǫ́½ø³Ì·½Ê½³¤ÆÚÔËÐÐ´Ë Ubuntu Container ÁË£¬µ«Õë¶ÔÎÒÃÇÕâ¸ö Chef
µÄʹÓó¡¾°»¹ÓÐÒ»¸ö²½ÖèÒª×ö£¬¾ÍÊÇÉèÖà DNS µØÖ·Ó³Éä¡£ÔÚ Client-Server ģʽµÄ Chef
ϵͳÖУ¬ÒªÇó Chef-Server/Chef-Workstation/Chef-Client ±Ë´ËÖ®¼ä¶¼Äܹ»Í¨¹ý
hostname »òÓòÃûÀ´Ê¶±ð£¬¶øÔÚ Docker Container ÖÐ/etc/hosts ÊÇÖ»¶ÁµÄ²»ÔÊÐíÐÞ¸ÄËùÒÔ±ØÐëʹÓÃÍⲿµÄ
DNS ϵͳ½øÐеØÖ·Ó³Éä¡£ÔÚ±¾ÎĵÄʹÓó¡¾°ÖУ¬°²×° Docker µÄ VMware ÐéÄâ»ú±» Docker
·ÖÅäÁËÒ»¸öÄÚ²¿µØÖ· 172.17.42.1£¬Docker Container »á°´Æô¶¯Ë³Ðò±»ÒÀ´Î·ÖÅä 172.17.0.2,172.17.0.3¡¡£¬ÎªÁ˽â¾öµØÖ·Ó³ÉäÎÊÌ⣬ÔÚ°²×°
Docker µÄ VMware Ubuntu Ðé»úÉϰ²×°ÁË bind9 DNS server£¬¶Ô Docker
ÄÚ²¿µØÖ·×öºÃÓ³É䡣Ȼºó¾Í¿ÉÒÔͨ¹ýÒÔÏÂÃüÁîÕýʽÆô¶¯ Docker Cotainer£¬²¢Ê¹ÆäÒÔºǫ́½ø³Ì·½Ê½³¤ÆÚÔËÐУº
#docker run -d -dns=192.168.87.137 -v /home/backup:/home/backup ubuntu /usr/sbin/sshd -D |
# -dns ²ÎÊýÖ¸¶¨ÁË DNS server µØÖ·£¬ÕâÀïÊÇ VMware ubuntu µÄµØÖ·¡£
# -v ²ÎÊýÖ¸¶¨ÁË Docker server ºÍ Docker container Ö®¼äµÄ¹²ÏíĿ¼£¬Ò²¾ÍÊÇ˵ÔÚ°²×°
Docker µÄ VMware Ubuntu Ðé»úÉϵÄ/home/backup Ŀ¼ÀïµÄÎļþ¿ÉÒÔÔÚ container
µÄ/home/backup Ŀ¼ֱ½Ó·ÃÎÊ¡£
# /usr/sbin/sshd ±íʾ container ¿ª»úÆô¶¯ SSH server
# -D ±íʾ container ÒÔºǫ́·½Ê½ÔËÐÐ
´Ëʱ¾Í¿ÉÒÔͨ¹ý ssh µÇ¼µ½ container µ±ÖУ¬Ïñ²Ù×÷Õý³£»úÆ÷Ò»Ñù¶Ô container ½øÐа²×°Ó¦Óõȸ÷ÖÖ²Ù×÷ÁË¡£È»ºó¸ù¾ÝϵͳÐèÒªÒÀ´Î¿ªÍ¨ÆäËû¼¸¸ö
Container£¬ÕâÑùÎÒÃÇÕâ¸öÓ¦Óó¡¾°µÄ IT »ù´¡¼Ü¹¹±ä×¼±¸Íê±Ï¡£Í¨¹ýͼ 3 µÄ VMware ½ØÍ¼¿ÉÒÔ¿´µ½£¬VMware
ÐéÄâ»úÆô¶¯ÁËһ̨£¬È»ºóÔÚÐéÄâ»úÄÚ²¿ÔËÐÐÁËÁ½¸ö docker ÈÝÆ÷¡£

ͼ 3.±¾ÎÄ»·¾³ÖеÄÐé»úÓë docker ÈÝÆ÷
ÔÚÂß¼ÉÏ£¬±¾ÎÄ»·¾³µÄÕûÌå¼Ü¹¹¿ÉÒÔÈçͼ 4 Ëùʾ£º

ͼ 4.±¾ÎÄ»·¾³ÖеÄϵͳÂß¼¼Ü¹¹Í¼
ϵͳʵʩ£ºChef ¸÷¸öÄ£¿éÔÚ Docker ÖеݲװÓëÔËÐÐ
ÔÚ Docker server ËùÔÚ VMware Ubuntu ÐéÄâ»úÉϰ²×°
Chef-Server
°²×°¹ý³Ì¿É²Î¿¼¹Ù·½Îĵµ£¨http://docs.opscode.com/install_server.html£©£¬Êµ¼Ê²Ù×÷±È½Ï¼òµ¥£¬¾ßÌåÈçÏ£º
´Ó¹ÙÍøÏÂÔØ²¢°²×° Chef-Server µÄ deb °ü£¬±¾ÎÄʵÀýËù²ÉÓõİ汾Ϊ 11.0.11£º
# dpkg -i chef-server_11.0.11-1.ubuntu.12.04_amd64.deb |
½øÐа²×°ºóÅäÖãº
# chef-server-ctl reconfigure |
×îºóͨ¹ý chef ×Ô´øµÄ¼¯³É²âÊÔ¼¯À´ÑéÖ¤°²×°£º
Èç¹û·µ»Ø±¨¸æÖÐûÓб¨´í£¬Ôò±íʾ Chef-Server °²×°³É¹¦¡£
ÔÚ Docker Container1 Éϰ²×° Chef-Workstation
Ö÷ÒªÊǰ²×° chef-client µÄ deb °ü£¬ÅäÖà Chef-Workstation µ½ Chef-Server
µÄ·ÃÎÊ,²¢ÅäÖà knife ¹¤¾ß¼¯¡£°²×°¹ý³Ì¿É²Î¿¼¹Ù·½Îĵµ£¨http://docs.opscode.com/chef/install_workstation.html£©£¬¾ßÌå²½ÖèÈçÏ£º
´Ó¹ÙÍøÏÂÔØ²¢°²×° Chef-Client µÄ deb °ü£¬±¾ÎÄʵÀýËù²ÉÓõİ汾Ϊ 11.6.0£º
root@24808f660519:/opt/chef-repo# dpkg -i chef_11.6.0-1.ubuntu .12.04_amd64.deb |
°²×°ÅäÖà chef-repo£¨chef-repo ÊÇ´æ·Å¿ª·¢ºÃµÄ cookbooks µÄµØ·½£¬knife
ÃüÁîÐй¤¾ß»á´Ó chef-repo ÉÏ´«Êý¾Ýµ½ chef-server£¬ÒÔ¹©Ëù¹ÜÀíµÄÄ¿±êÖ÷»úÒ²¾ÍÊÇ Chef-Client
»ñÈ¡²¢Ö´ÐС££©:
root@24808f660519:/opt/chef-repo # git clone git://github.com/ opscode/chef-repo.git |
ÔÚ chef-repo Ŀ¼Ï£¬´´½¨.chef Ŀ¼£¬²¢ÇÒÐÞ¸Ä.gitignore Îļþ£¬Ìí¼Ó .chef
ÅäÖà knife ¹¤¾ß¼¯£º
root@24808f660519:/opt/chef-repo # knife configure --initial |
ÐèÒªÊäÈëÏà¹ØµÄÐÅÏ¢£¬Ö÷ÒªÊÇ server µÄ URL£¬client µÄ key£¬client ×¢²á server
ËùÐèÒªµÄ validator ºÍ validator private key µÈ£¬ÐèÒª´Ó server
¶Ë copy Á½¸öÎļþµ½ workstation »úÆ÷ÉÏ£º
root@24808f660519:/opt/chef-repo # scp root@<server ip>:/etc/chef- server/admin.pem /opt/chef-repo/.chef/ root@24808f660519:/opt/chef-repo # scp root@<server ip>:/etc/chef- server/ chef-validator.pem /opt/chef-repo/.chef/ |
Óà knife ¹¤¾ßÁгöһϵ±Ç°×¢²áÔÚ Chef-Server É쵀 Chef-Client£¬Èç¹ûÄÜ¿´µ½
chef-validator ¾Í±íʾ workstation ÅäÖóɹ¦¡£
root@24808f660519:/opt/chef-repo/.chef# knife client list chef-validator chef-webui |
Chef-Client ¹ÜÀí½ÚµãµÄ×Ô¶¯»¯°²×°
¾ÍÊÇÔÚ Chef-Workstation ÉÏÀûÓà knifebootstrap À´ÊµÏֵ쬰²×°¹ý³Ì¿É²Î¿¼¹Ù·½Îĵµ£º
£¨http://docs.opscode.com/install_bootstrap.html£©¡£ÔÚ workstation
ÉÏÔËÐÐ knife bootstrap ÃüÁ¸ñʽÈçÏ£º
knife bootstrap <node ip> -x <username> -P <password> --sudo |
ÔÚ±¾ÎÄ»·¾³ÊµÀýÖУ¬ÎÒÃÇÏëÔÚ Docker Container2 ÉÏÃæ°²×° Chef-Client ¹ÜÀí½Úµã£¬Docker
server ¸ø Container2 ·ÖÅäµÄ IP ÊÇ 172.17.0.3£¬ÎÒÃÇÔÚ֮ǰÅäÖà Container
µÄʱºòÉ趨µÄ root ÃÜÂëÊÇ passw0rd£¬Ôò bootstrap ÃüÁîÖ´ÐÐÈçÏ£º
root@24808f660519:/opt/chef-repo/.chef # knife bootstrap 172.17.0.3 ¨Cx root ¨CP passw0rd |
Ö´Ðйý³ÌÖÐ Chef-Server »á×Ô¶¯ÍÆËÍ PAM ÈÏÖ¤Îļþ¼°ÃüÁģ°åµ½ Chef-Client
¹ÜÀí½ÚµãÉÏ£¬È»ºó Chef-Client ×Ô¶¯Åú´¦ÀíÖ´ÐÐ client °üÏÂÔØ°²×°¡¢ÔÚ server ÉÏÈÏÖ¤²¢×¢²áµÈ¹¤×÷£¬bootstrap
Ö´ÐнáÊøºóÔÙÔËÐÐ knife client list ¿ÉÒÔ¿´µ½ Chef-Client ¹ÜÀí½ÚµãµÄ FQDN
ÒѳöÏÖÔÚ client ÁбíÖУº
root@24808f660519:/opt/chef-repo/.chef# knife client list chef-validator chef-webui f8f99a0f4d52 #´Ë¼´Îª Docker Server ¸ø Docker Container2 ·ÖÅäµÄ hostname |
ÖÁ´Ë£¬Õâ¸öÓÉ VMware ÐéÄâ»úǶÌ× Docker Container ʵÏֵɻ¯µÄ Chef ¿ª·¢²âÊÔ»·¾³¾Í´î½¨Íê³ÉÁË¡£
ϵͳ²âÊÔ£ºÔÚÕâÌ×¼¯³É»·¾³ÖнøÐÐÒ»¸öÍêÕûµÄ Chef Cookbook
µÄ¿ª·¢²âÊÔ¹ý³Ì
ÏÞÓÚÆª·ù£¬±¾ÎľÍÓÃÒ»¸ö¹Ù·½ÌṩµÄ»ù±¾ÈëÃż¶ cookbook ʵÀýÀ´×öһϲâÊÔ£¬ÑéÖ¤Ò»ÏÂÕâÌ×¼¯³É»·¾³µÄÔËתÁ÷³Ì¡£¾ßÌåµÄ
chef cookbook ¿ª·¢¼¼ÇÉÇë²Î¼û±¾ÏµÁÐÆäËûÏà¹ØÎÄÕ¡£
¿ÉÒԵǼµ½ Chef µÄ¹Ù·½ÉçÇø http://community.opscode.com/cookbooks£¬ËÑË÷ÊÇ·ñÒѾ´æÔÚÓÐÏà¹ØµÄ
cookbook ÌṩʹÓᣱ¾ÎÄѡȡÆäÖÐÃûΪ user µÄ cookbook À´×öÊÔÑ飬Æä¹¦ÄÜÊÇÔÚ Chef-Client
¹ÜÀí½ÚµãÉÏ´´½¨Ö¸¶¨Óû§¡£
ÏÂÔØ cookbook£¬ÔÚ Chef-Workstation ÉϲÙ×÷£º
# root@24808f660519:~# sudo knife cookbook site install user |
ϵͳ»á×Ô¶¯È¥¹ÙÍøÏÂÔØ user µÄ cookbook ´úÂë°ü£¬²¢ÔÚ Chef-Workstation
µÄ chef-reop Ŀ¼ÖÐ×Ô¶¯½âѹËõºÃ£¬×îºó¿ÉÒÔ¿´µ½ÈçÏÂÌáʾ±íÃ÷°²×°³É¹¦£º
Cookbook user version 0.3.0 successfully installed |
user cookbook µÄĿ¼½á¹¹Îª£º
root@24808f660519:/opt/chef-repo/cookbooks/user# ls CHANGELOG.md README.md Rakefile attributes metadata.json metadata.rb providers recipes resources templates |
user µÄ README.md ÖжÔÕâ¸ö cookbook µÄʹÓÃÓÐ˵Ã÷£¬ÐèÒª½¨Á¢Ò»¸öÃûΪ users
µÄ data bag£¬½«Óû§µÄÐÅϢд³ÉÒ»¸ö JSOn Îļþ·ÅÔÚÏÂÃæ£¬ÔÙͨ¹ý override_attributes
ÔÚ role µÄÅäÖÃÎļþÖÐÖ¸¶¨ÐèÒªÅäÖõÄÓû§¡£
ÉÏ´« cookbook µ½ chef-server£º
root@24808f660519:/opt/chef-repo# knife cookbook upload user Uploading user [0.3.0] Uploaded 1 cookbook. |
´´½¨ role£º
root@24808f660519:/opt/chef-repo# cd roles root@24808f660519:/opt/chef-repo/roles# vi testuser.rb name "testuser" run_list( "recipe[user]", "recipe[user::data_bag]" ) override_attributes( "users" => [ "testuser1" ] ) |
ÉÏ´« role µ½ chef-server£º
root@24808f660519:/opt/chef-repo/roles# knife role from file testuser.rb Updated Role testuser! |
Ϊ user Õâ¸ö cookbook ´´½¨ data_bag£º
root@24808f660519: /opt/chef-repo# cd data_bags root@24808f660519: /opt/chef-repo/data_bags# mkdir users; cd users root@24808f660519:/opt/chef-repo/data_bags/users# vi testuser1.json { "id" : "testuser1", "gid": "admin", "comment" : "testuser1", "home" : "/home/testuser1", "create_user_group":"true", "ssh_keygen": "false", "ssh_keys" : "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC+upV++0vIM2PuD2XvH+zOUF6 JsfofPCvCdqZ/Wg0GaRvcuPpKs7Ua2APSsvtvEz9ohQvexS1DO4G1ZjIO20dsc82BHTFxd3DmZyQ8g/CLoIKIdkDI mSffQxBYM//8URvtk16HTmuYVY9poalbVhlErhg0xSbyx/DQfOChfc34T8481iWPZ0pnJLj7z5AUvYR8fcWGtbMhv eoyKuB4VocsQvKfgVUauS1jIGGac7kC8XGVc6fEVzzTycS7dTypzHDJp3I9wHWoiMF4SD5MRb0sEhlvaOtryHGVdc fFj4Mrdiu8NepL7yyCb9qGdB7QbT1+hNCnZukWP4Iz6yzATLzS" } |
ÉÏ´« data_bag µ½ Chef-Server
root@24808f660519:/opt/chef-repo/data_bags/users# knife data bag from file users testuser1.json Updated data_bag_item[users::testuser1] |
Ϊ½ÚµãÔö¼Ó run_list£¬¼´½« testuser Õâ¸ö½ÇÉ«¸³¸ø Chef-Client
¹ÜÀí½Úµã
root@24808f660519:/opt/chef-repo/roles# knife node run_list add f8f99a0f4d52 "role[testuser]" f8f99a0f4d52: run_list: role[testuser] |
ÖÁ´Ë£¬¶Ô user Õâ¸ö cookbook µÄÅäÖü° server ¶Ë²¿ÊðÒÑÍê³É£¬¿ÉÒÔ¿ªÊ¼Õýʽ¹¤×÷ÁË¡£
ÔÚ Chef-Client ¹ÜÀí½ÚµãÉÏÖ´ÐÐ chef-client ÀÈ¡ÅäÖã¬Ö´Ðнá¹ûÈçͼËùʾ£º

ͼ 5. ÔÚ Chef-Client ¹ÜÀí½ÚµãÉÏÖ´ÐÐ chef-client
ÀÈ¡ÅäÖõÄÖ´Ðнá¹û
ÎÒÃÇ¿ÉÒÔ¿´µ½ Chef-Client ¹ÜÀí½ÚµãÒѾ³É¹¦ÀÈ¡µ½ÁË testuser1 Õâ¸öÓû§µÄÐÅÏ¢£¬²¢×Ô¶¯µÄ½øÐÐÁËһϵÁеÄÅäÖã¬Íê³ÉÁËÕâ¸öÐÂÓû§µÄ×Ô¶¯»¯´´½¨¡£
´ËʱÔÙÀ´¿´Ò»ÏÂÖ÷»úµÄ×ÊÔ´ÏûºÄÇé¿ö£¬¿ÉÒÔ¿´µ½ºÍ֮ǰûÓÐÒýÈë docker ʱÏà±È£¬Ö÷»úÄÚ´æºÍ CPU µÄÏûºÄÇé¿ö¶¼´ó·ùºÃת£¬ÏµÍ³ÔËתÁ÷³©¡£Èçͼ
6 Ëùʾ£º

ͼ 6. ʹÓà VMware ÐéÄâ»úÄÚǶ docker Ëù¹¹½¨µÄ Chef
»·¾³µÄ×ÊԴʹÓÃÇé¿ö
½áÊøÓï
ͨ¹ýÒÔÉÏʵÀý£¬ÎÒÃǾͳɹ¦µØÔÚÕâ¸ö¼¯³É»¯µÄ Chef ¿ª·¢²âÊÔ»·¾³ÖУ¬Ê¹Óà Chef µÄ user Õâ¸ö
cookbook Íê³ÉÒ»´Î·þÎñÆ÷µÄ×Ô¶¯»¯²¿Êð¡£
¶ÔÓÚ Chef ¿ª·¢ÈËÔ±À´Ëµ£¬Ê¹ÓÃÕâÌ×¼¯³É»¯»·¾³¿ÉÒÔ¼õÉÙ¶ÔÓÚÓ²¼þ»·¾³µÄÒÀÀµ£¬Ê¹¿ª·¢ÈËÔ±¸ü¶àµØ¼¯ÖÐÓÚ Chef
recipe µÄ¿ª·¢±¾Éí£¬Ò²·½±ã´úÂëµÄµ¼³öÓëÖØ¹¹¡£¶ÔÓÚ Chef ²âÊÔÈËÔ±À´Ëµ£¬ÓÉÓÚÕâÌ×»·¾³ÊÇ»ùÓÚ VMware
µÄ£¬¿ÉÒÔÀûÓà VMware ±¾ÉíµÄÒ»Ð©ÌØÐÔ·½±ãµØ½øÐвâÊÔ»·¾³µÄ»Ø¹öÒÔ¼°µü´ú£¬Í¬Ê±ÀûÓà Docker ¿ÉÒÔÃô½ÝµØÄ£Äâ³ö¶à½ÚµãµÄÓ¦Óó¡¾°£¬ÅäºÏ
VMware ÐéÄâÍøÂ绹¿ÉÒÔÓëÍⲿʵÌåÍøÂçÏàͨ£¬Ê¹²âÊÔ»·¾³µÃµ½½øÒ»²½µÄÀ©Õ¹¡£
|