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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
ÔËά×Ô¶¯»¯-Ansible
 
  2799  次浏览      31
 2018-6-21 
 
±à¼­ÍƼö:
±¾ÎÄÀ´Ô´51cto.com£¬½éÉÜÁËAnsible ÊÇʲô£¬ÄÜ×öʲô£¬AnsibleÌØÐÔ£¬¼Ü¹¹£¬¹¤×÷Ô­Àí£¬Ö÷Òª×é³É²¿·Ö¹¦ÄÜ˵Ã÷µÈ֪ʶ¡£

ǰÑÔ

ÌìÌì˵ÔËά£¬¾¿¾¹ÊǸÉʲôµÄ£¿ÏÈ¿´¿´¹¤×÷Á÷³Ìß¡£Ò»°ãÀ´Ëµ£¬ÔËά¹¤³ÌʦÔÚÒ»¼ÒÆóÒµÀïÊôÓÚ¸öλÊýµÄ¸Ú룬ÉõÖÁÖ»ÓÐÒ»¸ö¡£Ãæ¶ÔÉú²úÖÐNNN̨·þÎñÆ÷£¬NN¸öÈËÔ±,¹¤×÷Á¿Ò²ÊǷdz£´óµÄ¡£

ËùÒÔÂͼÖеÄÎҺôõÒ²»áÅäÖÿø¼×µÄ¡£

Õâ¾ÍÊÇÎÒÖ÷Òª¸ÉµÄÊÂÇ飨ºÇºÇ£©

¾ÍËãÄã»áºÜÀ÷º¦µÄ½Å±¾£¬Ãæ¶Ô³É°ÙÉÏǧ£¬ÉõÖÁÉÏÍòµÄÖ÷»ú£¬Ð§ÂÊÎÊÌ⽫»áÀ§ÈÅÄãµÄ¡£

Òò´Ë£¬ÓÐûÓнâ·ÅµÄ¹¤¾ßÄØ£¿

Ansible ÊÇʲô

Ansible ¼òµ¥µÄ˵ÊÇÒ»¸öÅäÖùÜÀíϵͳ(configuration management system)¡£ÄãÖ»ÐèÒª¿ÉÒÔʹÓà ssh ·ÃÎÊÄãµÄ·þÎñÆ÷»òÉ豸¾ÍÐС£ËüÒ²²»Í¬ÓÚÆäËû¹¤¾ß£¬ÒòΪËüʹÓÃÍÆË͵ķ½Ê½£¬¶ø²»ÊÇÏñ puppet µÈ ÄÇÑùʹÓÃÀ­È¡°²×°agentµÄ·½Ê½¡£Äã¿ÉÒÔ½«´úÂ벿Êðµ½ÈÎÒâÊýÁ¿µÄ·þÎñÆ÷ÉÏ!

AnsibleÄÜ×öʲô

ansible¿ÉÒÔ°ïÖúÎÒÃÇÍê³ÉһЩÅúÁ¿ÈÎÎñ£¬»òÕßÍê³ÉһЩÐèÒª¾­³£Öظ´µÄ¹¤×÷¡£

±ÈÈ磺ͬʱÔÚ100̨·þÎñÆ÷Éϰ²×°nginx·þÎñ£¬²¢ÔÚ°²×°ºóÆô¶¯ËüÃÇ¡£

±ÈÈ磺½«Ä³¸öÎļþÒ»´ÎÐÔ¿½±´µ½100̨·þÎñÆ÷ÉÏ¡£

±ÈÈ磺ÿµ±ÓÐзþÎñÆ÷¼ÓÈ빤×÷»·¾³Ê±£¬Ä㶼ҪΪзþÎñÆ÷²¿Êðij¸ö·þÎñ£¬Ò²¾ÍÊÇ˵ÄãÐèÒª¾­³£Öظ´µÄÍê³ÉÏàͬµÄ¹¤×÷¡£

ÕâЩ³¡¾°ÖÐÎÒÃǶ¼¿ÉÒÔʹÓõ½ansible¡£

AnsibleÌØÐÔ

Ä£¿é»¯£ºµ÷ÓÃÌØ¶¨µÄÄ£¿é£¬Íê³ÉÌØ¶¨ÈÎÎñ

