Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
Chef¿ª·¢¼°¸ßЧ²¿ÊðʵÀý·ÖÎö
 
À´Ô´£ºIBM ·¢²¼ÓÚ 2017-9-26
  3001  次浏览      29
 

ChefµÄ»ù±¾¸ÅÄî¼°½á¹¹

ChefÊÇʵ¼ùDevOpsºÍ³ÖÐø¼¯³É(Continuous Integration)˼ÏëµÄÖØÒª¹¤¾ß£¬Ëü¿ÉÒÔ°Ñ·þÎñÆ÷µÄÔËÐл·¾³£¨°üÀ¨·þÎñÆ÷Èí¼þ¡¢ÒÀÀµ°ü¡¢ÍøÂçÅäÖõȣ©½øÐгéÏó£¬ÒÔÌØÓеÄÅäÖÃÓï·¨¶ÔÆä½øÐйÜÀí£¬¿É×Ô¶¯µØ½øÐзþÎñÆ÷»·¾³µÄ³õʼ»¯¹¤×÷¡£ÓÉÓÚChefÊÇ»ùÓÚRubyÓïÑÔ½øÐпª·¢µÄ¿ò¼Ü£¬µÃÒæÓÚRubyÔÚÔª±à³Ì¼°DSL(Domain Specific Language)¿ª·¢·½ÃæµÄÓÅÊÆ£¬ChefµÄ¿ª·¢¾ßÓмò½àÇåÎúÀ©Õ¹ÐÔÇ¿Ò×ÓÚά»¤µÈÌØµã£¬Òò´Ë¹ã·ºµØ±»Ó¦ÓÃÓÚÔÚÔÆ¼ÆËã»·¾³µÄ´î½¨¼°Î¬»¤µÈ³¡¾°ÖС£

ÏëÏóÒ»ÏÂÔÚÒ»¸ö»ù±¾µÄÔÆ¼ÆËã»·¾³ÖУ¬Ëæ×ÅÓû§µÄÐèÇó£¬ÌṩҵÎñÖ§³ÅµÄ·þÎñÆ÷£¬Ò²¾ÍÊÇÔÆ¼ÆËã½Úµã»á±»½Ó¶þÁ¬ÈýµØÉêÇë²¢¿ªÍ¨¡£Ã¿Ò»Ì¨·þÎñÆ÷´Ó´´½¨µ½Í¶ÈëʹÓ㬶¼ÐèÒª¾­ÀúÒ»¸ö³õʼ»¯¼°ÅäÖõĹý³Ì£¬Èç¹ûÔÚ°²×°µÚÒ»¸ö½ÚµãµÄʱºò°ÑÅäÖòÎÊý¡¢ÒÀÀµ°ü¼°Ö´ÐеÄÃüÁîµÈд³É½Å±¾£¬ÔÚ°²×°ÅäÖÃÓàϽڵãµÄʱºòÖ»ÒªÔËÐÐһϽű¾¼´¿É×Ô¶¯Íê³É£¬ÕâÑùµÄ»·¾³²¿Êð¼´½ÚԼʱ¼ä¶øÇÒ²»ÈÝÒ׳ö´í¡£Chef¾ÍÆðµ½ÁËÕâÑùµÄÒ»¸ö½Å±¾¿ò¼ÜµÄ×÷Ó㬵«¹¦ÄÜҪǿ´óµÃ¶à£¬¿É¶¨ÖÆÐԺͿÉÀ©Õ¹ÐÔ¶¼ºÜÇ¿¡£Chef½«½Å±¾ÃüÁî´úÂ뻯£¬ÅäÖÃÁ÷³Ì¶¼ÌåÏÖÔÚ´úÂëÂß¼­µ±ÖУ¬¶¨ÖÆÊ±Ö»ÐèÒªÐ޸ĴúÂ룬°²×°µÄ¹ý³Ì¾ÍÊÇÖ´ÐдúÂëµÄ¹ý³Ì¡£Chef¾ÍÏñÒ»¸ö´ó³ø£¬½Å±¾µÄ¿ª·¢¾ÍÏñÊÇ´´ÔìÒ»¸öÐÂµÄ²ËÆ×£¬°Ñ¸÷ÖÖʳ²ÄËͽø³ø·¿½»¸ø´ó³ø£¬Ñ¡ÔñÒ»¸ö²ËÆ×£¬´ó³ø¾Í»áÅë⿳öÃÀζ¼ÑëÈ¡£·þÎñÆ÷µÄÅäÖÃÒ²ÊÇÕâÑù£¬ÔÚChefÀïΪһ̨Âã»úÖ¸¶¨Ò»¸ö²ËÆ×(role»òrecipe)£¬Chef¾Í»á°ÑËüÅäÖóÉÓû§ËùÐèÒªµÄÔÆ¼ÆËã½Úµã¡£

ChefʹÓÃServer/Clientģʽ½øÐÐITÅäÖùÜÀí£¬ÔÚ×î³£¼ûµÄ»ù±¾»·¾³Ï£¬Ê¹ÓÃChefÉæ¼°ÖÁÉÙÈý̨»úÆ÷£ºÒ»Ì¨Chef·þÎñÆ÷(Chef-server)£¬¹ÜÀíËùÓÐÒªÅäÖõÄChef¿Í»§¶Ë¼°¸÷ÖÖ¿ª·¢³öÀ´µÄÅäÖýű¾£¬·¢ÆðÅäÖýű¾µÄÔËÐиø¿Í»§¶ËÏ·¢ÅäÖÃÐÅÏ¢£¬¿ÉÒÔÐÎÏóµØÀí½âΪ¼È¹ÜÀí×Åʳ¿ÍÓÖ¹ÜÀí×Å²ËÆ×µÄ´ó³ø£»Ò»Ì¨¿ª·¢»úÆ÷(Chef-Workstation)£¬ÔÚÉÏÃæ±àдÅäÖýű¾²¢´«¸øChef-Server£¬¾ÍÏñÊÇ´ó³øµÄÖúÊÖ£¬ÇвËÅä²Ëд²ËÆ×£¬¸æËß´ó³øÒª×öÄÄЩ²Ë£»Chef¿Í»§¶Ë(Chef-Client)£¬ÄǾÍÊǵȴýÆ·³¢ÃÀζµÄʳ¿Í£¬ÓÉChef-server°´ÕÕ²ËÆ×(Chef-Workstation´«ÉÏÀ´µÄ½Å±¾¼¯Ò²¾ÍÊÇRecipe)£¬ÀûÓø÷ÖÖʳ²Ä(Èí¼þ°²×°°ü¡¢ÒÀÀµ°ü¡¢ÅäÖÃÎļþ)£¬×ö³ÉÃÀζ¼Ñëȶ˸øÊ³¿Í£¬Ê³¿Í³Ô±¥ÁËÕâ¸öChef-ClientÒ²¾ÍÅäÖÃÍê³É¿ÉÒÔʹÓÃÁË¡£

