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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
ÉîÈëSaltStack
 
 À´Ô´£º51cto²©¿Í ·¢²¼ÓÚ 2016-9-13
  4759  次浏览      27
 

¶Ôϵͳ¹¤³ÌʦÀ´Ëµ£¬ÅäÖùÜÀíÒѾ­ÏòǰԾ½øÁËÒ»´ó²½. ϵͳÅäÖõÄ×Ô¶¯»¯²»½ö¿ÉÔ¤²â,¿ÉÖØ¸´, »¹¾ßÓпɹÜÀíÐÔ. ÅäÖùÜÀí¹¤¾ßͨ³£Ê¹Óð汾¿ØÖÆ»¯µÄÅäÖÃÄ£°åÀ´ÃèÊö»ù´¡ÉèÊ©µÄÄ¿±ê״̬¡£Æ¾½è°æ±¾¿ØÖÆ»¯µÄÅäÖ㬿ÉÒÔ½«»·¾³»Ø¹ö£¨»òǰ¹ö£©µ½Ç°Ã棨»òºóÐò£©×´Ì¬£»»·¾³ÅäÖÃÎļþµÄ×Ô¶¯»¯¹ÜÀíÒ²ÊdzÖÐø***¸¶¹ÜµÀµÄ±ØÒªÌØÐÔ¡£

CFEngine, PuppetºÍChef(°´ÄêÁä½µÐò)ÊÇ¿ªÔ´ÁìÓòÁ÷ÐеÄÅäÖùÜÀí¹¤¾ß¡£ ÎÒÊÇÒ»¸öPuppetµÄ³¤ÆÚÓû§, Óë×Ô¶¨ÒåµÄÅäÖýű¾Ïà±È£¬ËüÔÚϵͳ×Ô¶¯»¯µÄ×éÖ¯ÐԺͿɿ¿ÐÔ·½Ãæ´øÀ´Á˾޴óµÄÌáÉý¡£(ÎÒÊÇÔÚ2009Äê×÷³öÕâÒ»´Î·ÉÔ¾£¬Óë´ËÏà±È, ÒÔǰµÄÈÕ×Ó¼òÖ±ÊÇ»ìÂÒ²»¿°…).

ËäÈ»ÅäÖùÜÀí¹¤¾ß¾«ÓÚÃèÊö²¢´ïµ½ÏëÒªµÄ״̬, µ«²¢²»É󤶯̬µØ²éѯ»òÉèÖÃ״̬. ÕâÒ»µãÔÚ״̬×ÊÔ´»¹Ã»Óб»ÄÉÈëÅäÖùÜÀíÊ±ÌØ±ðÃ÷ÏÔ¡£Llinuxϵͳ¹ÜÀíÔ±µÄ´«Í³½â¾ö°ì·¨ÊÇsshÑ­»·µÇ½½ÚµãÁÐ±í²¢Ö´ÐÐÒ»¶ÑÃüÁî¡£Õâ²»½öÈÝÒ׳ö´í, ÇÒÿһ´ÎÑ­»·¶¼Òª´ò¿ªÐµÄssh»á»°£¬Ð§ÂʵÍÏ¡£ÏëÏñÒ»ÏÂÒªÔÚ1000̨»úÆ÷ÉÏ˳ÐòÖ´ÐÐÃüÁ¸ü²»ÓÃËµÍøÂ簲ȫ£¬sshÃÜÔ¿ºÍÃüÁîÖ´ÐÐȨÏÞµÄÎÊÌâ¡£Õ⵱ȻÊÇÒ»ÖÖ¿ÉÐеİ취,µ«È±ÉÙÒ»ÖֿɹÜÀíµÄ¿ò¼Ü¡£

Õâ¾ÍÊÇÃüÁî±àÅŹ¤¾ß²úÉúµÄÔ­Òò¡£ÕâЩ¹¤¾ßÖ¼ÔÚ´óÁ¿µÄ½ÚµãÉϲ¢ÐÐÖ´ÐÐÃüÁîºÍʵʱ²Ù×÷¡£CFEngine, PuppetºÍChef¸÷×ÔÓò»Í¬µÄ·½·¨À´½â¾öÃüÁî±àÅÅÎÊÌâ¡£PuppetʹÓÃMCollective×÷ΪÆäÎäÆ÷,²¢½«Æä¼¯³Éµ½ÉÌÒµ°æÖС£

½üÀ´£¬ÎÒ¿ªÊ¼Ì½Ë÷ʹÓÃSaltStackÀ´½â¾öÅäÖùÜÀíºÍÃüÁî±àÅÅÕâÁ½¸öÎÊÌâ¡£SaltStack¿ªÊ¼ÓÚ2011Ä꣬ÊÇÒ»¸öÏà¶Ô½ÏеÄÏîÄ¿£¬µ«ÔÚϵͳ¹ÜÀíÔ±ºÍDevOps¹¤³ÌʦÖÐÓµÓÐÔ½À´Ô½¶àµÄ·ÛË¿¡£ÎÒ½«ÔÚ±¾ÎÄÖÐ̽ÌÖSalt×÷Ϊǰ;¹âÃ÷µÄÌæ´úÕߣ¬²¢ÓëPuppet×÷±È½ÏÒÔ̽Ë÷ÆäÌØÐÔ¡£