ÓÐParamiko£¬PyYAML£¬Jinja2£¨Ä£°åÓïÑÔ£©Èý¸ö¹Ø¼üÄ£¿é

Ö§³Ö×Ô¶¨ÒåÄ£¿é

»ùÓÚPythonÓïÑÔʵÏÖ

²¿Êð¼òµ¥£¬»ùÓÚpythonºÍSSH(ĬÈÏÒѰ²×°)£¬agentless

°²È«£¬»ùÓÚOpenSSH

Ö§³Öplaybook±àÅÅÈÎÎñ

ÃݵÈÐÔ£ºÒ»¸öÈÎÎñÖ´ÐÐ1±éºÍÖ´ÐÐn±éЧ¹ûÒ»Ñù£¬²»ÒòÖØ¸´Ö´ÐдøÀ´ÒâÍâÇé¿ö

ÎÞÐè´úÀí²»ÒÀÀµPKI£¨ÎÞÐèssl£©

¿ÉʹÓÃÈκαà³ÌÓïÑÔдģ¿é

YAML¸ñʽ£¬±àÅÅÈÎÎñ£¬Ö§³Ö·á¸»µÄÊý¾Ý½á¹¹

½ÏÇ¿´óµÄ¶à²ã½â¾ö·½°¸

Ansible¼Ü¹¹

Ansible¹¤×÷Ô­Àí

AnsibleÖ÷Òª×é³É²¿·Ö¹¦ÄÜ˵Ã÷

PLAYBOOKS£º

ÈÎÎñ¾ç±¾£¨ÈÎÎñ¼¯£©£¬±àÅŶ¨ÒåAnsibleÈÎÎñ¼¯µÄÅäÖÃÎļþ£¬ÓÉAnsible˳ÐòÒÀ´ÎÖ´ÐУ¬Í¨³£ÊÇJSON¸ñʽµÄYMLÎļþ

INVENTORY£º

Ansible¹ÜÀíÖ÷»úµÄÇåµ¥/etc/anaible/hosts

MODULES£º

AnsibleÖ´ÐÐÃüÁîµÄ¹¦ÄÜÄ£¿é£¬¶àÊýΪÄÚÖõĺËÐÄÄ£¿é£¬Ò²¿É×Ô¶¨Òå,ansible-doc ¨Cl ¿É²é¿´Ä£¿é

PLUGINS£º

Ä£¿é¹¦ÄܵIJ¹³ä£¬ÈçÁ¬½ÓÀàÐͲå¼þ¡¢Ñ­»·²å¼þ¡¢±äÁ¿²å¼þ¡¢¹ýÂ˲å¼þµÈ£¬¸Ã¹¦Äܲ»³£ÓÃ

API£º

¹©µÚÈý·½³ÌÐòµ÷ÓõÄÓ¦ÓóÌÐò±à³Ì½Ó¿Ú

ANSIBLE£º

×éºÏINVENTORY¡¢ API¡¢ MODULES¡¢PLUGINSµÄÂÌ¿ò£¬¿ÉÒÔÀí½âΪÊÇansibleÃüÁ¾ß£¬ÆäΪºËÐÄÖ´Ðй¤¾ß

×¢ÒâÊÂÏî

Ö´ÐÐansibleµÄÖ÷»úÒ»°ã³ÆÎªÖ÷¿Ø¶Ë£¬Öпأ¬master»ò±¤ÀÝ»ú

Ö÷¿Ø¶ËPython°æ±¾ÐèÒª2.6»òÒÔÉÏ

±»¿Ø¶ËPython°æ±¾Ð¡ÓÚ2.4ÐèÒª°²×°python-simplejson

±»¿Ø¶ËÈ翪ÆôSELinuxÐèÒª°²×°libselinux-python

windows²»ÄÜ×öΪÖ÷¿Ø¶Ë

°²×°Ansible

°²×°·½·¨Óкܶ࣬ÕâÀï½ö½öÒÔCentos yum°²×°ÎªÀý¡£

AnsibleĬÈϲ»ÔÚ±ê×¼²Ö¿âÖУ¬ÐèÒªÓõ½EPELÔ´¡£

Çë×ÔÐвο¼
https: //mirrors.aliyun.com /help /centos

#yum install ansible

#ansible -- version
ansible 2.4.2.0
config file = /etc/ansible /ansible.cfg
executable location = /usr /bin/ansible
python version = 2.7.5