±¾ÎĽéÉÜÁËÒ»ÖÖ»ùÓÚChef¿ª·¢µÄÔÆ¼ÆËã½ÚµãÅäÖùÜÀí·½°¸µÄ°¸Àý£¬ÔÚ½²½âÁËChef¿ª·¢µÄһЩ˼·¼°·½·¨µÄͬʱ£¬½éÉÜÁËÀûÓÃChefÌṩµÄÒýµ¼¹¤¾ßknife bootstrapÀ´½øÐÐÔ¶³ÌÔËάµÄģʽ£¬ÒÔchef-serverºÍchef-workstationÏ༯³ÉµÄÖ÷¿Ø»úÀ´ÍÆËÍ¿ØÖÆÃüÁʹĿ±ê½Úµã×Ô¶¯Ö´ÐÐÖ¸¶¨ÔËά²Ù×÷£¬ÊµÏÖÁËChefÔÚÔÆ¼ÆËãÓ¦Óó¡¾°Ï¿ª·¢²¿ÊðЧÂÊÓÅ»¯µÄ³¢ÊÔ¡£

ͨ¹ý±¾ÎÄ£¬¶ÁÕß¿ÉÒԱȽÏÉîÈëµØÁ˽âÈçºÎÀûÓÃChefϵͳ½øÐпª·¢£¬ÈçºÎ½«»ùÓÚChef¿ª·¢µÄ×Ô¶¯»¯ÔËά¹¤¾ß¼¯³ÉÔÚʵ¼ÊÓ¦Óó¡¾°Ö®ÖУ¬ÒÔ¼°ÈçºÎ¹æ»®²¿Êð·½°¸´Ó¶øÌáÉýϵͳÔËתЧÂÊ¡£¶ÔÓÚChef¿ª·¢ÉçÇø±È½Ï³£¼ûµÄÈ翪·¢·½·¨ÈëÃÅ¡¢Ó¦Óýø½×ÒÔ¼°Êµ¼Ê²¿ÊðµÈÎÊÌâ±¾Îͼ½«ÓÐËùÉæ¼°£¬ÏàÐÅÄܹ»ÎªÒѾ­»ò½«ÒªÀûÓÃChef½øÐпª·¢µÄÅóÓÑÌṩһЩÓÐÓõIJο¼¡£

ͼ1.Chef¹ÙÍø¹ØÓÚChef¸÷×é¼þÖ®¼ä¹ØÏµµÄʾÒâͼ

ChefÔÚÔÆ¼ÆËãÆ½Ì¨µÄÒ»ÖÖÓ¦Ó÷½°¸½éÉÜ

Chef×÷ΪÅäÖùÜÀí¹¤¾ß£¬ÆäÒ»ÖÖ³£¹æµÄ¿ª·¢¼°Ó¦ÓÃÁ÷³ÌÊÇÕâÑùµÄ£º

  1. ÔÚChef-WorkstationÉÏ´´½¨Ò»¸öcookbook£¬²¢ÔÚÆäÖÐÌí¼Órecipe
  2. ÔÚrecipeÖнøÐпª·¢£¬±àдÅäÖýű¾µÄÒµÎñÂß¼­
  3. ÉÏ´«cookbookµ½Chef-Server
  4. ÔÚnodeÉϰ²×°Chef-Client£¬²¢ÔÚChef-ServerÉÏ×¢²á
  5. ÔÚChef-ServerÉÏÅäÖÃnodeµÄrun list
  6. ÔÚÄ¿±ênodeÉÏÔËÐÐchef-client£¬Ö´ÐÐcookbookÖж¨ÒåµÄ²Ù×÷¡£

ÉÏÒ»ÕÂÔøÌáµ½£¬Chef¾ßÓкÜÇ¿µÄÁé»îÐԺͿÉÀ©Õ¹ÐÔ£¬¿ÉÒÔ¸ù¾Ýʵ¼ÊÓ¦Óó¡¾°µÄÐèÒªµ÷ÕûChefµÄ²¿Êð·½°¸¼°ÅäÖÃÁ÷³Ì´¥·¢·½Ê½¡£ÕâÀï½éÉÜÒ»ÖÖÓÃÀ´Ö§³ÅÔÆ¼ÆËãÆ½Ì¨¹ÜÀíµÄChefÓ¦Ó÷½°¸£ºÇ°Ì¨Óû§½Ó¿ÚÊÕ¼¯µ½Óû§Ìá½»µÄ½Úµã´´½¨²ÎÊý£¬°üÀ¨»úÆ÷Ó²¼þÐÔÄÜÐèÇó£¬OSÀàÐÍ£¬·þÎñÀà±ð£¬Ô¤¶©Ê±¼ä£¬ÊÇ·ñ±¸·ÝµÈµÈ£¬ÕâЩÐÅÏ¢ÔÚºǫ́²ÎÊýÉú³ÉÆ÷ÖнøÐÐÕûºÏ²¢Éú³ÉÅäÖÃÇåµ¥£¬µ÷ÓÃvSphere½Ó¿ÚÉú³É½ÚµãÂã»ú¡£ChefλÓÚÔÆ¼ÆËã½Úµã´´½¨Á÷³ÌµÄÖм䣬¸ºÔðËùÓнڵãÂã»úÉú³ÉºóµÄ¶¨ÖÆÅäÖá£×îºóÓÉÒµÎñÑé֤ģ¿é¶ÔÅäÖÃºÃµÄ½Úµã½øÐÐ״̬¼ì²é£¬Èç¹ûͨ¹ý¼´¿É½»¸¶Óû§Ê¹Óá£ÎªÌá¸ßϵͳµÄÅäÖùÜÀíЧÂÊ£¬ÔÚÕâÑùÒ»¸öÓ¦Óó¡¾°ÖУ¬¶ÔChefµÄ¿ª·¢ºÍ²¿Êð¿ÉÒÔ²ÉÓÃÒÔÏÂÈýµãÓÅ»¯µ÷Õû·½°¸£º

