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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
ansibleÔËά×Ô¶¯»¯
 
×÷Õߣº chao199512
  2105  次浏览      27
 2019-12-13
 
±à¼­ÍƼö:
±¾ÎIJûÊöÁËAnsibleÊÇʲô¡¢Ansible ÌØµã¡¢ansible¹¤×÷»úÖÆ£¬²¿ÊðʵÑé»·¾³,Ï£Íû¶ÔÄúµÄѧϰÓÐËù°ïÖú¡£
±¾ÎÄÀ´×ÔÓÚcsdn£¬ÓÉ»ðÁú¹ûÈí¼þDelores±à¼­¡¢ÍƼö¡£

¼ò½é£º

µ±ÏÂÓÐÐí¶àµÄÔËά×Ô¶¯»¯¹¤¾ß(ÅäÖùÜÀí)£¬ÀýÈ磺Ansible¡¢SaltStack¡¢Puppet¡¢Fabric µÈ¡£

Ansible Ò»ÖÖ¼¯³É IT ϵͳµÄÅäÖùÜÀí¡¢Ó¦Óò¿Êð¡¢Ö´ÐÐÌØ¶¨ÈÎÎñµÄ¿ªÔ´Æ½Ì¨£¬ÊÇ AnsibleWorks ¹«Ë¾ÃûϵÄÏîÄ¿£¬¸Ã¹«Ë¾ÓÉ Cobbler ¼° Func µÄ×÷ÕßÓÚ 2012 Äê´´½¨³ÉÁ¢¡£

Ansible »ùÓÚ Python ÓïÑÔʵÏÖ£¬ÓÉ Paramiko ºÍ PyYAML Á½¸ö¹Ø¼üÄ£¿é¹¹½¨¡£

£¨1£©AnsibleÊÇʲô£¿

ansibleÊÇгöÏÖµÄ×Ô¶¯»¯ÔËά¹¤¾ß£¬»ùÓÚPython¿ª·¢£¬¼¯ºÏÁËÖÚ¶àÔËά¹¤¾ß£¨puppet¡¢chef¡¢func¡¢fabric£©µÄÓŵ㣬ʵÏÖÁËÅúÁ¿ÏµÍ³ÅäÖá¢ÅúÁ¿³ÌÐò²¿Êð¡¢ÅúÁ¿ÔËÐÐÃüÁîµÈ¹¦ÄÜ¡£ansibleÊÇ»ùÓÚ paramiko ¿ª·¢µÄ,²¢ÇÒ»ùÓÚÄ£¿é»¯¹¤×÷£¬±¾ÉíûÓÐÅúÁ¿²¿ÊðµÄÄÜÁ¦¡£ÕæÕý¾ßÓÐÅúÁ¿²¿ÊðµÄÊÇansibleËùÔËÐеÄÄ£¿é£¬ansibleÖ»ÊÇÌṩһÖÖ¿ò¼Ü¡£ansible²»ÐèÒªÔÚÔ¶³ÌÖ÷»úÉϰ²×°client/agents£¬ÒòΪËüÃÇÊÇ»ùÓÚsshÀ´ºÍÔ¶³ÌÖ÷»úͨѶµÄ¡£

£¨2£©Ansible ÌØµã£º

²¿Êð¼òµ¥£¬Ö»ÐèÔÚÖ÷¿Ø¶Ë²¿ÊðAnsible»·¾³£¬±»¿Ø¶ËÎÞÐè×öÈκβÙ×÷¡£

ĬÈÏʹÓà SSH£¨Secure Shell£©Ð­Òé¶ÔÉ豸½øÐйÜÀí¡£

Ö÷´Ó¼¯Öл¯¹ÜÀí¡£

ÅäÖüòµ¥¡¢¹¦ÄÜÇ¿´ó¡¢À©Õ¹ÐÔÇ¿¡£

Ö§³Ö API ¼°×Ô¶¨ÒåÄ£¿é£¬¿Éͨ¹ý Python ÇáËÉÀ©Õ¹¡£

ͨ¹ý Playbooks À´¶¨ÖÆÇ¿´óµÄÅäÖá¢×´Ì¬¹ÜÀí¡£