°²×°

´´ÊÀÖ®³õ£¬ÂúÊǿհ׺ÍÎÞÐò£¬ºÚ°µÁýÕÖ×ÅÕû¸öϵͳ……È»ºóÉñ°²×°ÁËÅäÖùÜÀíÆ÷£¬ÓÚÊÇÑô¹âÆÕÕÕ£¡Î¨Ò»µÄÂé·³ÊÇ£¬ÎÒÃÇ»¹ÐèÒª°²×°ÒÀÀµ……È»ºóÅäÖùÜÀíÆ÷±¾Éí»¹µÃ±»ÅäÖÃ……²¢ÇÒÓÐʱÊÂÇé»áÓÐÄÇôһµã³óª¡£

SaltÔÚUbuntuºÍCentOSÉϵݲװ¹ý³ÌÒì³£¼òµ¥,ÎÒÏàÐÅÔÚÓа²×°Ö¸ÄϵıðµÄϵͳҲһÑù (Arch Linux, Debian, Fedora, RedHat, CentOS, FreeBSD, Gentoo, Windows, Solaris). YMMV. µäÐͰ²×°¹ý³ÌÒþ²ØÁ˲»±ØÒªµÄϸ½ÚÅäÖ㬳ý·ÇÄãÐèÒªÐÞ¸ÄËûÃÇ¡£Ê×ÏȰ²×°salt master£¬È»ºó°²×°salt minions, ½«minionsÖ¸Ïòmaster£¬°²×°Íê³É¡£Èç¹ûsalt masterµÄÖ÷»úÃûÊÇ"salt"£¬¶¼²»ÐèÒª½«minionsÖ¸Ïòmaster£¬Ö±½Ó¾Í¿ÉÒÔÔËÐС£

È»¶ø, Èç¹ûÄã²»ÊÇʹÓÃÉÏÃæÌáµ½µÄ·¢Ðаæ»ò²Ù×÷ϵͳ, ÄãºÜ¿ÉÄÜÐèÒª¾íÆðÐä×Ó×Ô¼ºÊÖ¶¯°²×°Ò»Ð©ÒÀÀµ¡£°üÀ¨Python (>= 2.6 < 3.0), ZeroMQ, pyzmq, PyCrypto, msgpack-pythonºÍYAMLµÄPython°ó¶¨.

ÁíÒ»·½Ãæ, PuppetÔÚ¶àÊý»ù´¡°²×°Ê±Ö»ÒÀÀµRubyºÍFacter, ÒÀÀµ´øÀ´µÄÂé·³ÏÔÖø¼õÉÙ. È»¶ø£¬PuppetµÄÒÀÀµÁбí¿ÉÒÔ½øÒ»²½Ôö¼Ó£¬°üÀ¨augeas-libs, dmidecode, hiera, libselinux-ruby, pciutils, ruby-augeas, ruby-irb, ruby-rdoc, rubygem-json, ruby-shadow, rubygems. ÕâÈ¡¾öÓÚPuppetµÄ°æ±¾ºÍÄãÏëҪʹÓõŦÄÜ¡£

ÎÒϲ»¶Salt°ü°²×°µÄ¼òµ¥Ã÷ÁË¡£For the cases mentioned it is trivial to set up and get going. Èç¹ûÄãÏëÇ××Ô°²×°ºÍÅäÖõķ±¹ý³Ì, ¸ú×Ű²×°Ö¸ÄÏ×ö¼´¿É¡£

If you are like me though and you prefer your provisioning and configuration all in one gift wrapped package, que Vagrant to the rescue and download this project by elasticdog on github.

ÅäÖùÜÀí

ÅäÖÃ״̬

ÅäÖùÜÀí¶ÔPuppetÀ´ËµÊÇС²ËÒ»µþ£¬¶ÔSaltÓÖÈçºÎÄØ¡£ÈÃÎÒ£¨¸ßÐ˵쩾ªÑȵÄÊÇ£¬Õâ¼þʼòµ¥µ½ÁîÈË·¢Ö¸¡£ºÍPuppetÒ»Ñù£¬ÔÚSaltÖпÉÒÔÃèÊöϵͳµÄÄ¿±ê״̬¡£. Salt½«Æä³ÆÖ®ÎªÒ»¸östate, ÅäÖÃÄ£¿éÊÇstateÄ£¿é¡£SaltµÄStateÄ£¿éÎļþÓÃYAMLд³É£¬ÒÔ.sls½áβ¡£ËüÃÇ´Ó¹¦ÄÜÉϵÈͬÓÚPuppetÄ£¿éµÄmanifestÎļþ£¬ºóÕßÓÃPuppet DSLд³É£¬ÒÔ.pp½áβ¡£