±í1.ChefÓÅ»¯µ÷Õû·½°¸

²¿Êð¼¯Öл¯ ϵͳ¼Ü¹¹¾ö¶¨Á˺ǫ́ģ¿éÐèÒª¾¡¿ÉÄܾ«¼ò£¬¼õÉÙ¹ÜÀíÄ£¿éµÄ½ÚµãÊýÁ¿,¿ÉÒÔ½«Chef-ServerºÍChef-WorkstationºÏ²¢¼¯Öв¿Êð£»
ÍÆËÍʽÖ÷¶¯¹ÜÀí ÓÉÓÚÔÚÕâ¸öÓ¦Óó¡¾°ÖÐChefʼÖÕ´¦ÔÚÒ»¸öµÈ´ýÏìÓ¦µÄλÖ㬴ÓÓû§¿ªÊ¼Ìá½»¶©µ¥Ö±ÖÁ½ÚµãÂã»úÉú³É£¬Chef²¢²»ÖªµÀChef-ClientµÄ¾ßÌåÐÅÏ¢¡£Õâ¾ÍÐèÒªChef-Server¶ÔÕâЩ½ÚµãÖ÷»ú½øÐÐÍÆËÍʽµÄ¿ØÖƺ͹ÜÀí£¬Ö÷Òª°üÀ¨Á½¸ö²½Ö裬Ê×ÏÈÊÇÔÚ½ÚµãÉú³ÉÖ®ºó£¬Chef-Serverͨ¹ýÍÆËÍChef-Client°²×°°üµ½½ÚµãÖ÷»ú½øÐа²×°£¬Òýµ¼½Úµã³ÉΪ±»Chef-Server¹ÜÀíµÄ¿Í»§¶ËÖ®Ò»£¬È»ºóChef-ServerÔÙÍÆËÍÅäÖýű¾¼¯(¼´RUN_LIST)µ½Chef-Client£¬²¢´¥·¢°²×°ÅäÖùý³Ì¡£ÒÔÉϹ¦Äܶ¼¿ÉÒÔͨ¹ýChefÌṩµÄKnife bootstrap¹¤¾ßʵÏÖ¡£
JSON´«²Î ¶ÔÓÚRecipeÖÐÉæ¼°µ½µÄ°²×°ÅäÖòÎÊýµÄ´«µÝ£¬ÎªÌá¸ßÖ´ÐÐЧÂÊ£¬Ê¹ÓÃKnife bootstrapµÄ-j²ÎÊý´úÌæÍ¨³£Ê¹ÓõÄdata bagÀ´´«µÝjson-attributes¡£

 

¹ØÓÚKnife bootstrap¹¤¾ßµÄÐÅÏ¢£¬¿ÉÒԲο¼ChefµÄ¹Ù·½Îĵµ£º https://docs.chef.io/knife_bootstrap.html£¬ÔÚ±¾ÎĵĺóÐøÕ½ڽ«Îª¶ÁÕßչʾһÏÂÒ»¸ö¾ßÌåµÄCookbookµÄ±àдʵÀý£¬²¢Í¨¹ýknife bootstrapÓÉChef-ServerÍÆËÍÖÁChef-Client½ÚµãʵÏÖÈí¼þ°üµÄ×Ô¶¯°²×°²¿Êð¡£ ÏÂÃæÎÒÃǽ«Í¨¹ýÒ»¸öʵÀýÀ´Á˽âChef CookbookµÄ¿ª·¢¡¢²¿Êð¼°Ö´ÐС£
Chef CookbookµÄ¿ª·¢

ÓÃChef¿ª·¢µÄ²¿Ê𹤾ßÊÇÒÔChef CookbookΪµ¥Ôª´æ´¢ÓÚChef ServerµÄ´æ´¢ÏµÍ³ÖС£Ã¿Ò»¸öChef Cookbook¼´Ò»¸öÓÃÓÚ²Ù×÷ÉèÖúͲßÂÔ²¿ÊðµÄÌ×¼þ£¬ÌṩÕë¶ÔÄ¿±ê»úÆ÷ÔÚijһ³¡¾°£¨×´Ì¬£©ÏÂËùҪʵÏֵIJÙ×÷¼°²Ù×÷ËùÐèÒªµÄÅäÖÃÐÅÏ¢ºÍ²ÎÊý¡£¶øËùÓеľßÌå²Ù×÷ÐèҪʵÏÖÔÚÒ»¸ö»ò¶à¸öChef RecipeÖС£

Chef RecipeÖ÷ÒªÓÃÓÚ¸ù¾Ý²Ù×÷ϵͳ״̬¶ÔChef-client½øÐвÙ×÷Á÷³ÌµÄ×Ô¶¯»¯ÅäÖá£ËùÒÔ£¬ Chef Recipe¿ÉÒÔ±»ÈÏ×÷ÊÇΪʵÏÖijһĿµÄËù×öµÄijһϵÁÐÅäÖòÙ×÷µÄ¼¯ºÏÌå¡£ ¸ù¾ÝChef RecipeµÄ¶¨Ò壬ÎÒÃÇ¿ÉÒÔ´óÖÂÁ˽⵽RecipeµÄ¿ª·¢¹ý³Ì¡£¶Ôÿһ¸öRecipe£¬ÎÒÃÇÐèҪȷ¶¨Ä¿±ê»úÆ÷ÔÚ¸ÃRecipeÖ´ÐÐÖ®ºóÐèҪʵÏÖʲô״̬£¬´ïµ½Ê²Ã´Ä¿±ê£¬Íê³ÉʲôÅäÖá£ÔÚÕâÒ»²¿·ÖÄÚÈÝÎÒÃǽ«ÒÔÔÆ¼ÆËãÆ½Ì¨Öг£ÓõÄÖն˹ÜÀí¹¤¾ßIEM AgentµÄ°²×°ÅäÖÃÐ¶ÔØÎªÀý£¬Õ¹Ê¾Chef CookbookµÄʵÏÖÁ÷³Ì¡£

ͼ2.IEM AgentµÄinstall²Ù×÷Á÷³Ìͼ

±í2.¿ª·¢¹ý³ÌÃèÊö