¶ÔÔÆ¼ÆËãÆ½Ì¨¡¢´óÊý¾Ý¶¼ÓкܺõÄÖ§³Ö¡£

Ìṩһ¸ö¹¦ÄÜÇ¿´ó¡¢²Ù×÷ÐÔÇ¿µÄWeb¹ÜÀí½çÃæºÍREST API½Ó¿Ú ¡ª- AWX ƽ̨¡£

£¨3£©ansible¹¤×÷»úÖÆ

Ansible£ºansibleºËÐijÌÐò£»

Hostlnvetory:¼Ç¼ansible¹ÜÀíµÄÖ÷»úÐÅÏ¢£¬°üÀ¨¶Ë¿Ú£¬ÃÜÂ룬ipµÈ£»

Playbooks:¡±¾ç±¾¡±YAML¸ñʽÎļþ£¬¶à¸öÈÎÎñ¶¨ÒåÔÚÒ»¸öÎļþÖУ¬¶¨ÒåÖ÷»úÐèÒªµ÷ÓÃÄÄЩģ¿éÀ´Íê³ÉµÄ¹¦ÄÜ

coreModukes:ºËÐÄÄ£¿é£¬Ö÷Òª²Ù×÷ÊÇͨ¹ýºËÐÄÄ£¿éÀ´Íê³É¹ÜÀíÈÎÎñ¡£

customModules:×Ô¶¨ÒåÄ£¿é£¬Íê³ÉºËÐÄÄ£¿éÎÞ·¨Íê³ÉµÄ¹¦ÄÜ£¬Ö§³Ö¶àÖÖÓïÑÔ¡£

ConnectionPlugins:Á¬½Ó²å¼þ£¬ansibleºÍhostͨÐÅ£»

£¨4£©AnsibleÓëSaltStack

×î´óµÄÇø±ðÊÇ Ansible ÎÞÐèÔÚ±»¼à¿ØÖ÷»ú²¿ÊðÈκοͻ§¶Ë´úÀí£¬Ä¬ÈÏͨ¹ý SSH ͨµÀ½øÐÐÔ¶³ÌÃüÁîÖ´ÐлòÏ·¢ÅäÖᣠÏàͬµãÊǶ¼¾ß±¸¹¦ÄÜÇ¿´ó¡¢Áé»îµÄϵͳ¹ÜÀí¡¢×´Ì¬ÅäÖ㬶¼Ê¹Óà YAML ¸ñʽÀ´ÃèÊöÅäÖã¬Á½Õß¶¼Ìṩ·á¸»µÄÄ£°å¼° API£¬¶ÔÔÆ¼ÆËãÆ½Ì¨¡¢´óÊý¾Ý¶¼ÓкܺõÄÖ§³Ö¡£

¹ÙÍø£º

²¿Êð

ʵÑé»·¾³£ºrhel6.5

Ö÷»ú£ºserver4¡ª¡ª¡ª¡·172.25.254.4

²½Ö裺

£¨1£©°²×°ansible

[root@server4 rhel6]# rpm
-ivh ansible-2.1.0.0-1.el6.
noarch.rpm

ÐèÒª½â¾öÒÀÀµÐÔ

(2)°²×°release°ü£¬»áÉú³É.repoµÄyumÔ´ÅäÖÃÎļþ

root@server4 rhel6]# yum
install epel-release-6-5.
noarch.rpm -y

(3)ʹserver4¿ÉÒÔÉÏÍø

server4ÉÏ£º

[root@server4 rhel6]#
route add default gw
172.25.254.250
[root@server4 rhel6]#
vim /etc/resolv.conf
nameserver 114.114.114.114
[root@server1 rhel6]#
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
[root@server1 rhel6]#sysctl-p

Õæ»úÉÏ£¨Ìí¼Ó·À»ðǽЭÒ飩£º

root@foundation77 repodata]#
iptables -t nat -I POSTROUTING
-s 172.25.254.0/24 -j MASQUERADE

£¨4£©ansibleÅäÖÃÎļþ

[root@server4 rhel6]#
rpm -qc ansible
/etc/ansible/ansible.cfg
/etc/ansible/hosts

ÉèÖÃ/etc/ansible/ansible.cfgÅäÖòÎÊý£¬ansibleÓÐÐí¶à²ÎÊý£¬ÏÂÃæÁгö³£ÓõIJÎÊý£º