SaltÔÚmasterµÄÅäÖÃÎļþÖÐÖ¸¶¨"file roots", ÀàËÆÓÚPuppetµÄ"module path", µ«Í¬Ê±°üº¬ÁËÄ£¿é¸ùĿ¼ºÍ»·¾³ÀàÐÍ¡£¾ÙÀýÀ´Ëµ£¬ÔÚSaltÖÐÎÒÃÇ¿ÉÒÔ·Ö±ðÖ¸¶¨developmentºÍtest»·¾³ÅäÖÃÎļþ·¾¶. ×¢Òâbase»·¾³ÊDZØÐë´æÔڵġ£

file_roots:        base:   
- /srv/salt/ dev:
- /srv/salt/dev prod:
- /srv/salt/prod

base»·¾³±ØÐë°üº¬SaltµÄÈë¿ÚtopÎļþ(½Ð×ötop.sls).base¶¨ÒåÁËÒ»¸ö»ò¶à¸ö»·¾³£¬ÓÃÕýÔòÀ´Æ¥Åä½Úµã£¬È»ºóÒýÓÃÏàÓ¦µÄSalt states. topÎļþÓëPuppetµÄnodesÎļþÏàËÆ¡£(PuppetÈë¿ÚµãÊÇsiteÎļþ,ÔÚSaltÖв»ÐèÒª).

¼ÙÉèÓÐÒ»¸öSalt masterºÍÁ½¸öminions (ÓÉElasticdog githubÌṩ)£¬ÎÒÏëÒªÔÚÁ½¸öminionsÉϰ²×°mongodb¡£Èç¹ûÔÚĬÈϵÄÈí¼þ²Ö¿âÖÐÓÐmongodb°ü£¬Ö»ÐèÒª3²½¼´¿É¡£

1, ÔÚtop.slsÖÐÖ¸¶¨½Úµã¡£

dev:   'minion*.example.com':      - mongodb

2, ÔÚdev/mongodb.slsÖÐÃèÊö״̬:

mongodb:     pkg:      - installed

3, ´«µÝ״̬µ½salt minions:

# salt 'minion*' state.highstate -v 
Executing job with jid 20121218102842533621 --------
minion1.example.com: ---------- State: - pkg Name:
mongodb Function: installed Result: True Comment:
Package mongodb installed Changes: libicu:
{'new': '3.6-5.16.1', 'old': ''} mongodb:
{'new': '1.6.4-1.el5', 'old': ''} boost:
{'new': '1.33.1-15.el5', 'old': ''}
js: {'new': '1.70-8.el5', 'old': ''}
minion2.example.com:
---------- State:
- pkg Name: mongodb Function: installed Result:
True Comment: Package mongodb installed Changes: libicu:
{'new': '3.6-5.16.1', 'old': ''} mongodb:
{'new': '1.6.4-1.el5', 'old': ''}
boost: {'new': '1.33.1-15.el5', 'old': ''}
js: {'new': '1.70-8.el5', 'old': ''}

ÅäÖÃÃèÊöÎļþÓëPuppet·Ç³£ÏàËÆ¡£µ«¸ñʽ²î±ðºÜ´ó¡£ÕâÊÇÒòΪPuppetʹÓÃ×Ô¼ºµÄruby-like DSL, ¶øSaltʹÓÃYAML. ÕýÊÇÓÉÓÚÕâµã²»Í¬£¬Ôì¾ÍÁËSalt stateÅäÖÃÎļþÔÚÊÓ¾õÉϵļò½àÐÔ¡£YAML¶ÔÈËÀà¿É¶ÁÒ²ÈÝÒ×±»Ó³Éäµ½Êý¾Ý½á¹¹, ·Ç³£ÊʺÏ×öÅäÖùÜÀíÖеÄ×ÊÔ´ÃèÊö¡£Õâ²»ÊÇ˵Puppet DSL²»ÇåÎú»ò²»½á¹¹»¯- it is neither - µ«ºÜÄÑʤ¹ýYAML. YAML¿ÉÒÔ¿ìËÙд³É£¬ÔÚÎҵľ­Ñé¿´£¬±ÈPuppet DSLÒªÈÝÒ×Éú³É.