¿ª·¢²½Öè ¾ßÌåÃèÊö
´´½¨Cookbook ÐèÒª´´½¨Ò»¸öCookbook£¬ÎÒÃÇ¿ÉÒÔʹÓÃKnifeÃüÁîÀ´Ö÷¶¯´´½¨Ò»¸öCookbook£º# knife cookbook create <mycookbook-name>
¸ÃÃüÁÔÚÖ´ÐÐÃüÁîµÄworkstation»úÆ÷ÉÏĬÈÏCookbooks¿âĿ¼Ï´´½¨Ò»¸öÒÔ<mycookbook-name>ÃüÃûµÄCookbookÎļþ½á¹¹Ä¿Â¼£¬Ä¿Â¼ÖаüÀ¨Attributes¡¢RecipesµÈÎļþĿ¼½á¹¹ÒÔ¼°CHANGELOG.md¡¢metadata.rbºÍREADME.mdÎļþ¡£Îļþmetadata.rb¶¨ÒåÁ˸ÃcookbookµÄ°æ±¾ÐÅÏ¢ºÍÒÀÀµ¹ØÏµ£¬ÓÃÀ´¹ÜÀí¸Ãcookbook¡£
¹æ»®RecipeʵÏÖCookbookµÄÄ¿±ê ҪȷÈϸÃCookbookҪʵÏÖµÄÄ¿±ê£¬Èç°²×°Èí¼þ£¬ÔËÐÐÈí¼þ£¬¼ì²éÈí¼þÊÇ·ñÕý³£°²×°ÅäÖã¬Ð¶ÔظÃÈí¼þ¡£¸ù¾Ý´ËÄ¿±ê£¬¿ÉÒÔÈ·¶¨ÖÁÉÙÐèÒª4¸öRecipeÀ´ÊµÏÖÉÏÊöÏàÓ¦µÄ4¸öÄ¿±ê¡£ÄÇôÐèÒªÔÚ´´½¨µÄCookbook½á¹¹µÄrecipesĿ¼Ï´´½¨ÏàÓ¦µÄ<recipe-name>.rbÎļþ¡£Ã¿Ò»¸örecipeÎļþҪʵÏÖÒ»¸öÄ¿±ê£¬ÀýÈ綨Òåinstall.rbÎļþ£¬Ä¿±êÊÇÒªÇóÔÚÄ¿±ê»úÆ÷Éϳɹ¦°²×°Öն˹ÜÀí¹¤¾ßIEM Agent¡£µ±È»£¬Èç¹ûʹÓÃdefault.rbÀ´ÃüÃûij¸örecipe£¬ÄÇôÈç¹ûÔÚʹÓøÃcookbookʱûÓÐÖ¸¶¨Ä³¸örecipe£¬ÄÇôĬÈÏÖ´ÐÐdefault.rbÕâ¸örecipe¡£ËùÒÔ½¨ÒéʹÓÃdefault.rbÖ´ÐÐͨÓó£¼ûµÄ²Ù×÷ºÍÅäÖá£
È·¶¨RecipeµÄ¹¦ÄÜÂß¼­¼°×ÊÔ´ È·¶¨ÒªÊµÏÖÿһ¸örecipeÄ¿±êËùÐèÒªµÄ²Ù×÷ÃüÁî¡¢²ÎÊýÅäÖᢲÙ×÷Á÷³Ì¼°ËùÐèÒªµÄÏà¹ØÎļþ¡£ËùÓвÙ×÷ÅäÖÃËùÐèÒªÔ¤¶¨ÒåµÄ²ÎÊý¡¢ÊôÐԺͱäÁ¿ÐÅÏ¢½«¶¨ÒåÔÚÖ¸¶¨µÄºó׺ΪrbµÄrubyÎļþ£¬²¢´æ·ÅÔÚĿ¼AttributesÏ¡£Èç´Ë²ÎÊý±äÁ¿Óë¾ßÌå²Ù×÷Á÷³Ì·ÖÀ룬ÔÚ²ÎÊý±äÁ¿µÄÖµÐèÒª¸Ä±äµ÷Õûʱ£¬¿ÉÒÔÖ±½ÓÔڹ̶¨µÄattributeÎļþÖÐÐ޸쬲¢²»ÐèÒªÐÞ¸Ärecipe£¬´Ó¶ø±£Ö¤´úÂëÖÊÁ¿¡£ÀýÈçÓÃÓÚ°²×°Ä³Èí¼þµÄinstall.rb½«ÐèÒªÌṩÈí¼þÃû³Æ¡¢Èí¼þ°²×°Ä¿Â¼¡¢Èí¼þÈÕ־Ŀ¼¼°Ãû³Æ¡¢ËùÐèÓ²Å̿ռä´óСµÈÐÅÏ¢£¬ÕâЩÐÅÏ¢¶¼¿ÉÒÔÒÔ±äÁ¿²ÎÊýµÄÐÎʽԤ¶¨ÒåÔÚij¸öattributeÎļþÖС£
ϸ»¯²Ù×÷Á÷³Ì Chef¿ÉÒÔÓÃÓÚʵÏÖÔËάÖнű¾³ÌÐò²¿ÊðµÄ×Ô¶¯»¯£¬´úÌæÔËάÈËÔ±ÊÖ¶¯µÄ²¿Êðά»¤ÏµÍ³£¬ÊµÏÖÔËάÈËÔ±ËùÓеÄÊÖ¶¯²Ù×÷£¬°üÀ¨ÔËάÈËÔ±ÉèÖòÎÊý£¬ÅäÖû·¾³£¬ÔËÐÐÃüÁµÈ´ýÖ´ÐУ¬²é¿´²Ù×÷½á¹ûµÈµÈËùÓеIJÙ×÷²½Öè¡£µ«ÊÇÔËάÈËÔ±µÄÊÖ¶¯²Ù×÷Éæ¼°¼«¶à¾«Ï¸µÄ²Ù×÷£¬ÉõÖÁÓ뵱ǰµÄ»úÆ÷ÔËÐл·¾³Óйأ¬Óë֮ǰ²½ÖèµÄ²Ù×÷½á¹ûÓйأ¬Õâ¾ÍʹµÃ²¿Êð×Ô¶¯»¯±äµÃ±È½ÏÀ§ÄѸ´ÔÓ¡£ËùÒÔ¾ÍÐèҪϸ»¯²Ù×÷Á÷³Ì£¬½«Ã¿Ò»¸öÁ÷³Ì¶¼Ï¸»¯µ½Ò»¸ö¼òµ¥µÄ²Ù×÷£¬±ÈÈç´´½¨Ä³¸öĿ¼¡¢¿½±´Ä³¸öÎļþ¡¢Ö´ÐÐijÌõÃüÁͬʱ¿¼Âǵ±Ç°»úÆ÷Óë¸Ã²Ù×÷ÓйصĻ·¾³ÈçºÎ¡£Í¬ÑùÒÔ°²×°Öն˹ÜÀí¹¤¾ßIEM AgentΪÀý£¬Ê×ÏÈÐèÒª¼ì²éϵͳӲÅÌ¿ÕÏпռäÊÇ·ñ×ã¹»£¬È»ºó´ÓÈí¼þ°ü·þÎñÆ÷ÏÂÔØÈí¼þ£¬´ÓIEM serverÏÂÔØÈÏÖ¤Îļþ£¬ÔÙÅäÖôúÀíÈí¼þËùÐèµÄÅäÖÃÎļþ£¬´´½¨°²×°Ä¿Â¼£¬°²×°¸Ã´úÀíÈí¼þ£¬×îºóÇåÀíËùÓÐÏÂÔØµÄÁÙʱÎļþ¡£Í¨¹ýϸ»¯Á÷³Ì£¬¿ÉÒÔϸ»¯·Ö½âΪ²½Ö裺¼ì²éÓ²ÅÌ¿ÕÏпռ䣬´Ó·þÎñÆ÷ÏÂÔØÈí¼þ°üµ½ÁÙʱĿ¼£¬ÑéÖ¤ÓÐЧµÄIEM ServerµØÖ·£¬ÏÂÔØÈÏÖ¤Îļþ£¬´´½¨ÈÏÖ¤ÎļþÖ¸¶¨Ä¿Â¼£¬½«ÈÏÖ¤Îļþ¿½±´µ½Ö¸¶¨Ä¿Â¼£¬´´½¨ÅäÖÃÎļþÖ¸¶¨µÄĿ¼£¬ÉèÖÃÅäÖÃÎļþ£¬´´½¨°²×°Ä¿Â¼£¬±¸·Ý¾ÉÈÕÖ¾£¨Èç¹ûÒÔǰ°²×°¹ý¸ÃÈí¼þ£©£¬Çå¿ÕÈÕ־Ŀ¼£¨Èç¹û´æÔÚ¾ÉÈÕÖ¾»òÕß¾ÉÈÕ־Ŀ¼£©£¬´´½¨ÈÕ־Ŀ¼£¬Ê¹Óð²×°ÃüÁî°²×°IEM Agent£¬Çå¿ÕÁÙʱÏÂÔØÎļþ¡£
ʹÓÃChef ResourceʵÏÖϸ»¯ºóµÄ²½Öè ÿһ¸ö²½ÖèʹÓÃÒ»¸öChef ResourceʵÏÖ£¬´Ó¶øÏñ´®ÆðÒ»´®ÕäÖéÏîÁ´Ò»Ñù½«ËùÓв½Öè°´ÕÕ˳ÐòÏÎ½ÓÆðÀ´¡£Chef ResourceÊÇChefÌṩµÄÓÃÓÚʵÏÖÅäÖõIJÙ×÷Ãû³Æ¶¨Ò塣ÿ¸öResourceÌṩ¹Ì¶¨µÄ¼¸ÖÖ²Ù×÷¡£ÀýÈçϸ»¯Á÷³ÌÖеļì²éÓ²ÅÌ¿ÕÏпռ䣬¿ÉÒÔʹÓÃResource Ruby_blockÀ´ÊµÏÖ¡£Ruby±¾ÉíÌṩ¶Ôchef client »úÆ÷µÄ»úÆ÷¼ì²é£¬Äܵõ½µ±Ç°µÄÓ²ÅÌ¿ÕÏпռ䣬ʹÓÃResource Ruby_blockÀàÐÍ¿ÉÒÔ½«RubyÓï¾ä·âװΪһ¸öResource¶ÔÏó£¬ÔÚChefÔËÐÐʱִÐС£