Ansible ¹¦ÄÜÏê½â

ÅäÖÃÎļþ

Ansible ÅäÖÃÎļþ

Ansible ÅäÖÃÎļþ/etc/ansible/ansible.cfg £¨Ò»°ã±£³ÖĬÈÏ£©
[defaults]
#inventory = /etc/ansible /hosts # Ö÷»úÁбíÅäÖÃÎļþ
#library = /usr /share/my_modules/ # ¿âÎļþ´æ·ÅĿ¼
#remote_tmp = $HOME/ .ansible/tmp # ÁÙʱpyÃüÁîÎļþ´æ·ÅÔÚÔ¶³ÌÖ÷»úĿ¼
#local_tmp = $HOME /.ansible/tmp # ±¾»úµÄÁÙʱÃüÁîÖ´ÐÐĿ¼
#forks = 5 # ĬÈϲ¢·¢Êý
#sudo_user = root # ĬÈÏsudo Óû§
#ask_sudo_pass = True #ÿ´ÎÖ´ÐÐ ansibleÃüÁîÊÇ·ñѯÎÊsshÃÜÂë
#ask_pass = True #Á¬½ÓʱÌáʾÊäÈësshÃÜÂë
#remote_port = 22 #Ô¶³ÌÖ÷»úµÄĬÈ϶˿ڣ¬Éú²úÖÐÕâ¸ö¶Ë¿ÚÓ¦¸Ã»á²»Í¬
#log_path = /var /log /ansible.log #ÈÕÖ¾
#host_ key_ checking = False # ¼ì²é¶ÔÓ¦·þÎñÆ÷µÄ host_ key£¬½¨ÒéÈ¡Ïû×¢ÊÍ¡£Ò²¾ÍÊDz»»áµ¯³ö
Are you sure you want to continue connecting (yes/no)?

ʵÑ鹿»®

ʵÑé»·¾³£ºVMware Workstation Pro 14£¨ÊÔÓð棩
ϵͳƽ̨£º
CentOS Linux release 7.4.1708 (Core) ÄÚºË 3.10.0-693 .el7 .x86 _64
×îС»¯°²×°
ʵÑé»·¾³£ºVMware Workstation Pro 14£¨ÊÔÓð棩
ϵͳƽ̨£º
CentOS release 6.9 (Final) ÄÚºË 2.6.32 -696.el6 .x86_ 64
×îС»¯°²×°

³ýÁË6-DNS-1ÒÔÍ⣬ËùÓеÄÖ÷»úµÄDNS¾ùÖ¸Ïò192.168.7.254

ÕýÏòÇøÓòÉèÖÃ
#dig - t axfr hunk.tech
; <<>> DiG 9.8.2rc1- RedHat- 9.8.2- 0.62.rc1.el6 <<>> - t axfr hunk .tech
;; global options : + cmd
hunk.tech. 600 IN SOA 6- dns- 1.hunk.tech. admin.hunk.tech. 24 720 600 86400 10800
hunk.tech . 600 IN NS 6- dns- 1.hunk.tech.
6-dns-1.hunk .tech. 600 IN A 192.168.7.254
6-web-1.hunk .tech. 600 IN A 192.168.7.201
7-db-3.hunk .tech. 600 IN A 192.168.7.203
7-web-0.hunk .tech. 600 IN A 192.168.7.200
7-web-2.hunk .tech. 600 IN A 192.168.7.202
hunk.tech . 600 IN SOA 6-dns- 1.hunk.tech. admin.hunk .tech . 24 720 600 86400 10800

Inventory Ö÷»úÇåµ¥

Ansible±ØÐëͨ¹ýInventory À´¹ÜÀíÖ÷»ú¡£Ansible ¿Éͬʱ²Ù×÷ÊôÓÚÒ»¸ö×éµÄ¶ą̀Ö÷»ú,×éºÍÖ÷»úÖ®¼äµÄ¹ØÏµÍ¨¹ý inventory ÎļþÅäÖá£

Óï·¨¸ñʽ£º