×¢Òâ: ÅäÖùÜÀíÉçÇø¹ØÓÚÉùÃ÷ÅäÖõÄ×î¼Ñ·½Ê½Ò»Ö±´æÔÚÕùÂÛ¡£²¿·ÖÈËÇàíùÓÚÀûÓñà³ÌÓïÑÔ£¨±ÈÈç˵Ruby£©µÄÁé»îÐÔ¡£ChefÊÇÆäÖеĴú±í¡£Puppet´¦ÓÚÖÐ¼äµØ¶Î¡£µ±Ê¹ÓÃÏֳɵŦÄÜʱ£¬Puppet DSL·Ç³£Ç¿´ó¡£µ«Òª¸øÅäÖÿª·¢Õ߸ü´óµÄÄÜÁ¦£¬¾Í±ØÐëʹÓÃÄÚ²¿µÄRuby DSL¡£ÔÚ²¨Æ×µÄÁíÒ»¶Ë£¬SaltµÄ¼òµ¥YAML״̬ÃèÊö·Ç³£½á¹¹»¯¡£È»¶ø£¬SaltÒ²Ö§³ÖäÖȾÖîÈçJSON, Mako, WempyºÍJinjaÀ´À©Õ¹ÆäÄÜÁ¦, ÔÚ½«À´»¹»áÖ§³ÖXML,Ô­ÉúPython¼°ÆäËû¡£

ÄÚÖõÄstateÄ£¿é

ÎÒÖªµÀSaltÊDZÈPuppet½üµÄÏîÄ¿£¬ ÎÒÍêÈ«¿ÉÒÔÔ¤Áϵ½²»»áÓÐÌ«¶à¿ÉÓõÄÄÚÖÃÄ£¿é¡£ÎÒ´íÁË: SaltÓдóÁ¿µÄÄÚÖÃÄ£¿é£¬°üº¬PuppetÖеĴ󲿷ֱØÒªÄ£¿é±ÈÈç cron, exec (SaltÊÇcmd), file, group, host, mount, package (SaltÖÐÊÇpkg), service, ssh_authorized_key (SaltÊÇssh_auth)ºÍuser¡£

¾¡¹ÜÈç´Ë, PuppetÈÔÈ»¾ßÓв¿·ÖÓÅÊÆ¡£±ÈÈç, Îҷdz£Ï²»¶PuppetµÄAugeasÄ£¿é¡£Augeas°ÑÄÚÈݵ±×÷valueÊ÷£¬ÔÊÐíÄãÐÞ¸Ä(¶ø²»ÊǸ²¸Ç)Ò»¸öÒÑ´æÔÚµÄÅäÖÃÎļþ¡£

ËäÈ»SaltÓÐÒ»¸öAugeas executionÄ£¿é£¬µ«ºÜ²»ÐÒÃ²ËÆÃ»ÓÐAugeasµÄstateÄ£¿é¡£ËäÈ»ÕâÑù£¬SaltÒ²ÓÐһЩ×Ô¼ºÌØÓеĶ«Î÷£¬±ÈÈçÕë¶Ôgit, hgºÍsvnµÄÄÚÖÃstateÄ£¿é.

Ä£°å

Puppet¾ßÓпªºÐ¼´ÓõÄÄ£°åϵͳ¡£PuppetÓÐfile×ÊÔ´ºÍtemplate×ÊÔ´µÄ¸ÅÄÕâЩ×ÊÔ´·Ö²¼ÔÚÄ£¿éĿ¼½á¹¹µÄ²»Í¬Â·¾¶Ï¡£ÔÚSaltÖÐ, filesºÍtemplatesÔÚͬһ¸öλÖá£Í¨¹ýΪtemplateÖ¸ÁîÖ¸¶¨typeÀ´Çø·ÖÊÇtemplate»¹ÊÇÆÕͨÎļþ×ÊÔ´, type¿ÉÒÔÊÇjinja, mako»òwempy¡£ºÃ´¦ÊÇ¿ÉÒÔºÜÈÝÒ×Ϊfile×ÊÔ´Ôö¼ÓÂß¼­¡£stateÎļþ¿ÉÄÜ¿´ÆðÀ´ÏñÏÂÃæÕâÑù£º

/etc/myapp.conf: file.managed: 
- source: salt://files/myapp.conf - mode:
644 - owner: root - group:
root - template: jinja

×¢Òâ×îºóÒ»ÐÐ, Ö¸Ã÷±»¹ÜÀíµÄÎļþÊÇÒ»¸öjinjaÄ£°å¡£

ÅäÖÃÎļþ¿ÉÒÔʹÓÃjinjaµÄÓï·¨À´Ôö¼ÓÂß¼­¡£¾ÙÀýÀ´Ëµ, ¼ÙÉèÄãµÄÓ¦ÓóÌÐòÅäÖÃÎļþÖÐÓõ½ÁËÖ÷»úÃû¡£ÔÙ¼ÙÉèÔÚUbuntuh Ö»ÐèÒª¶ÌÖ÷»úÃû£¨hostname£©£¬ÔÚCentOSÐèÒªFQDN¡£Õâ¿ÉÒÔºÜÈÝÒ×µØÔÚÄ£°åÎļþmyapp.confÖÐÖ¸¶¨:

{% if grains['os'] == 'Ubuntu' %} 
host: {{ grains['host'] }}
{% elif grains['os'] == 'CentOS' %}
host: {{ grains['fqdn'] }}
{% endif %}

