±à¼ÍƼö: |
±¾Î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' |

|