µ¥Ì¨Ö÷»ú
green.example.com > FQDN
192.168.100.10 > IPµØÖ·
192.168.100.11:2222 > ·Ç±ê×¼SSH¶Ë¿Ú
[webservers] > ¶¨ÒåÁËÒ»¸ö×éÃû
alpha.example.org > ×éÄڵĵ¥Ì¨Ö÷»ú
192.168.100.10
[dbservers]
192.168.100.10 > һ̨Ö÷»ú¿ÉÒÔÊDz»Í¬µÄ×飬Õą̂Ö÷»úͬʱÊôÓÚ[webservers]
[group:children] > ×éǶÌ××飬group Ϊ×Ô¶¨ÒåµÄ×éÃû£¬childrenÊǹؼü×Ö£¬¹Ì¶¨Óï·¨£¬±ØÐëÌîд¡£
dns > group ×éÄÚ°üº¬µÄÆäËû×éÃû
db > group ×éÄÚ°üº¬µÄÆäËû×éÃû
[webservers]
www[001:006].hunk.tech > ÓйæÂɵÄÃû³ÆÁÐ±í£¬
ÕâÀï±íʾÏ൱ÓÚ£º
www001.hunk.tech
www002.hunk.tech
www003.hunk.tech
www004.hunk.tech
www005.hunk.tech
www006.hunk.tech
[databases]
db-[a:e].example.com > ¶¨Òå×Öĸ·¶Î§µÄ¼òдģʽ,
ÕâÀï±íʾÏ൱ÓÚ£º
db-a.example.com
db-b.example.com
db-c.example.com
db-d.example.com
db-e.example.com
ÒÔÏÂÕâ2Ìõ¶¨ÒåÁËһ̨Ö÷»úµÄÁ¬½Ó·½Ê½£¬¶ø²»ÊǶÁȡĬÈϵÄÅäÖÃÉ趨
localhost ansible_ connection = local
www.163.com ansible_ connection = ssh ansible_ ssh_ user = hunk
×îºó»¹ÓÐÒ»¸öÒþ²ØµÄ·Ö×飬ÄǾÍÊÇ all£¬´ú±íÈ«²¿Ö÷»ú,Õâ¸öÊÇÒþʽµÄ£¬²»ÐèҪд³öÀ´µÄ¡£

Inventory ²ÎÊý˵Ã÷

ansible_ ssh_ host
½«ÒªÁ¬½ÓµÄÔ¶³ÌÖ÷»úÃû.ÓëÄãÏëÒªÉ趨µÄÖ÷»úµÄ±ðÃû²»Í¬µÄ»°,¿Éͨ¹ý´Ë±äÁ¿ÉèÖÃ.
ansible_ssh_port
ssh¶Ë¿ÚºÅ .Èç¹û²»ÊÇĬÈϵĶ˿ںÅ,ͨ¹ý´Ë±äÁ¿ÉèÖÃ.ÕâÖÖ¿ÉÒÔʹÓà ip :¶Ë¿Ú 192.168.1.100 :2222
ansible_ ssh_ user
ĬÈ쵀 ssh Óû§Ãû
ansible_ ssh_ pass
ssh ÃÜÂë(ÕâÖÖ·½Ê½²¢²»°²È«,ÎÒÃÇÇ¿ÁÒ½¨ÒéʹÓà -- ask- pass »ò SSH ÃÜÔ¿ )
ansible_ sudo_ pass
sudo ÃÜÂë(ÕâÖÖ·½Ê½²¢²»°²È«,ÎÒÃÇÇ¿ÁÒ½¨ÒéʹÓà --ask-sudo - pass)
ansible_sudo_exe (new in version 1.8)
sudo ÃüÁî·¾¶(ÊÊÓÃÓÚ1.8¼°ÒÔÉϰ汾)
ansible_connection
ÓëÖ÷»úµÄÁ¬½ÓÀàÐÍ .±ÈÈç: local, ssh »òÕß paramiko. Ansible 1.2 ÒÔǰĬÈÏʹÓà paramiko .1.2 ÒÔºóĬÈÏʹÓà 'smart' ,'smart' ·½Ê½»á¸ù¾ÝÊÇ·ñÖ§³Ö ControlPersist, À´ÅжÏ'ss h' ·½Ê½ÊÇ·ñ¿ÉÐÐ.
ansible_ ssh_ private _key_ file
ssh ʹÓõÄ˽ԿÎļþ.ÊÊÓÃÓÚÓжà¸öÃÜÔ¿,¶øÄã²»ÏëʹÓà SSH ´úÀíµÄÇé¿ö.
ansible_shell_type
Ä¿±êϵͳµÄ shellÀàÐÍ.ĬÈÏÇé¿öÏÂ,ÃüÁîµÄÖ´ÐÐʹÓà 'sh' Óï·¨,¿ÉÉèÖÃΪ 'csh' »ò 'fish'.
ansible_ python_ interpreter
Ä¿±êÖ÷»úµÄ python ·¾¶.ÊÊÓÃÓÚµÄÇé¿ö: ϵͳÖÐÓжà¸ö Python, »òÕßÃüÁî·¾¶²»ÊÇ"/usr /bin /python",±ÈÈç \* BSD , »òÕß /usr /bin /python ²»ÊÇ 2.X °æ±¾µÄ Python.
ÎÒÃDz»Ê¹Óà "/usr /bin /env" »úÖÆ,ÒòΪÕâÒªÇóÔ¶³ÌÓû§µÄ·¾¶ÉèÖÃÕýÈ·,ÇÒÒªÇó "python" ¿ÉÖ´ÐгÌÐòÃû²»¿ÉΪ python ÒÔÍâµÄÃû×Ö(ʵ¼ÊÓпÉÄÜÃûΪpython26).
Óë ansible_ python_ interpreter µÄ¹¤×÷·½Ê½Ïàͬ,¿ÉÉ趨Èç ruby »ò perl µÄ·¾¶....