ÔÚCentOS½Úµãminion1ÉϽá¹ûÎļþ/etc/myapp.conf½«°üº¬ÒÔÏÂÄÚÈÝ

host: minion1.example.com

±äÁ¿

SaltÖеÄÈ«¾Ö±äÁ¿²»ÄÜÔÚʹÓÃʱ¶¨Òå¡£ÔÚ¶Ô±äÁ¿µÄÖ§³Ö·½ÃæPuppet¸ü¼ÓÖ±¹ÛºÍÁé»î¡£ÔÚSaltÖÐ, ËùÓеıäÁ¿±£´æÔÚµ¥¶ÀµÄλÖá£ÕâÑù×ö²»¹»Áé»î£¬µ«ÓÅÊÆÊǸüÓÐÖÈÐò¡£ÓÃSaltµÄ»°½²£¬±äÁ¿½Ð×ö"pillars"¡£pillarsµÄλÖÃÔÚsalt masterµÄÅäÖÃÎļþÖÐÖ¸¶¨:

pillar_roots: base: - /srv/salt/pillar

ºÍstateÎļþÒ»Ñù, Ê×ÏÈ´´½¨Ò»¸ötopÎļþ£¬ÔÚÆäÖпÉÒÔÒýÓÃÏà¹ØµÄpillarÄ£¿é¡£

base: '*': - packages

Õâ¸ötopÎļþÒýÓÃÁËÃûΪpackages.slsµÄstateÎļþ, ÆäÖаüº¬½«Òª°²×°µÄÈí¼þ°üµÄ°æ±¾ºÅµÄ±äÁ¿£¬ÈçÏÂËùʾ:

mongodb: mongodb-1.6.4-1 httpd: httpd-2.2.3-65

ÉùÃ÷ÁËÁ½¸öpillar, mongodbºÍhttpd, È»ºó¿ÉÒÔÔÚstateÎļþÖÐÓÃÈçÏ·½Ê½ÒýÓÃ:

pillar['mongodb'] pillar['httpd']

Ä£ÄâÖ´ÐÐ(Dry run)

¹ÜÀíϵͳÓеãÏñ¼ÝÊ»·É»ú¡£Èç¹û²»Ð¡ÐĽ÷É÷£¬½«»áÊǸ߷çÏÕµÄÊÂÇé¡£¼ÙÉèÎÒÊÇÒ»¸öË«Òí·É»úµÄ¼ÝʻԱ£¬½«×öÒ»¸öΣÏÕµÄaerial manoeuvre, ÎÒ¶à°ë»áÏ£ÍûÄܹ»ÏÈÄ£Äâ·ÉÐС£³ý·ÇÎÒÏñRed BaronÒ»ÑùÎÞËùη¾å¡£ÎÞÂÛÈçºÎ£¬»¹ºÃÔÚÖ´ÐÐSalt֮ǰ¿ÉÒÔÏÈ×ö²âÊÔ¡£ÄãÐèÒª×öµÄ½ö½öÊǽ«TestÉèÖÃΪTrue¡£

# salt 'minion1.example.com' state.highstate 
-v test=True minion1.example.com:
---------- State: - file Name: /etc/myapp.conf Function: managed Result:
None Comment:
The following values are set to be changed: newfile: /etc/myapp.conf Changes:

×ܽá

ÔÚÅäÖùÜÀí·½Ãæ£¬SaltÔÚPuppetÃæÇ°»¹ÊÇÄܹ»Õ¾ÎȽŸúµÄ¡£Salt°²×°·Ç³£¼òµ¥£¬ÊôÓÚ¼òµ¥Ö÷ÒåµÄ¿ª·¢·ç¸ñ, ¹¦Äܷḻ¡£×ܵÄÀ´Ëµ£¬²»ÐèÒª¹ý¶àµÄ²Ù×÷¾Í¿ÉÒÔÍê³ÉÊÂÇé¡£ÎÒ·¢ÏÖµÄΨһÎÊÌâÊÇsalt-masterºÍminionÖ®¼äµÄÁ¬½ÓÓÐʱ»áÎ޹ʶϵô¡£ËÑË÷Ò»·¬ºó£¬ÎÒ·¢ÏÖÆäËûÈËÔÚSalt 0.10.5Õâ¸ö°æ±¾ÉÏÒ²Óöµ½ÁËͬÑùµÄÎÊÌ⡣ϣÍûÕâ¸öÎÊÌâÔÚÏÂÒ»¸ö°æ±¾Öеõ½½â¾ö¡£

ÃüÁî±àÅźÍÔ¶³ÌÖ´ÐÐ

MCollective