available_space = node['filesystem']['C:']['kb_available'].to_i #for windows
ruby_block "raise_Not_Enough_Space" do
block do
Chef::Log.fatal("Software required #{node['iemagent']['disk_capacity'].to_i * 1024} KB, but the free space of file system is #{available_space} KB")
raise "Not_Enough_Space_Exception"
end
only_if {available_space < node['iemagent']['disk_capacity'].to_i * 1024}
end
ÔÚÏÂÔØIEM Agent°²×°°üʱ£¬Ö±½ÓʹÓÃResource Remote_fileÀàÐÍÌæ´úRubyÓï¾äÔ¶³ÌÏÂÔØÎļþ¡£
remote_file "#{node['iemagent']['download_path']}/#{node['iemagent']['package']}" do
source "#{node['iemagent']['packageServer']}/#{node['iemagent']['package']}"
owner node['iemagent']['root_user']
group node['iemagent']['root_group']
mode 00755
end
ÔÚ°²×°IEM Agent°²×°°üʱ£¬¾¡Á¿Ê¹ÓÃÒÑÓеÄResourceʵÏÖÈí¼þ°²×°£¬¶ø²»ÊÇʹÓÃÃüÁîÐа²×°·½Ê½¡£
windows_package 'IBM Endpoint Manager Client' do
source "#{node['iemagent']['download_path']}/#{node['iemagent']['package']}"
options '/s /v/qn'
installer_type :installshield
action :install
end

ͬÑùµÄ£¬¹ØÓÚChef×î¼Ñʵ¼ù£¬ÔÚʵÏÖrecipeʱ¾¡Á¿Ê¹ÓÃResource£¬¶ø²»ÊÇÖ±½ÓÔÚRecipeÖÐʹÓÃRuby´úÂë¡£³ýÁËÉÏÊöÌáµ½µÄʹÓÃRuby_blockÀàÐÍÍ⣬¿ÉÒÔʹÓÃ×Ô¶¨ÒåResourceºÍ¶ÔÓ¦µÄProviderÀ´·â×°ËùÐèÒªµÄRuby´úÂë¡£Chef ResourceÊǶÔijÖÖÀàÐ͵͍Ò壬¶¨ÒåÐèÒªÄÄЩ²ÎÊý£¬¿ÉÒÔÌṩÄÄЩ²Ù×÷µÈ¡£¶øProviderÓëResource¶ÔÓ¦£¬ÎªResourceÀàÐÍÌṩ±äÁ¿²ÎÊýµÄʹÓÃÒÔ¼°²Ù×÷µÄ¾ßÌ幦ÄÜʵÏÖ¡£

