UNIX
ϵͳ¹ÜÀí×ÜÊÇÒ»¸ö¼¬ÊÖµÄÎÊÌ⣬ÔËÓÃÕýÈ·µÄ
¹¤¾ß»áʹÕâ¸öÎÊÌâ±äµÃÈÝÒס£ÔÚÕâÒ»²¿·ÖÖУ¬Teodor Ìá³öÁ˹ØÓÚʹÓà Perl À´¼ò»¯ºÍÀιÌ
ϵͳ¹ÜÀíµÄÏë·¨¡£ÔÚÕâÖÖ»·¾³ÖУ¬
ϵͳÅäÖÃÒýÇæ cfengine ÊÇÒ»¸ö¼«ÆäÖØÒªµÄ
¹¤¾ß¡£
ÒªÍê³É±¾ÎÄÖеÄÁ·Ï°£¬ÏµÍ³ÖбØÐë°²×°ÁË Perl 5.6.0¡£²Ù×÷ϵͳ×îºÃÊÇÖ÷Á÷ UNIX °²×°£¨
Linux¡¢Solaris¡¢BSD£©µÄ×î½ü°æ±¾£¨2000 »ò¸üУ©¡£ÔÚ½ÏÔç°æ±¾µÄ Perl ºÍ UNIX ÒÔ¼°ÆäËü²Ù×÷ϵͳÉÏÒ²¿ÉÒÔʹÓñ¾ÎÄÖеÄʾÀý£¬µ«Ó¦µ±½«¿ÉÄܵŦÄܹÊÕÏ×÷ΪÁ·Ï°À´
½â¾ö¡£
UNIX ¹ÜÀí¾ßÓÐÌôÕ½ÐÔµÄÒ»´óÔÒòÊÇÿ¸ö UNIX ¹©Ó¦ÉÌÈÏΪ±ê×¼ÊÇÕë¶ÔµÍÄÜɵ¹Ï¡£ËùÒÔ£¬¼´Ê¹ÊÇͬһ¹©Ó¦É̵IJÙ×÷ϵͳ£¨SunOS 4.x ºÍ Solaris 5.x£©Ò²¿ÉÒÔÊǸù±¾²»Í¬¡£ÔÚijЩÇé¿öÏ£¬ÉõÖÁ¸ù±¾Ã»Óй©Ó¦ÉÌ¡£ÀýÈ磬Linux ûÓе¥¶ÀµÄ¹©Ó¦ÉÌ£¨ËäÈ» Red Hat ĿǰÊÇ×î´óµÄ Linux ·Ö·¢°æ£©£¬Ã¿Ò»¸ö°æ±¾µÄ Linux ¶¼ÓÐÆä¶Àµ½Ö®´¦¡£Èç¹û POSIX ±ê×¼»¯×öµÃÕýÈ·£¬ÄÇôËüÊǽâ¾öÕâÒ»ÎÊÌâµÄÕýÈ··½ÏòÉϵÄÒ»¸ö²½Öè¡£Òź¶µÄÊÇ£¬ËüÖ»Äܱ£Ö¤ÏµÍ³¹ÜÀíËùÐ蹦ÄܵÄÒ»¸öСµÄ×Ó¼¯¡£
ÕýÈçÎÒ¾³£Ëù˵£ºÁ˽âÄúµÄ¹¤¾ß¡£Èç¹ûÊÔͼ½öÓÃÒ»ÖÖ¹¤¾ß¡¢ÓïÑÔ¡¢»ò·½·¨×öÿ¼þÊÂÇ飬¿ÉÄÜÊÇÒ»³¡Ø¬ÃΡ£Òª¾ßÓÐÁé»îÐÔ¡£
Èç¹û´æÔÚÒ»¸öϵͳ¹ÜÀí¹«Àí£¬ÄǾÍÊÇ£ºÁ½´Î¹ýºó£¬Ã»ÓÐϵͳ¹ÜÀíÈÎÎñÊÇÓÐȤµÄ¡£Èç¹ûÄú·¢ÏÖÕýÔÚÖØ¸´×öµ¥µ÷¶ø¿ÝÔïµÄÊ£¬ÄÇô×Ô¶¯»¯Ëü¡£µ±È»£¬ÓÐʱºÜÄÑ×Ô¶¯»¯£¬µ«Ó¦¸ÃÖÁÉÙ¿¼ÂÇÕâ¸öÎÊÌ⣬²¢ÇÒȨºâÆäÓÅÊÆ¼°×Ô¶¯»¯Ëù»¨·ÑµÄʱ¼ä¡£
cfengine ¹¤¾ß
Èç¹ûÄú¶Ô×Ô¶¯»¯ÏµÍ³¹ÜÀíÊÇÈÏÕæµÄ£¬ÄÇôӦ¸ÃÁ˽â cfengine ¹¤¾ß¡£½öµ±ÄúÄþÔ¸°Ñʱ¼ä¶¼»¨ÔÚ vi ±à¼Æ÷ʱ£¬¿ÉÒÔ²»È¥Á˽â cfengine ¡£
cfengine ÊÇÒ»ÖÖϵͳÅäÖÃÒýÇæ¡£Ëü»ñÈ¡ÅäÖýű¾×÷ΪÊäÈ룬Ȼºó¸ù¾ÝÕâЩ½Å±¾À´Ðж¯¡£Ä¿Ç°°æ±¾ÊÇ 1.6.3£¨·Ç³£Îȶ¨µÄ·¢Ðа棩£¬¶øÇÒ°æ±¾ 2.0 Ò²ºôÖ®Óû³ö¡£ÓÐ¹Ø cfengine ¿ª·¢µÄ¸ü¶àÐÅÏ¢£¬Çë
·ÃÎÊ cfengine ÍøÕ¾£¨Çë²ÎÔı¾ÎĺóÃæµÄ ²Î¿¼×ÊÁÏ£©¡£
²»Ò»¶¨ÒªÓà cfengine ÌṩÄúµÄËùÓж«Î÷£¬¶øÇÒÄú²»¿ÉÄÜÁ¢¿ÌÐèÒªËùÓж«Î÷¡£Ò»¿ªÊ¼Ê±£¬ÄúµÄ cfengine ÅäÖÃ
ÎļþÓ¦¸ÃºÜ¼òµ¥£¬²¢ÇÒËæ×Å·¢ÏÖ¸ü¶à¶«Î÷Ï£Íû×Ô¶¯»¯¶øÔö³¤¡£
À´×Ô cfengine
ÃüÁî²Î¿¼´óÈ«£¬ÕâÀïÓÐÆä×îÖµµÃ×¢ÒâµÄÌØÐÔ£º
* ¿ÉÒÔ¼à¿ØºÍÐÞ¸ÄÎļþÐí¿ÉȨºÍ ACL¡£ÀýÈ磬/etc/shadow ¿ÉÒÔÓë 0400/root/sys Ðí¿ÉȨ±£³ÖÒ»Ö£¬¶øÇÒÈç¹ûÄÇЩÐí¿ÉȨ·¢Éú±ä»¯£¬¿ÉÒÔ¾¯¸æÏµÍ³¹ÜÀíÔ±»ò¼´¿Ì¾ÀÕýËüÃÇ¡£
* ¸ù¾ÝÏàÓ¦ fstab ±ä»¯£¬¿É×Ô¶¯°²×°ºÍÐ¶ÔØ NFS Îļþ¡£
* ¿ÉÒÔͨ¹ýµ¥Ò»ÎļþÀ´¹ÜÀí×ÓÍøÑÚÂë¡¢DNS ÅäÖá¢È±Ê¡
·ÓɺÍÖ÷
ÍøÂç½Ó¿Ú£»
* ÎļþºÍĿ¼¿ÉÒÔµÝ¹é¸´ÖÆÖÁÁíһλÖã¬ÒªÃ´±¾µØ¸´ÖÆ£¬ÒªÃ´´ÓÔ¶³Ì
·þÎñÆ÷¸´ÖÆ¡£
* ¿ÉÒԱ༣¨ÕâÊÇÒ»¸ö ·Ç³£Ç¿´óµÄÌØÐÔ£¬ÌṩÁËÕýÔò±í´ïʽºÍÈ«¾Ö²éÕÒ£¯Ìæ»»£©¡¢ÂÖת£¨Æ©È磬ÈÕÖ¾Îļþ£©»òɾ³ýÎļþ¡£
* ¿ÉÒÔÁ´½ÓÎļþ£¨µ¥Ò»µÄºÍ£¯»òĿ¼ÏµÄËùÓÐÎļþ»òÓëÕýÔò±í´ïʽƥÅäµÄÎļþ£©ºÍÕû¸öĿ¼¡£
* ¿ÉÒÔ¸ù¾Ý½ø³Ì±íÖÐÕýÔò±í´ïʽµÄÆ¥ÅäÀ´Æô¶¯¡¢É±ËÀ¡¢ÖØÆô½ø³Ì»ò·¢ËÍÈÎÒâÐźš£
* ¿ÉÒÔÔËÐÐÈÎÒâÃüÁî¡£
* ÉÏÊöËùÓÐÕâЩ¸ù¾Ý²Ù×÷ϵͳÀàÐͺÍÐÞ¶©°æ±¾¡¢Ò»ÌìÖеÄʱ¼ä¡¢ÈÎÒâ
Óû§¶¨ÒåµÄÀà¡¢ÎļþÖÐÎļþ¡¢Ä¿Â¼»òÊý¾ÝµÄÓÐÎ޵ȵȿÉÒÔÊÇÓÐÌõ¼þµÄ¡£
¼´Ê¹Óà Perl ¿ÉÒÔ×ö cfengine Ëù×öµÄËùÓÐÊÂÇ飬ΪʲôҪ´ÓÍ·¿ªÊ¼ÄØ£¿ÀýÈ磬Èç¹ûÏëÓÃÁíÒ»¸ö´ÊÌæ»»Ä³¸ö´Ê£¬±à¼Îļþ¿ÉÒÔÊǼòµ¥µÄÒ»ÐÐ
³ÌÐò¡£µ±¿ªÊ¼ÔÊÐíϵͳµÄ×ÓÀàÐÍ¡¢Â߼ϵͳ²¿·ÖÒÔ¼°ËùÓÐÆäËüÔÓÏîÒòËØÊ±£¬ÕâÒ»ÐÐ
³ÌÐò»á±ä³É 300 ÐС£ÎªÊ²Ã´²»ÔÚ cfengine ÖÐ×öÄØ£¿Ëü²úÉú 100 ÐпɶÁµÄÅäÖôúÂë¡£
¸ù¾ÝÎÒ×Ô¼ºµÄ¾Ñ飬ÒòΪ¿ÉÒÔ´Ó×îСÅäÖÃÎļþ¿ªÊ¼£¬È»ºóËæ×Åʱ¼äÁ÷ÊÅÖð²½µØÏò cfengine Ìí¼ÓһЩ¶«Î÷£¬ËùÒÔ½« cfengine ½éÉܸøÕ¾µãÊǺÜÈÝÒ׵ġ£Ã»ÓÐÈËϲ»¶Í»È»µÄ±ä»¯£¬ËùÓÐϵͳ¹ÜÀíÔ±¸üÊÇÈç´Ë£¨ÒòΪÈç¹ûÈκÎʳö´í£¬ËûÃÇÀíËùµ±È»µØ»áÊܵ½ÔðÄÑ£©¡£
ÅäÖÃÎļþ¹ÜÀí
¹ÜÀíÅäÖÃÎļþÊǼè¿àµÄ¡£¿ÉÒÔͨ¹ý¿¼ÂÇ cfengine ÊÇ·ñʤÈθÃÈÎÎñ¿ªÊ¼¡£Òź¶µÄÊÇ£¬ cfengine µÄ±à¼ÊÇÃæÏòÐеģ¬ËùÒÔËü¿ÉÄܲ»Ì«Êʺϸ´ÔÓµÄÅäÖÃÎļþ¡£µ«¶ÔÓÚÈç
TCP °ü×°Æ÷ÅäÖÃÎļþ /etc/hosts.allow ÄÇÑùµÄ¼òµ¥Îļþ cfengine ÊÇ×îÊʺϵġ£
ͨ³££¬Ï£Íû±£ÁôÅäÖÃÎļþµÄ¶à¸ö°æ±¾¡£Æ©È磬¿ÉÄÜÐèÒªÔÚ /etc/resolv.conf ÖÐÓÐÁ½×é DNS ÅäÖÃ
ÉèÖã¬Ò»×éÊÇÓÃÓÚÍⲿ»úÆ÷£¬ÁíÒ»×éÊÇÓÃÓÚÄÚ²¿»úÆ÷¡£ºÜ×ÔÈ»£¬Íⲿ DNS resolv.conf ¿ÉÒÔ½øÈë³ÆÎª "external" µÄĿ¼£¬¶øÄÚ²¿ resolv.conf ¿ÉÒÔ½øÈëÏàÓ¦µÄ "internal" Ŀ¼¡£ÈÃÎÒÃǼٶ¨ÕâÁ½¸öĿ¼¶¼ÔÚÒ»¸öÈ«¾Ö "spec" Ŀ¼Ï£¬¸ÃĿ¼ÊÇÅäÖÃÎļþµÄÒ»ÖÖ¸ùĿ¼¡£
ÏÂÁдúÂë»á±éÀú spec Ŀ¼£¬ËÑË÷ÊʺÏÓÚ¸ø¶¨»úÆ÷µÄÎļþÃû¡£Ëü½«´Ó /usr/local/spec ¿ªÊ¼£¬È»ºóÍùÏ£¬Ñ°ÕÒÓëÇëÇóÏàÆ¥ÅäµÄÎļþ¡£¶øÇÒ£¬Ëü½«¼ì²éÿ¸öĿ¼µÄÃû³ÆÊÇ·ñÓëÊôÓÚijЩ»úÆ÷µÄÀàÏàͬ¡£Òò´Ë£¬Èç¹ûÎÒÃÇÇëÇó locate_global('resolv.conf', 'wonka') £¬¸Ãº¯Êý½«ÔÚ /usr/local/spec Ŀ¼Ï²éÕÒ resolv.conf Îļþ£¬¸ÃÎļþҪôÔÚ¸ùĿ¼Ï£¬ÒªÃ´ÔڸøùĿ¼µÄ×ÓĿ¼Ï£¬ËüµÄÃû³ÆÓ¦Óë "wonka" »úÆ÷ËùÊôµÄÀàÏàÆ¥Åä¡£ËùÒÔ£¬Èç¹û "wonka" ÊôÓÚ "chocolate" À࣬²¢ÇÒÈç¹ûÓÐ /usr/local/spec/chocolate/resolv.conf Îļþ£¬ÄÇô locate_global() ½«·µ»Ø "/usr/local/spec/chocolate/resolv.conf"¡£
http://127.0.0.1:8080/developerw ... lture-5/index.shtml locate_global() ÕÒµ½ÓëÎļþÏàÆ¥ÅäµÄ¶à¸ö°æ±¾£¨Æ©È磬/usr/local/spec/chocolate/resolv.conf ºÍ /usr/local/spec/resolv.conf£©£¬ÔòËü»á·ÅÆú¡£ÕâÀï¼ÙÉèûÓÐÅäÖñÈÓÐÁ½¸ö´íÎóÖ®Ò»ÒªºÃ¡£»¹ÓУ¬Çë×¢Ò⣬»úÆ÷¿ÉÒÔÊôÓÚ²»Ö¹Ò»¸öÀà¡£
¿ÉÒÔ¹¹½¨ÕâÑùµÄ½á¹¹¡£Æ©È磬
* /usr/local/spec/external/chocolate/resolv.conf
* /usr/local/spec/internal/chocolate/resolv.conf
* /usr/local/spec/external/sugar/resolv.conf
* /usr/local/spec/internal/sugar
½«°üº¬ÍⲿºÍÄÚ²¿ "chocolate" ÒÔ¼° "sugar" »úÆ÷µÄÎļþ¡£Ö»ÐèÒªÕýÈ·µØÉèÖà your machine_belongs_to_class() º¯Êý¡£
Ò»µ© locate_global() ·µ»ØÒ»¸öÎļþÃû£¬½«ËüÓà scp »ò rsync ¸´ÖÆÖÁÔ¶³ÌϵͳÊÇÏ൱¼òµ¥µÄ¡£Çë¼Çס£¬×ÜÊÇÒª±£³Ö¸ÃÎļþµÄÐí¿ÉȨºÍÊôÐÔ¡£scp ÐèÒª "-p" ±êÖ¾£¬rsync ÐèÒª "-a" ±êÖ¾¡£²éÔÄÏëҪʹÓõÄÎļþ¸´ÖÆÃüÁîµÄÎĵµ¡£ÕâÑù¾ÍÓÐÁËÒ»¸öͳһµÄÅäÖÃÎļþÊ÷¡£