inventory£º#Õâ¸ö²ÎÊý±íʾ×ÊÔ´Çåµ¥inventoryÎļþµÄλÖã¬×ÊÔ´Çåµ¥¾ÍÊÇһЩansibleÐèÒªÁ¬½Ó¹ÜÀíµÄÖ÷»úÁÐ±í¡£

library£º ansibleµÄ²Ù×÷¶¯×÷£¬ÎÞÂÛÊDZ¾µØ»òÔ¶³Ì£¬¶¼Ê¹ÓÃһС¶Î´úÂëÀ´Ö´ÐУ¬ÕâС¶Î´úÂë³ÆÎªÄ£¿é£¬Õâ¸ölibrary²ÎÊý¾ÍÊÇÖ¸Ïò´æ·ÅansibleÄ£¿éµÄĿ¼¡£

forks£ºÉèÖÃĬÈÏÇé¿öÏÂansible×î¶àÄÜÓжàÉÙ¸ö½ø³Ìͬʱ¹¤×÷£¬ ´Óansible 1.3¿ªÊ¼,forkÊýÁ¿Ä¬ÈÏ×Ô¶¯ÉèÖÃΪÖ÷»úÊýÁ¿»òÕßDZÔÚµÄÖ÷»úÊýÁ¿,ĬÈÏÉèÖÃ×î¶à5¸ö½ø³Ì²¢Ðд¦Àí¡£¾ßÌåÐèÒªÉèÖöàÉÙ¸ö£¬¿ÉÒÔ¸ù¾Ý¿ØÖÆÖ÷»úµÄÐÔÄܺͱ»¹Ü½ÚµãµÄÊýÁ¿À´È·¶¨£¬¿ÉÄÜÊÇ 50»ò100¡£Ä¬ÈÏÖµ5ÊǷdz£±£ÊصÄÖµ

sudo_user£ºÕâÊÇÉèÖÃĬÈÏÖ´ÐÐÃüÁîµÄÓû§£¬Ò²¿ÉÒÔÔÚplaybookÖÐÖØÐÂÉèÖÃÕâ¸ö²ÎÊý¡£

remote_port£ºÕâÊÇÖ¸¶¨Á¬½Ó±»¹Ü½ÚµãµÄ¹ÜÀí¶Ë¿Ú£¬Ä¬ÈÏÊÇ22¡£³ý·ÇÉèÖÃÁËÌØÊâµÄSSH¶Ë¿Ú£¬²»È»Õâ¸ö²ÎÊýÒ»°ãÊDz»ÐèÒªÐ޸ĵġ£

host_key_checking£ºÕâÊÇÉèÖÃÊÇ·ñ¼ì²éSSHÖ÷»úµÄÃÜÔ¿¡£¿ÉÒÔÉèÖÃΪTrue»òFalse£¬¹Ø±ÕºóµÚÒ»´ÎÁ¬½ÓûÓÐÌáʾ

timeout£ºÕâÊÇÉèÖÃSSHÁ¬½ÓµÄ³¬Ê±¼ä¸ô£¬µ¥Î»ÊÇÃë¡£

log_path£º**ansibleϵͳĬÈÏÊDz»¼Ç¼ÈÕÖ¾µÄ£¬Èç¹ûÏë°ÑansibleϵͳµÄÊä³ö¼Ç¼µ½ÈÕÖ¾ÎļþÖУ¬ÐèÒªÉèÖÃlog_pathÀ´Ö¸¶¨Ò»¸ö´æ´¢ansibleÈÕÖ¾µÄÎļþ¡£

£¨5£©ÉèÖÃansibleÖ÷»ú

vim /etc/ansible/hosts

£¨6£©ÉèÖÃsshÃâÃÜ

[root@server4 ~]#
ssh-keygen -t rsa
[root@server4 ~]#
cp id_rsa.pub authorized_keys
[root@server4 ~]#
cd ~/.ssh/
[root@server4 .ssh]# ls
authorized_keys id_rsa
id_rsa.pub known_hosts
[root@server4 .ssh]#
scp * root@172.25.254.5:/root/.ssh/
[root@server4 .ssh]#
scp * root@172.25.254.6:/root/.ssh/