MCollectiveÊÇ PuppetµÄÃüÁî±àÅŽâ¾ö·½°¸¡£ÓÉR.I.PienaarÔÚPuppetLabsÄǰïÈËÒýÆðÖØÊÓ֮ǰ¶ÀÁ¢¿ª·¢Íê³É¡£MCollectiveʹÓÃmessage broker (±ÈÈçActiveMQ)ͨ¹ýpub-sub×ÜÏßÀ´´«µÝÏûÏ¢, ¿ÉÒÔ²¢ÐÐͨÐÅ£¬Õâ±ÈÓÃssh¿ìµÃ¶à¡£ÕâÊÇÒ»¿ÉÒÔÀí½âÌØ¶¨ÏûÏ¢²¢²úÉúÏìÓ¦µÄ¿ò¼Ü¡£PuppetºÍMCollectiveÏÖÔÚ¿ÉÒÔÔÚͬһ¸ö¿ò¼ÜϹ¤×÷£¬Í¬Ê±ÌṩÍê³ÉÅäÖùÜÀíºÍÃüÁî±àÅŵŦÄÜ¡£

ÏȲ»¹ÜMCollectiveµÄÓÅÊÆ£¬ÓÐÁ½¸ö¸ºµ£Äܹ»´ò»÷ÄãµÄ¼¤Çé¡£µÚÒ»£¬MCollectiveÖ»ÊǺÍPuppetËÉÉ¢¼¯³É£¬ÖÁÉÙ¶ÔÉçÇø°æ±¾À´½²ÊÇÕâÑù ¡£MCollectiveÓе¥¶ÀµÄ°²×°°ü£¬¶ÀÁ¢µÄÅäÖÃÎļþ¡£ÁíÍâÄ㻹ÐèÒª°²×°ÅäÖÃbroker(±ÈÈçActiveMQ)£¬À´ÓëMCollectiveÒ»Æð¹¤×÷. ËäÈ»²»ÄÑ£¬µ«ºÜ·±Ëö¡£×îºó£¬Ä㻹²»µÃ²»×Ô¼º½â¾öÉú²ú»·¾³ÖÐͨÐÅÇþµÀµÄ°²È«ÎÊÌâ¡£²»ÐÒµÄÊÇ£¬Õâ¸ö¾ÍÓеãÀ§ÄÑ¡£