Chef CookbookµÄ²¿Êð·½·¨

ÔÚChef Cookbook/RecipeÍê³Éºó£¬ÐèÒª½«¸ÃCookbookÉÏ´«µ½Chef Server£¬Ê¹µÃ¸ÃCookbook±»×¢²á½øServer²¢±»Ê¹Óá£Ê¹ÓÃÏÂÃæµÄKnifeÃüÁîÉÏ´«Ð°汾µÄCookbook¡£

#knife cookbook upload <mycookbook-name> -o <directory to the parent of cookbook> ÉÏÊöKnifeÃüÁ·µ»ØÉÏ´«³É¹¦Ê§°ÜÐÅÏ¢¼°ÉÏ´«cookbookµÄ°æ±¾ÐÅÏ¢¡£ÕâÑù£¬Ò»¸öеÄcookbook¾Í²¿Êðµ½ÁËChef ServerÖС£µ«ÕâÒ²Ö»ÊDz¿Êðµ½Chef Server¡£Èç¹û×¼±¸ÔÚChef clientÉÏÖ´ÐÐÎÒÃǶ¨ÒåµÄcookbookÖеÄrecipe£¬»¹ÐèÒªÉèÖÃrun-listÀ´ËµÃ÷²¿ÊðʱÐèÒªÖ´ÐÐÄörecipeÒÔ¼°Ö´ÐÐ˳Ðò¡£ÕâÀï¾ÍÓÐÁ½ÖÖ²¿Êð·½Ê½£ºchef ¿Í»§¶Ë±¾µØ²¿ÊðÖ´ÐкÍchef ¹¤×÷Õ¾¶ËÔ¶³Ì²¿Êð¡£

1.chef¿Í»§¶Ë±¾µØ²¿ÊðÖ´ÐÐ

Èç¹ûÐèÒª¿Í»§¶Ë±¾µØÖ´Ðв¿Êð²Ù×÷£¬¾ÍÐèÒªÔ¤Ïȶ¨ÒåºÃÖ´ÐÐ˳Ðò£¬²¢½«Ö´ÐÐ˳Ðò¸³Óè¸ø¸Ã¿Í»§¶Ë¡£

ʹÓÃknife node run_list ÃüÁî¿ÉÒÔ¶Ôij¸ö½Úµã»òÕßchef ¿Í»§¶ËÌí¼Óɾ¼õrun_list¡£ÀýÈ磬ÉèÖð²×°´úÀíÈí¼þIEM AgentµÄrecipeÎļþinstall.rb¡£Ã¿Ò»¸örun_listÖеĵ¥ÔªÐèÒª¸ù¾Ý¸ñʽrecipe[cookbookname::recipe-name]À´Ìí¼Ó¡£

# knife node run_list add chef-client-1 "recipe[iemagent::install]"

ÉÏÊöÃüÁ»áΪchef ½Úµãchef-client-1Ìí¼ÓÒ»¸öÖ´ÐÐrecipe£¬²¢½«¸ÃÖ´Ðнڵ㰴ÕÕÌí¼Ó˳ÐòÒÀ´ÎÁÐÈëÖ´ÐÐ˳ÐòÁбíÖС£Èç¹ûҪɾ³ýij¸öÖ´Ðнڵ㣬¿ÉÒÔÖ´ÐÐ"knife node run_list delete <client name> "recipe[recipe name]" "À´É¾³ýÏàÓ¦µÄÖ´Ðнڵ㡣µ±²¿ÊðÐèÒªÒ»´ÎÐÔÖ´Ðжà¸örecipeʱ£¬¿ÉÒÔʹÓÃ"knife node run_list add <client name> "recipe[recipe name]" "°´ÕÕrecipeÖ´ÐÐ˳ÐòÒÀ´ÎÌí¼Ó£¬Ò²¿ÉÒÔ½«ËùÓдýÖ´ÐÐrecipe¶¨ÒåÔÚÒ»¸örole¶ÔÏóÖУ¬ÔÙ½«¸Ãrole¶ÔÏóÌí¼Óµ½½ÚµãÉÏ¡£

#vi ubuntu_servers.rb
name"ubuntu_servers"
description"The base role applied to all nodes."
run_list(
"recipe[iemagent::install]",
"recipe[iemagent::start]",
"recipe[iemagent::verify]"
)
# knife role from file ubuntu_servers.rb
#knife node run_list add chef-client-1 " role[ubuntu_servers]"

ÉÏÊöÃüÁ´´½¨Ò»¸örole¶ÔÏ󣬲¢ÔÚroleÖÐÉèÖÃÁËÖ´ÐÐÁÐ±í£¬È»ºó½«¸ÃroleÉÏ´«µ½Chef Serverʹ֮ÉúЧ£¬È»ºó½«Õâ¸öroleÀàÐ͸³¸ø½Úµãchef-client-1¡£ µ±ÉÏÊöËùÓеÄÔ¤±¸¹¤×÷Íê³Éºó£¬½øÈëchef ½Úµãchef-client-1£¬ÒÔ³¬¼¶Óû§È¨ÏÞÖ´ÐÐchef-clientÃüÁ¸Ãchef¿Í»§¶Ë½«×Ô¶¯Óëchef ·þÎñÆ÷ͬ²½Ïà¹ØµÄcookbook£¬²¢°²×°Ô¤Ïȶ¨ÒåµÄÖ´ÐÐÁбíÖ´ÐÐËùÓеÄrecipe¡£

2.chef ¹¤×÷Õ¾¶ËÔ¶³Ì²¿Êð

ʹÓÃknife bootstrapÃüÁî¿ÉÒÔÔÚchef¹¤×÷Õ¾Ô¶³ÌÖ´Ðв¿ÊðÃüÁî¡£Ö»ÐèÒªÃ÷°×Ä¿±ê¿Í»§»úµÄIPµØÖ·¡¢Óû§ÃûºÍÃÜÂëÒÔ¼°ssh¶Ë¿Ú£¬ÄÇô¾ÍÖ±½ÓÔÚchef¹¤×÷Õ¾Ö±½ÓÖ´ÐÐÒÔÏÂÃüÁî¡£