(7)²âÊÔAnsible(allΪ²Ù×÷hostsÎļþÖÐËùÓÐÖ÷»ú£¬-mÖ¸¶¨Ö´ÐÐpingÄ£¿é£¬ÏÂÃæÊÇ·µ»Ø½á¹û)

(8)ansible ÃüÁîÏê½â

-a # Ä£¿éµÄ²ÎÊý¡£
-B # Òì²½ÔËÐÐʱ£¬¶à³¤Ê±¼ä³¬Ê±¡£
-P #Èç¹ûʹÓÃ-B£¬ÔòÉèÖÃÂÖѯ¼ä¸ô¡£
-C # Ö»ÊDzâÊÔһϻá¸Ä±äʲôÄÚÈÝ£¬
²»»áÕæÕýÈ¥Ö´ÐÐ;Ïà·´,ÊÔͼԤ²â
һЩ¿ÉÄÜ·¢ÉúµÄ±ä»¯¡£
-D # µ±¸ü¸ÄÎļþºÍÄ£°åʱ£¬
ÏÔʾÕâЩÎļþµÃ²îÒ죬±È¨CcheckЧ¹ûºÃ¡£
-f # Ö¸¶¨¶¨ÒªÊ¹ÓõIJ¢Ðнø³ÌÊý£¬
ĬÈÏΪ5¸ö¡£
-i # Ö¸¶¨Ö÷»úÇåµ¥Îļþ»ò¶ººÅ
·Ö¸ôµÄÖ÷»ú£¬Ä¬ÈÏΪ/etc/ansible/hosts¡£
-l # ½øÒ»²½ÏÞÖÆËùÑ¡Ö÷»ú/×éģʽ£¬
Ö»Ö´ÐÐ-l ºóµÄÖ÷»úºÍ×é¡£
Ò²¿ÉÒÔÕâÑùʹÓà -l @retry_hosts.txt
-m # ÒªÖ´ÐеÄÄ£¿é£¬Ä¬ÈÏΪcommand¡£
-M # ÒªÖ´ÐеÄÄ£¿éµÄ·¾¶¡£
-o # ѹËõÊä³ö£¬ÕªÒªÊä³ö.
³¢ÊÔÒ»Çж¼ÔÚÒ»ÐÐÉÏÊä³ö¡£
-v, ¨Cverbose # Êä³öÖ´ÐеÄÏêϸÐÅÏ¢£¬
ʹÓÃ-vvv»ñµÃ¸ü¶à£¬-vvvv ÆôÓÃÁ¬½Óµ÷ÊÔ
¨Cversion # ÏÔʾ³ÌÐò°æ±¾ºÅ
-e ¨Cextra-vars=EXTRA_VARS #
Ìí¼Ó¸½¼Ó±äÁ¿£¬±ÈÈçkey=value£¬
yaml£¬json¸ñʽ¡£
¨Clist-hosts # Êä³ö½«Òª²Ù×÷µÄ
Ö÷»úÁÐ±í£¬²»»áÖ´ÐвÙ×÷
¨Coutput=OUTPUT_FILE # ¼ÓÃÜ»ò
½âÃÜÊä³öÎļþÃû ÓÃÓÚ±ê×¼Êä³ö¡£
¨Ctree=TREE # ½«ÈÕÖ¾ÄÚÈݱ£´æÔÚ¸ÃĿ¼ÖÐ,
ÎļþÃûÒÔÖ´ÐÐÖ÷»úÃûÃüÃû¡£
¨Csyntax-check # ¶Ôplaybook½øÐÐÓï·¨¼ì²é£¬
ÇÒ²»Ö´ÐÐplaybook¡£
¨Cask-vault-pass # vault ÃÜÂë¡£
¨Cvault-password-file=VAULT_PASSWORD
_FILE vaultÃÜÂëÎļþ
¨Cnew-vault-password-file=NEW_VAULT
_PASSWORD_FILE ÐÂvaultÃÜÔ¿Îļþ¡£

(9)²é¿´ansibleÖ÷»úÍøÂç²ÎÊý

root@server1 ~]# ansible
all -m command -a 'ifconfig'

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

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

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

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