MCollectiveµÄµÚ¶þ¸öÎÊÌâÊÇÏà¶ÔÀ´½²È±ÉÙһЩ×Ô´øµÄ¹¦ÄÜ¡£ÓкܶàÏֳɵIJå¼þ¿ÉÒÔÏÂÔØ°²×°(https://github.com/puppetlabs/mcollective-plugins), ÓÃRubyд×Ô¼ºµÄ²å¼þÒ²²»ÊǺܸ´ÔÓ£­²»¹ýÏëÒªÁ¢¼´Ê¹Óõϰ£¬Õϰ­±ÈÏëÏñµÃÒª´ó¡£Nevertheless, given that the framework is solid and extensible, dabbling in Ruby plugins soon makes the real power of MCollective apparent.

Salt

ÁíÒ»·½Ã棬SaltÉúÀ´¾ÍÓÐÃüÁî±àÅŵŦÄÜ¡£×îÏÈÉèÏëµÄ¾ÍÊÇÔ¶³ÌÖ´Ðм¼Êõ£¬È»ºó²ÅÌí¼ÓµÄÅäÖùÜÀí¹ÜÀí¡£SaltʹÓÃÇáÁ¿µÄZeroMQÀ´´¦ÀíÏûÏ¢¡£½á¹û¾ÍÊDz»ÐèÒªµ¥¶ÀµÄ°²×°¡£×°ºÃSaltºó£¬ÅäÖùÜÀíºÍÃüÁî±àÅžͿÉÒÔ¹¤×÷ÁË¡£ºÁ²»¾ªÆæ,Salt stateÄ£¿éºÍexecutionÄ£¿éµÄÃüÁîÔÚÓï·¨ÉÏÀàËÆ£¬ËùÒÔºÜÖ±¹Û¡£ÔÙ¿´PuppetºÍMCollective×éºÏ,¸÷×ÔʹÓò»Í¬µÄ¹¤¾ßºÍÓï·¨½á¹¹£¬ÐèÒª¶îÍâµÄʱ¼äȥѧϰ¡£

SaltÔ¶³ÌÖ´Ðй¦ÄܵĿÉÓÃÐÔÁîÈËÓ¡ÏóÉî¿Ì¡£µ±Ç°µÄÔÚÏßÎĵµÁгöÁ˳¬¹ý100¸ö²»Í¬µÄÄÚÖÃexcutionÄ£¿é£­°üÀ¨augeas£¡(ËùÒÔaugeas³ÉΪstateÄ£¿éÖ»ÊÇʱ¼äÉϵÄÎÊÌâ).

¾Ù¸ö¼òµ¥µÄÀý×Ó£¬¿´¿´Í¨ÓõÄ"cmd.run"Ä£¿éºÍÖ¸Áî¡£ÕâÔÚÄãÖªµÀÏëÒªÖ´ÐеÄÃüÁîÈ´ÓÖûÓÐÏֳɵÄÄ£¿é¿ÉÓÃʱ·Ç³£ÓÐÓã¬- »òÕßÄã½ö½öÏëÒª¿ìËÙµØÔ¶³ÌÖ´ÐÐÃüÁî¡£¼ÙÉèÎÒÏëÔÚËùÓнڵãÉϼì²éÔËÐеÄÄں˰汾ºÅ£º

[root@salt salt]# salt '*' cmd.run "uname -r" minion1.example.com: 2.6.18-274.18.1.el5 minion2.example.com: 2.6.18-274.18.1.el5 salt.example.com: 2.6.18-274.18.1.el5

»òÕßÎÒÏë¿´¿´´ÅÅÌʹÓÃÇé¿ö:

salt '*' cmd.run "df -h"

˳±ã˵һÏÂ, SaltÓÐÒ»¸öÄ£¿éÓÃÀ´²é¿´´ÅÅÌÓÃÁ¿ÒÔ¼°ÆäËû´ÅÅÌÏà¹ØµÄ²éѯ:

salt '*' disk.usage

ʹÓÃÄÚÖÃÄ£¿é¶ø²»ÓÃcmd.run·¢ËÍshellÃüÁîµÄºÃ´¦ÊÇ£¬Ä£¿éͨ³£·µ»Ø¹Ì¶¨½á¹¹µÄÊý¾Ý¡£Äܹ»ÒÔ±à³ÌµÄ·½Ê½ÓÃÔÚ×Ô¶¯»¯´¦ÀíÉÏ¡£

ÓкܶàÏֳɵÄexecutionÄ£¿éÀ´Âú×ãͨÓõĹÜÀíÈÎÎñ£¬±ÈÈçapt, at, cp, cron, disk, extfs, file, hosts, iptables, mount, network, pam, parted, pkg, ps, selinux, shadow, ssh, and test. Ò²ÓдóÁ¿µÄÄ£¿éÓÃÓÚÖ¸¶¨µÄÈí¼þ°üºÍÓ¦ÓóÌÐò£¬±ÈÈçapache, cassandra, djangomod, git, mongodb, mysql, nginx, nova, postgres, solr, sqlite3, ºÍtomcat.

ÉõÖÁÖ§³ÖÖ´ÐÐPuppet³ÌÐò¡£

×ܽá

ºÁÎÞÒÉÎÊ£¬SaltÔ¶³ÌÖ´ÐбÈPuppet¼ÓMCollective¸üÓÅÑÅ£¬¸½´ø¿ÉÓõŦÄܸü¶à¡£Ö§³Ö¶¯Ì¬²éѯºÍ´ó¹æÄ£µÄ·þÎñ±àÅÅ¡£Òª²é¿´ÍêÕûµÄ¹¦ÄÜ£¬Çë²Î¿¼salt executionÄ£¿éµÄÎĵµ¡£

¸½¼Ó¹¦ÄÜ

Dashboard

PuppetʹÓÃPuppet dashboard. SaltĿǰûÓÐͼÐλ¯µÄ½çÃæ¡£ÎÒÖªµÀ£¬ÎÒÃǶ¼´ó°®ÃüÁîÐС£²»¹ý£¬ÓÐʱ¿´µ½ÂúÆÁÄ»µÄÂÌÉ«»òÊǵãµã°´Å¥Ò²ÊǺÜã«ÒâµÄ¡£ ÈÏÕæµÄ½²£¬dashboardÊÇ»ñµÃÄãËù¹ÜÀíµÄ½ÚµãÍøÂçstate¸ÅÀÀµÄºÃ¹¤¾ß¡£SaltµÄ·ÏßͼÖÐûÓÐͼÐνçÃæ£¬Ï£Íû×îÖÕ»á³öÏÖ¡£

Returners

ReturnersÊÇminion·µ»ØÊý¾Ýµ½´ïºó±»µ÷ÓõÄÄ£¿é¡£²»½«·µ»ØÊý¾Ý´«µÝ¸øsalt master£¬¶øÊǵ÷ÓÃReturnerÄ£¿éÀ´½«Êý¾Ý·¢¸øÆäËû·þÎñ£¬Í¨³£ÊÇÊý¾Ý¿â¡£SaltĿǰ֧³ÖµÄreturner£¬¿ÉÒÔÁ¬½Ócassandra, mongo, redisºÍmysql. Ò²¿ÉÒÔºÜÈÝÒ×µÄÓÃPython½Å±¾ÎªÆäËû·þÎñдһ¸öreturner¡£

Salt Syndic

SaltÎĵµ½«Salt SyndicÃèÊöΪ"Ò»¸ö¿ÉÒÔ¹¹½¨SaltÃüÁîÍØÆËµÄÇ¿´ó¹¤¾ß&ldquo;¡£Êµ¼ÊÒâÒåÉÏ£¬Salt Syndic¿ÉÒÔÈÃÒ»¸öÔËÐÐSyndic·þÎñµÄSalt masterÁ¬½Óµ½¸ü¸ß²ãµÄmaster¡£

¼ÙÉèÄãÓжà¸ö²»Í¬µÄSalt»·¾³£¬Ã¿¸ö»·¾³¶¼ÓÐÒ»¸ömaster¡£ÕâЩ»·¾³¿ÉÄÜÊÇÌØµÄÔÆ»òÊÇÓзÀ»ðǽµÄÍøÂç¡£¼ÙÉèÄãÏëͬʱ¿ØÖÆÕ⼸¸ö»·¾³ÖеÄminions¡£Äã¿ÉÒÔÔÚÏëÒª¿ØÖƵÄmasterÖ÷»úÉϰ²×°Salt Syndic¡£Salt Syndic´´½¨ÁË´«Êä½Ó¿Ú£¬ÔÚ×î¶¥²ãµÄmaster¿´À´£¬¾ÍÏñÊÇ¿ØÖÆÁ˺ܶàµÄminion,µ«ÅäÖÃ״̬ʵ¼ÊÉÏÊÇ´«µÝ¸øÁ˶à¸ömaster¡£¿ÉÒÔ½«ÆäÏëÏñΪ¾ü¶ÓµÄÃüÁî´«µÝϵͳ¡£

¼¯³É²âÊÔ

ÓÐÁ½¸ö²ÉÓÃÏÖÓвâÊÔ¿ò¼ÜµÄÏîÄ¿¸øPuppetÔö¼Ó²âÊÔ¹¦ÄÜ£¬Ãû×ÖÊÇcucumber-puppet (ʹÓà Cucumber¿ò¼Ü)ºÍrspec-puppet (ʹÓÃRSpec).

Salt²ÉÈ¡µÄ×ö·¨ÊÇͨ¹ýһϵÁеÉÀàÌṩ¶Ô¼¯³É²âÊÔµÄÖ§³Ö£¬roadmapÖÐÌᵽδÀ´»áʹÓÃUnittest2ºÍpytest×öµ¥Ôª²âÊÔ¡£

×Ô¶¯»¯¼¯³É²âÊÔÊdzÖÐø***¸¶¹ÜµÀ±»ºöÊÓµÄÁìÓò£¬ÄÜÓÐһЩÄÚ½¨µÄÖ§³ÖÊǷdz£ºÃµÄ¡£ÕâÒ²ÊÇÒÔºóµÄ²©ÎÄÖн«Ì½ÌÖµÄÓÐȤÁìÓò

½áÂÛ

ÎÒµÄÄ¿µÄÊÇ¿´¿´Salt StackÊÇ·ñÄÜ×öΪÅäÖùÜÀíºÍϵͳÃüÁî±àÅŵĽâ¾ö·½°¸¡£Îҵķ½·¨ÊÇÓëPuppetÖÐ×î³£ÓõŦÄÜ×÷±È½Ï£¬ÒÔ̽Ë÷SaltµÄ¹¦ÄÜ¡£½áÂÛÊǺÜÒ«Ñ۵ġ£Salt Stack²»½ö×Ô´øÁ˺ܶ๦ÄÜ£¬ÇÒÒ×ÓÚ°²×°£¬Ê¹Óã¬À©Õ¹¡£ ºÜÃ÷ÏÔ£¬Saltǰ;һƬ¹âÃ÷¡£

   
4759 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

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

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

×Ô¶¯»¯ÔËά¹¤¾ß£¨»ùÓÚDevOps£©
»¥ÁªÍøÔËάÓëDevOps
MySQLÐÔÄÜÓÅ»¯¼°ÔËάÅàѵ
ITϵͳÔËά¹ÜÀí
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

itilÎå´óÁ÷³Ìͼ
ITILÁ÷³Ì¹ÜÀíÁù²½×ß
ʹÓÃITIL V3×÷SOAÖÎÀíµÄ»ùʯ
IT·þÎñ¹ÜÀíµÄʵ¼ùÓë×ܽá
½è¼øITIL¼Ü¹¹ÀíÄîÌáÉýÐÅÏ¢»¯
ITILÁ÷³Ì×ܽá


»ùÓÚITILµÄIT·þÎñ¹ÜÀí
ITILÈÏÖ¤
ITSM/ITIL»ù´¡
IT¹æ»®¹ÜÀí
ITÍâ°ü¹ÜÀí
IT³É±¾¹ÜÀí

ÖйúÒÆ¶¯Í¨ÐÅ ÍøÂç¹æ»®Óë¹ÜÀí
ijº½¿Õ¹«Ë¾ IT¹æ»®ÓëÆóÒµ¼Ü¹¹
ij½ðÈÚ¹«Ë¾ IT·þÎñ¹ÜÀí£¨ITIL V3£©
ÖйúÁªÍ¨¼¯ÍÅ ITÇ°ÑØÖªÊ¶¸ÅÊö
Öк£ÓÍ ÆóÒµIT¼Ü¹¹Éè¼Æ