# knife bootstrap 192.168.10.130 -x root -P 'Ve22test' -r 'role[iem_install]'

ÉÏÊöÃüÁîÒªÇóIPµØÖ·Îª192.168.10.130µÄÄ¿±ê»úÆ÷£¬Ö´ÐÐrole[iem_install]ÖÐÖ´ÐÐÁÐ±í£¬°´ÕÕÖ´ÐÐÁбíÖеÄrecipe˳ÐòÖ´ÐС£ÕâÑùÓŵãÊDz»ÐèÒªÔڵǽµ½chef¿Í»§¶Ë£¬½«ËùÓÐÖ´ÐвÙ×÷¶¼ÔÚchef¹¤×÷Õ¾ÉÏÍê³É£¬ÉõÖÁ¿ÉÒÔ¶Ô¶ą̀¿Í»§¶Ë»úÆ÷½øÐв¿Êð¡£Èç¹ûÉÏÊöÃüÁîÐèÒªÖ´ÐÐһЩ±ØÒªµÄ´«²Î£¬ÄÇô¿ÉÒÔÉèÖÃdata_bagÀ´´«µÝÊý¾Ý¡£»òÕßÖ±½ÓÔÚknife bootstrapÃüÁîÖÐʹÓÃjsonÊý¾Ý½á¹¹À´´«µÝÐèÒªµÄ´«²Î£¬knife bootstrapÃüÁîÖ§³ÖÔÚÃüÁîÖÐʹÓòÎÊý-jÀ´Ð¯´øjsonÊý¾Ý¡£

Knife bootstrapµÄÓŵ㲢²»Ö»ÊÇÔ¶³ÌÖ´Ðв¿ÊðÃüÁî¡£¶ÔÓÚһ̨»¹Î´³ÉΪchef clientµÄÄ¿±ê»úÆ÷£¬knife bootstrap½«»áÔÚµÚÒ»´ÎÔËÐÐÊ±Ç¿ÖÆ°²×°chef client£¬²¢½«Ëû×¢²á³ÉΪһ¸öÓÐЧµÄchef¿Í»§»ú¡£Èç´Ë£¬Ê¹ÓÃknife bootstrapÃüÁî¾Í¿ÉÒÔ±ÜÃâÊÖ¶¯°²×°chef client²¢×¢²áclientµÄ²Ù×÷£¬´Ó¶øÎªÔËάÈËÔ±Ìṩ¸ü¸ßµÄЧÂÊ¡£

Knife bootstrap²¢²»Êǵ¥µ¥Ö»ÊÇÓÃÀ´²¿ÊðChef cookbookºÍÖ´ÐÐRecipe£¬Í¬Ñù¿ÉÒÔ¶ÔÄ¿±ê»úÆ÷½øÐÐÌØ¶¨µÄÅäÖòÙ×÷¡£Knife bootstrap»áÔ¤ÏÈÖ¸¶¨Ò»¸ö½Å±¾Ä£°æ£¬µ±knife bootstrapÃüÁîͨ¹ýsshÁ¬½Óµ½Ä¿±ê»úÆ÷ʱ£¬»á×Ô¶¯±àÒëÖ´Ðнű¾Ä£°æÄÚÈÝ¡£Knife bootstrapĬÈϵĽű¾Ä£°æÒÔerbΪºó׺£¬²¢¸ù¾Ý²»Í¬²Ù×÷ϵͳÉ趨²»Í¬½Å±¾Ä£°æ¡£Ä¬ÈÏÄ£°æÊ×ÏÈ»á¼ì²éÄ¿±ê»úÆ÷ÉÏÊÇ·ñÒѰ²×°Chef£¬Èç¹ûûÓа²×°¾Í´ÓChefÔ´½«¿Í»§¶Ë°²×°°üÏÂÔØ²¢°²×°µ½Ä¬ÈÏĿ¼£¬È»ºóÉèÖýű¾£¨successhandlerºÍerrorhandler£©½ÓÊÕ²¢´¦Àíchef¿Í»§¶ËÖ´ÐеĽá¹û£¬×îºóÆô¶¯chef¿Í»§¶Ë²¢Ö´Ðи³ÓèµÄRecipe¡£

ÎÒÃÇ¿ÉÒÔÒÔĬÈϽű¾Ä£°æÎª»ù´¡£¬Ìí¼Ó¶îÍâµÄ²¿Êð²Ù×÷£¬¾Í¿ÉÒÔÈÃÄ¿±ê»úÆ÷ĬÈÏÖ´ÐÐÕâЩ¶îÍâµÄ²¿Êð²Ù×÷¡£ÀýÈçÎÒÃÇÔÚ°²×°chef clientÖ®ºóÌí¼Óntpdate²Ù×÷£¬Ç¿ÖÆÄ¿±ê»úÆ÷Óëchef server½øÐÐntpdateͬ²½£»ÎÒÃÇÒ²¿ÉÒÔÉèÖÃÓÐЧµÄyumÔ´£¬ÐÞ¸ÄÄ£°æ£¬Ê¹Ä¿±ê»úÆ÷´ÓÖ¸¶¨µÄÓÐЧµÄyumÔ´ÏÂÔØ°²×°ÎÒÃÇÐèÒªµÄÈí¼þ¡£µ±½Å±¾Ä£°æÐÞ¸ÄÍê±Ï£¬ÉÏ´«µ½chef serverĬÈϵÄbootstrapĿ¼Ï£¬¾Í¿ÉÒÔÖ±½ÓʹÓÃÃüÁîÖ¸¶¨¸Ã½Å±¾Ä£°æ¡£

# knife bootstrap windows ssh 192.168.10.139 -x Administrator -P 'Ve22test' --distro windows-chef-client-msi.mine -r role[iem]

ÉÏÊöknife bootstrapÃüÁîÒÔssh·½Ê½½«½Å±¾Ä£°æwindows-chef-client-msi.mimeÄÚÈÝ·¢Ë͵½²Ù×÷ϵͳΪwindowsµÄÄ¿±ê»úÆ÷192.168.10.139£¬Í¬Ê±½«¸Ã½Å±¾Ä£°æ×ª»¯Îªwindowsʶ±ðµÄbat½Å±¾²¢´æÔÚÁÙʱĿ¼Ï£¬È»ºóÔÚÄ¿±ê»úÆ÷ÖÐÒÔdosÃüÁîÐз½Ê½Ö´ÐÐÉú³ÉµÄbat½Å±¾¡£