ÉÏÃæµÄ²ÎÊýÓÃÕ⼸¸öÀý×ÓÀ´Õ¹Ê¾¿ÉÄÜ»á¸ü¼ÓÖ±¹Û

some_host ansible_ ssh_port = 2222 ansible_ ssh_ user = manager
aws_host ansible_ssh_private_key_ file = /home /example / .ssh /aws .pem
freebsd_host ansible_ python_ interpreter = /usr /local / bin /python
ruby_ module_ host ansible_ ruby_ interpreter = /usr / bin /ruby. 1.9 .3

µÚÒ»Ìõ Ansible ÃüÁî

ºÜÖØÒªµÄÒ»µã£¬Ö÷»úÇåµ¥±ØÐëÒªÏÈÅäÖã¬ÓÉÓÚÕâ´î½¨ÁËÄÚ²¿DNS·þÎñÆ÷£¬ËùÒÔ£¬ÕâÀïµÄÖ÷»úʹÓÃÁËFQDNÃû³Æ¡£

#cat /etc /ansible /hosts
[web]
6-web- 1.hunk.tech
7-web- 0.hunk.tech
7-web- 2.hunk.tech
[group :children]
dns
db
[dns]
6-dns-1.hunk .tech

[db]
7-db-3.hunk.tech
192.168.7.[200 :203]
192.168.7.254

#ansible dns -m ping # ʹÓÃansible¶Ôdns×éÄÚµÄÖ÷»ú½øÐÐping Ä£¿é²âÊÔ

·Ç³£±§Ç¸Å¶£¬¾¹È»ÊÇʧ°ÜµÄ¡£ÎªÊ²Ã´ÄØ£¿AnsibleÊÇ»ùÓÚssh½øÐй¤×÷µÄ£¬ÄÇôµ±sshһ̨Զ³ÌÖ÷ÒªµÄʱºò£¬ÊDz»ÊÇÐèÒªÊäÈëÃÜÂëÄØ£¿¿ÉÊÇÕâÒ»ÌõÖ¸ÁûÓÐÌáʾÊäÈë¿ÚÁîÄØ

#ansible dns -m ping -k
¼ÓÉÏ-kÑ¡Ïîºó£¬»áÌáʾÊäÈëssh ÃÜÂëÁË¡£

ÁíÍ⣬ֵµÃ×¢ÒâµÄÊÇ£¬µ±Ö¸Áî³É¹¦ºÍʧ°Ü¶¼»áÓв»Í¬µÄÑÕÉ«·´Ó³³öÀ´£¬ÅäÒÔchanged :false,changed :SUCCESS,¿ÉÒÔÈÃÎÒÃǷdz£ÇåÎúµÄÖªµÀÖ´ÐеĽá¹û¡£

µ±Ö÷»úÊýÁ¿¶àµÄʱºò£¬ÊäÈëÃÜÂë¿É²»ÊÇÒ»¸öºÃ²îÊÂÄØ£¿Ç°ÃæµÄÕ½ÚÒѾ­½²¹ýÖ÷»úÖ®¼ä¿ÉÒÔʹÓûùÓÚÃÜÔ¿µÄSSHÁ´½Ó¡£ÎªÁ˸ü·½±ãµÄ¹ÜÀíÖ÷»ú£¬Õâ¸öÕ½ڵÄʵÑé¶¼ÓÃÕâÖÖ·½·¨¡£

»ùÓÚkeyµÄÃâÃÜÂëµÇ¼

#ssh-keygen
#ssh-copy-id 6-web-1.hunk.tech
#ssh-copy-id 6-DNS-1.hunk.tech
#ssh-copy-id 7-web-0.hunk.tech
#ssh-copy-id 7-web-2.hunk.tech
#ssh-copy-id 7-db-3.hunk.tech

ÏÖÔھͲ»»áÔÙÌáʾÃÜÂëµÄÎÊÌâÁË¡£

#ansible all -m ping
6-web-1.hunk.tech | SUCCESS
7-web-0.hunk.tech | SUCCESS
7-web-2.hunk.tech | SUCCESS
7-db-3.hunk.tech | SUCCESS
6-dns-1.hunk.tech | SUCCESS
192.168.7.201 | SUCCESS
192.168.7.200 | SUCCESS

ÊDz»ÊǺܼòµ¥Ñ½£¬AnsibleÓõÄÖ¸ÁîÒ²²»ÊÇÌ«¶à£¬¿ÉÒÔʹÓÃman ansibleºÍ¹Ù·½ÍøÕ¾È¥²éѯ¡£

http: //docs.ansible.com /ansible /latest/

Ansible³£ÓÃÃüÁîÓï·¨

ansible <host-pattern> [-m module_name] [options]
Ö¸Áî Æ¥Å乿ÔòµÄÖ÷»úÇåµ¥ -m Ä£¿éÃû Ñ¡Ïî
--version ÏÔʾ°æ±¾
-a Ä£¿é²ÎÊý£¨Èç¹ûÓУ©
-m module Ö¸¶¨Ä£¿é£¬Ä¬ÈÏΪcommand
-v Ïêϸ¹ý³Ì ¨Cvv -vvv¸üÏêϸ
--list- hosts ÏÔʾÖ÷»úÁÐ±í£¬¿É¼òд--list
-k, --ask -pass ÌáʾÁ¬½ÓÃÜÂ룬ĬÈÏKeyÑéÖ¤
-K£¬--ask- become-pass ÌáʾʹÓÃsudo ÃÜÂë
-C, -- check ¼ì²é£¬²¢²»Ö´ÐÐ
-T, --timeout = TIMEOUT Ö´ÐÐÃüÁîµÄ³¬Ê±Ê±¼ä£¬Ä¬ÈÏ10s
-u, --user=REMOTE_ USER Ö´ÐÐÔ¶³ÌÖ´ÐеÄÓû§
-U£¬ SUDO_USER, --sudo- user Ö¸¶¨sudu Óû§
-b, --become ´úÌæ¾É°æµÄsudo Çл»

ansible- doc: ÏÔʾģ¿é°ïÖú
ansible- doc [options] [module...]
-a ÏÔʾËùÓÐÄ£¿éµÄÎĵµ
-l, --list Áгö¿ÉÓÃÄ£¿é
-s, --snippet ÏÔʾָ¶¨Ä£¿éµÄ¼òҪ˵Ã÷
Àý×Ó£º#ansible-doc ping
ÓÉÓÚansibleµÄÄ£¿éÓÐ1378¸ö (2.4.2.0),²¢ÇÒÒ»Ö±ÔÚ³ÖÐø¸üС£Òò´Ë£¬Õâ¸öÖ¸Áî±ØÐëÒªÕÆÎյġ£
# ansible-doc -l |wc -l
1378

Ansible Ö÷»ú Æ¥ÅäÁбí

ͨÅä·û