Chef CookbookµÄ±àÒëÓëÖ´ÐÐ

ËùÓеÄCookbookÔÚͬ²½µ½chef client×¼±¸Ö´ÐÐʱ£¬»áÓÐÒ»¸ö±àÒë²Ù×÷ºÍÖ´ÐвÙ×÷¡£±àÒë²Ù×÷»á½«RecipeÀïÃæÊ¹ÓõÄδ·â×°µ½ResourceÖеÄËùÓÐRubyÓï¾ä½øÐбàÒ룬Èç¹ûRubyÓï¾äÓÐÎÊÌ⣬ÄÇô½«»áÖ±½Ó×è¶Ï±àÒë²Ù×÷¡£RecipeÎļþÖеÄËùÓÐResource´úÂë¶ÎÒ²½«ÔÚ±àÒë½×¶Î±»±àÒë³ÉÒ»¸ö¸öResource¶ÔÏ󣬵«±àÒë½×¶Î²¢²»Éæ¼°ResourceÄڵľßÌåÖ´ÐС£ÔÚ±àÒëRecipeÍê³Éºó£¬ËùÓеÄResource¶ÔÏó½øÈëÔËÐн׶ΰ´ÕÕ´®Öé˳Ðò£¬Ò»¸öÒ»¸öÖ´ÐÐResource¶ÔÏó£¬Ö±µ½ËùÓÐResource¶ÔÏó¶¼±»Ö´ÐС£Èç¹ûÓÐÈκÎResourceÔÚÖ´Ðн׶ÎÒòΪ»úÆ÷״̬ÓëResourceÒªÇ󲻯¥Å䣬½«×è¶ÏÖ´ÐвÙ×÷²¢·µ»ØÊ§°Ü¡£ÀýÈçʹÓÃChef ResourceÖÐremote_fileÀàÐÍÈ¥ÏÂÔØ¿½±´Îļþ£¬Èç¹ûÔ¶³ÌĿ¼ÖеÄÎļþ²»´æÔÚ£¬¼´±íÃ÷»úÆ÷״̬Óë¸ÃResourceÒªÇóµÄ²»·ûºÏ£¬ÏÂÔØ²Ù×÷½«Ê§°Ü²¢×è¶ÏºóÐøµÄÖ´ÐвÙ×÷¡£

[root@sitechef1 zhyiqun]# knife bootstrap 9.2.139.103 -x root -P 'Ve22test' -r 'role[iem_install]' -j '{"iemagent":{"packageServer": "http://9.111.44.122/package/9.0.787.0", "version":"9.0.787.0", "redhat_x86_64":{ "package":"BESAgent-9.0.787.0-rhe5.x86_64.rpm", "disk_capacity":"100"}, "redhat_i386":{ "package":"BESAgent-9.0.787.0-rhe5.i686.rpm", "disk_capacity":"100"}, "win":{"package": "BigFix-BES-Client-9.0.787.0.exe", "disk_capacity": "100"}}, "affiliationgroup": "affiliationgroup", "list_relayServers":[ "9.2.139.53","9.2.139.63", "relay3", "relay4", "relay5", "relay6", "relay7"]}'

Connecting to 9.2.139.103
9.2.139.103 Starting first Chef Client run...
9.2.139.103 Starting Chef Client, version 11.4.0
9.2.139.103 resolving cookbooks for run list: ["iemagent::default"]
9.2.139.103 Synchronizing Cookbooks:
9.2.139.103 - chef_handler
9.2.139.103 - windows
9.2.139.103 - iemagent
9.2.139.103 Compiling Cookbooks...
......
9.2.139.103 Converging 23 resources
9.2.139.103 Recipe: iemagent::install
......
9.2.139.103 Recipe: iemagent::start
......
9.2.139.103 Recipe: iemagent::verify
......
9.2.139.103
9.2.139.103 Chef Client finished, 20 resources updated <-----------------means the chef client run successfully

½áÊøÓï

ͨ¹ýÒÔÉÏʵÀý£¬¶ÁÕß¿ÉÒÔ¿ìËٵضÔChef CookbookÔÚÔÆ¼ÆËãÆ½Ì¨ÖеÄ×÷Óü°¿ª·¢²¿ÊðÓÐÒ»¸öÁ˽⣬²¢¿ÉÒÔͨ¹ýʵÀýÖеķÖÎö»ñµÃһЩÌá¸ßChef¹¤¾ß²¿ÊðÐÔÄܵľ­Ñé¡£±¾ÎÄÖÐËùչʾµÄChef¿ª·¢¼¼Êõ¼°Óõ½µÄ¹¦ÄÜÌØÐÔ»¹½ö½öÊDZùɽһ½Ç£¬Ï£ÍûÄܹ»Æðµ½Ò»Ð©Å×שÒýÓñµÄ×÷Óã¬Îª¶ÁÕßÔÚÔÆ¼ÆËãºÍÐéÄ⻯µÈÁìÓòµÄ×Ô¶¯»¯ÔËά¹¤×÷ÖдøÀ´Ò»Ð©Æô·¢¡£

   
3001 ´Îä¯ÀÀ       29
Ïà¹ØÎÄÕÂ

DevOpsתÐÍÈÚÈëµ½ÆóÒµÎÄ»¯
DevOps ÄÜÁ¦Ä£ÐÍ¡¢Ñݽø¼°°¸ÀýÆÊÎö
»ùÓÚ DevOps ÀíÄîµÄ˽ÓÐ PaaS ƽ̨ʵ¼ù
΢Èí¿ª·¢ÍŶӵÄDevOpsʵ¼ùÆôʾ
Ïà¹ØÎĵµ

DevOpsÇý¶¯Ó¦ÓÃÔËά±ä¸ïÓë´´ÐÂ
ÔËά¹ÜÀí¹æ»®
ÈçºÎʵÏÖÆóÒµÓ¦Óò¿Êð×Ô¶¯»¯
ÔËά×Ô¶¯»¯Êµ¼ù֮·
Ïà¹Ø¿Î³Ì

×Ô¶¯»¯ÔËά¹¤¾ß£¨»ùÓÚDevOps£©
»¥ÁªÍøÔËάÓëDevOps
MySQLÐÔÄÜÓÅ»¯¼°ÔËάÅàѵ
ITϵͳÔËά¹ÜÀí