×¢ÒâÓõ¥ÒýºÅ
* Æ¥ÅäÈÎÒâ×Ö·û
#ansible '*' -m ping µÈͬÓÚ #ansible all -m ping
#ansible '*dns*' -m ping
6-dns-1.hunk.tech | SUCCESS
? Æ¥Åäµ¥¸ö×Ö·û
#ansible '192.168.7.20?' -m ping
192.168.7.201 | SUCCESS
192.168.7.203 | SUCCESS
192.168.7.202 | SUCCESS
192.168.7.200 | SUCCESS
: »òÕß
#ansible '192.168.7.201:192.168.7.254' -m ping
192.168.7.201 | SUCCESS
192.168.7.254 | SUCCESS
:& ²¢ÇÒ (Âß¼­Óë)
#ansible 'test3: &test' --list
hosts (1):
192.168.7.254
:! Âß¼­·Ç¡£ÔÚtest3 ×éÄÚ£¬µ«ÊDz¢²»ÔÚtest×éÄÚ
#ansible 'test3:!test' --list > Óõ½¸Ð̾ºÅµÄʱºò£¬¼ÇµÃÒýºÅΪµ¥ÒýºÅ£¬·ñÔò»á±»bash½âÎöΪÀúÊ·ÃüÁî
hosts (2):
192.168.7.200
192.168.7.203

ʹÓÃÕýÔò±í´ïʽ
~±íʾºóÃæÊÇÕýÔòÆ¥Å䣬עÒâ~ºóÃæ²»ÄÜÓпոñ
#ansible '~[67]- (db|dns).*\.hunk.*' --list
hosts (2):
6-dns-1.hunk.tech
7-db-3.hunk.tech

ÕâÀïдһÌõÕýÔòµÄ¿Ó,ÎÒÃÇÔÚÓÃbash½Å±¾µÄʱºò£¬Æ¥ÅäÊý×Ö¿ÉÒÔʹÓÃ[0-9]»ò[[:digit:]],ÔÚÓÃAnsibleµÄʱºò£¬ÎÒÃÇÀ´¿´Ï²»Í¬µÄЧ¹û°É

#cat /etc /ansible /hosts
[web]
6web-1.hunk.tech
7web-0.hunk.tech
7web-2.hunk.tech
[group:children]
dns
db
[dns]
6-dns-1.hunk.tech
[db]
7-db-3.hunk.tech
[test2]
192.168.7.[200:203]
192.168.7.254
[test]
192.168.7.254
[test3]
192.168.7.200
192.168.7.254
192.168.7.203
DNS¶¼ÊÇ¿ÉÒÔÕýÈ·½âÎö³öÀ´µÄ£¬²»Òª»³ÒÉ
6-dns-1.hunk.tech. 600 IN A 192.168.7.254
6-web-1.hunk.tech. 600 IN A 192.168.7.201
7-db-3.hunk.tech. 600 IN A 192.168.7.203
7-web-0.hunk.tech. 600 IN A 192.168.7.200
7-web-2.hunk.tech. 600 IN A 192.168.7.202
#ansible '~^[[:digit:]]' --list ÓÐÈË˵ÕâÖÖд·¨»á±¨´í£¬¿ÉÊÇÖ÷»ú¶¼ÊÇ centos7.4£¬°æ±¾¶¼ÊÇÒ»Ñù
hosts (7): ÕâÀïÆ¥Åä³ö7̨Ö÷»ú
192.168.7.200
192.168.7.201
192.168.7.202
192.168.7.203
192.168.7.254
6-dns-1.hunk.tech
7-db-3.hunk.tech
#ansible '~^[0-9]' --list
hosts (10): ÕâÀïÆ¥Åä³ö10̨Ö÷»ú
6web- 1.hunk.tech
6-dns- 1.hunk.tech
7-db- 3.hunk.tech
7web- 0.hunk.tech
7web- 2.hunk.tech
192.168.7.254
192.168.7.201
192.168.7.200
192.168.7.203
192.168.7.202
#ansible '~^[ [:digital:] ]' --list
hosts (10): ÕâÀïÆ¥Åä³ö10̨Ö÷»ú
6web-1.hunk.tech
7web-0.hunk.tech
7web-2.hunk.tech
192.168.7.200
192.168.7.201
192.168.7.202
192.168.7.203
192.168.7.254
6- dns- 1.hunk.tech
7- db -3.hunk.tech

·ÖÏí2¸öÕýÔò±í´ïʽµÄÍøÖ·

https://en.wikipedia.org /wiki /Regular_ expression#POSIX_ basic_ and_ extended

python2µÄ

https://docs.python.org /2 /library /re.html

²»Í¬Èí¼þ¶ÔÕýÔòµÄ±í´ï¶¼²»Ò»Ñù£¬»¹ÊÇÓÃÄÇЩͨÓÃÐÔÇ¿µÄ°É¡£

[0-9]´¿Êý×Ö
[a-zA-Z0-9]Êý×ÖºÍ×Öĸ

Ansible µÄÃüÁîÖ´Ðйý³Ì

ÒÔ ansible db -m command -a 'ls -l /' -vvv ÕâÌõÃüÁîΪÀý£¬¸ù¾ÝÏÔʾµÄÐÅϢʱÐнâ¶Á

1. ¼ÓÔØ×Ô¼ºµÄÅäÖÃÎļþ£¬Ä¬ÈÏ/etc /ansible/ansible.cfg
Using /etc /ansible /ansible.cfg as config file
2.Æ¥ÅäÖ÷»úÇåµ¥
Parsed /etc /ansible /hosts inventory source with ini plugin
3. ¼ÓÔØÖ¸Áî¶ÔÓ¦µÄÄ£¿éÎļþ£¬Èç command£¬Éú³É.pyµÄÎļþµ½±¾»úµÄÁÙʱĿ¼£¬Õâ¸öĿ¼¾ÍÊÇÔÚ/etc /ansible /ansible .cfg ¶¨ÒåµÄ
Using module file /usr/lib/python2.7/site-packages / ansible / modules/ commands /command.py
PUT /tmp /tmp4JvsLH TO /root/.ansible/tmp/ansible- tmp -1517301292 .6 - 155771303493861 /command.py
4. ͨ¹ýansible ½«Ä£¿é»òÃüÁîÉú³É¶ÔÓ¦µÄÁÙʱpyÎļþ£¬²¢½«¸ÃÎļþ´«ÊäÖÁÔ¶³Ì·þÎñÆ÷µÄ¶ÔÓ¦Ö´ÐÐÓû§$HOME /.ansible /tmp /ansible- tmp- Êý×Ö/XXX .PY Îļþ£¬
Õâ¸öĿ¼¾ÍÊÇÔÚ/etc/ansible/ansible.cfg¶¨ÒåµÄ
( umask 77 && mkdir - p "` echo /root /.ansible /tmp/ ansible - tmp- 1517301292.6- 155771303493861 `" ....)
sftp > put /tmp/tmp4JvsLH /root/.ansible/tmp/ansible-tmp - 1517301292.6- 155771303493861 /command.py\n'
5. ¸øÎļþ+x ȨÏÞ
'chmod u+x /root /.ansible /tmp /ansible- tmp-151730129 2.6- 155771303493861 / /root /.ansible /tmp/ ansible- tmp- 1517301292.6- 155771303493861 / command.py && sleep 0'
6. Ö´Ðв¢·µ»Ø½á¹û
'/usr /bin/ python /root/.ansible /tmp /ansible-tmp-1517301292 .6- 155771303493861 /command.py;
7. ɾ³ýÁÙʱpyÎļþ£¬sleep 0Í˳ö
rm -rf "/root /.ansible /tmp/ansible-tmp-1517301292.6-155771303493861 /" > /dev /null 2 >&1 && sleep 0
8.¶Ï¿ªÔ¶³ÌÖ÷»úÁ¬½Ó
'Shared connection to 7- db -3.hunk.tech closed.\r\n')

Ö´Ðнá¹û״̬

ÂÌÉ«£ºÖ´Ðгɹ¦²¢ÇÒ²»ÐèÒª×ö¸Ä±äµÄ²Ù×÷

¡Á¡Á¡Á£ºÖ´Ðгɹ¦²¢ÇÒ¶ÔÄ¿±êÖ÷»ú×ö±ä¸ü

ºìÉ«£ºÖ´ÐÐʧ°Ü

¿ÉÒÔÔÚÅäÖÃÎļþÖж¨Òå
[colors]
#highlight = white
#verbose = blue
#warn = bright purple
#error = red
#debug = dark gray
#deprecate = purple
#skip = cyan
#unreachable = red
#ok = green
#changed = yellow
#diff_add = green
#diff_remove = red
#diff_lines = cyan

   
2799 ´Îä¯ÀÀ       31
Ïà¹ØÎÄÕÂ

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

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

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