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

1Ôª 10Ôª 50Ôª





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



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

AnsibleÌØµã£º

»ùÓÚPython¿ª·¢£¬·Ç³£ÈÝÒ×½øÐжþ´Î¿ª·¢¡£

Ansible·á¸»µÄÄÚÖÃÄ£¿é£¬»ù±¾¿ÉÒÔÂú×ãÒ»ÇÐÐèÇó

¹ÜÀíģʽ·Ç³£¼òµ¥£¬Ò»ÌõÃüÁî¿ÉÒÔÓ°ÏìÉÏǧ̨»úÆ÷¡£

ÎÞ¿Í»§¶Ëģʽ£¬µ×²ãͨ¹ýSSHͨÐÅ

AnsibleÔ­Àí½éÉÜ£º

AnsibleûÓпͻ§¶Ë£¬Ò²²»ÐèÒªÔÚ±»¹ÜÀíÖ÷»úÌí¼Ó´úÀí³ÌÐò£¬Í¨¹ýSSHÍê³Éµ×²ãͨÐÅ£¬¶øSSHÔÚLinuxÖÐĬÈÏÒѾ­´æÔÚ£¬ÔÚWindowsÖÐÐèÒªpowershell£¬ansibleÒªÇó¹ÜÀí¶Ë±ØÐëÊÇLinux²Ù×÷ϵͳ£¬ÔÚ¹ÜÀí½Úµãͨ¹ýÓ¦ÓÃÄ£¿é½«Ö¸Áî·¢Ë͵½±»¹ÜÀíÖ÷»úÉÏ£¬²¢ÔÚÖ´ÐÐÍê±Ïºó×Ô¶¯É¾³ýÁÙʱÎļþ¡£

AnsibleʹÓÃÖеIJ»Í¬½ÇÉ«£¬¿ÉÒÔ·ÖΪÒÔÏÂÈý´ó²¿·Ö£º

ʹÓÃÕߣºÊ¹ÓÃAnsibleʵÏÖ×Ô¶¯»¯ÔËά¿ØÖƶˣ»

Ansible¹¤¾ß¼¯£ºansible¿ÉÒÔʵÏֵŦÄÜ£»

×÷ÓöÔÏó£ºAnsible¿ÉÒÔÓ°ÏìµÄÖ÷»ú¡£

ʵÑé»·¾³£º

һ̨Ansible£º192.168.3.1

±»¿Ø¶Ëhost1£º192.168.3.2

±»¿Ø¶Ëhost2£º192.168.3.3

Ò».×¼±¸¹¤×÷£º

[root@localhost ~]# cat <<END>>
/etc/hosts
192.168.10.20 ansible
192.168.10.30 host1
192.168.10.40 host2
END
[root@localhost ~]# vim /etc/hostname
ansible
:wq
[root@localhost ~]# reboot

¶þ.°²×°Ansible£º

ÐèÒª×Ô¼ºÅäÖÃyumÔ´

AnsibleµÄyum°²×°°ü£¬½«Æä½âѹµ½"/yum"Ŀ¼ÏÂ

[root@ansible ~]# mkdir /yum/
[root@ansible ~]# cd /yum
[root@ansible yum]# ls
ansible-2.3.1.0-1.el7.noarch.rpm
ansible-2.3.1.0-3.el7.noarch.rpm
apr-1.4.8-3.el7.x86_64.rpm
apr-util-1.5.2-6.el7.x86_64.rpm
...Ê¡ÂÔÆäÓಿ·Ö
[root@ansible yum]# rm -rf /etc
/yum.repos.d/*
[root@ansible yum]# vim /etc/yum.
repos.d/centos.repo #ÅäÖÃyumÔ´
[local]
name=local
baseurl=file:///yum/
enabled=1
gpgcheck=0
£ºwq
[root@ansible yum]# createrepo /yum
/ #Éú³ÉrepodateÎļþ
[root@ansible yum]# yum -y install ansible

ÑéÖ¤°²×°½á¹û£º

[root@ansible yum]# ansible --version
ansible 2.3.1.0
config file = /etc/ansible/ansible.cfg
configured module search path
= Default w/o overrides
python version = 2.7.5
(default, Aug 4 2017, 00:39:18)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)]

Èý.´´½¨SSH½»»¥ÃâÃܵǼ£º

Ansibleͨ¹ýssh¶ÔÉ豸½øÐйÜÀí£¬¶øssh°üº¬Á½ÖÖÈÏÖ¤·½Ê½£ºÒ»ÊÇͨ¹ýÃÜÂëÈÏÖ¤£¬¶þÊÇͨ¹ýÃÜÔ¿¶ÔÈÏÖ¤£¬Ç°ÕßÊDZØÐëºÍϵͳ½»»¥£¬¶øºóÕßÊÇÃâ½»»¥µÇ½¡£ÈçÏ£Íûͨ¹ýansible×Ô¶¯¹ÜÀíÉ豸£¬Ó¦¸ÃÅäÖÃΪÃâ½»»¥Ê½µÇ¼±»¹ÜÀíÉ豸¡£

[root@ansible ~]# ssh-keygen
-t rsa #Éú³ÉÃÜÔ¿
Generating public/private rsa key pair.
Enter file in which to save the key
(/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved
in /root/.ssh/id_rsa.
Your public key has been saved
in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:IXw+ZtlGQWZ805oSWy9WHhi
DYHHquOYOs7OG6D61X2I root@ansible
The key's randomart image is:
+---[RSA 2048]----+
| +=*.o+ |
| . . =+.=.+ |
| o + .= B . |
| * =o = o |
| . S oo . |
| . + o |
| ...+Eo. |
|....+*o |
|oo..+=o |
+----[SHA256]-----+
[root@ansible ~]# ssh-copy-id root
@192.168.3.2 #½«×Ô¼ºµÄÃÜÔ¿ÉÏ´«µ½±»Ô¶³Ì½Úµã·þÎñÆ÷
[root@ansible ~]# ssh 192.168.3.2
[root@host1 ~]# exit
[root@ansible ~]# ssh-copy-id root@192.168.3.3
[root@ansible ~]# ssh 192.168.3.3
[root@host2 ~]# exit

ËÄ.ÅäÖÃAnsible£º

Ansibleͨ¹ý½«É豸ÁбíÒÔ·Ö×éµÄ·½Ê½Ìí¼Óµ½/etc/ansible/hostsÎļþÀ´ÊµÏÖ¶ÔÉ豸½øÐйÜÀí£¬ËùÒÔÔÚÕýʽ¹ÜÀí֮ǰ£¬Ê×ÏÈÒª±àдhostsÎļþ£¬hostsÎļþÖУ¬ÒÔ[ ]°üº¬µÄ²¿·Ö´ú±í×éÃû£¬ÁбíÖ§³ÖÖ÷»úÃûºÍIPµØÖ·£¬Ä¬ÈÏÇé¿öÏ£¬Í¨¹ý·ÃÎÊ22ºÅ¶Ë¿ÚÀ´¹ÜÀíÉ豸£¬ÈôÄ¿±êÖ÷»úÉÏʹÓÃÁË·ÇĬÈϵÄssh¶Ë¿Ú£¬»¹¿ÉÒÔÔÚÖ÷»úÃû³ÆÖ®ºóʹÓÃðºÅ¼Ó¶Ë¿ÚºÅ±íÃ÷£¬ÒÔÐÐΪµ¥Î»·Ö¸îÅäÖá£ÁíÍ⣬hostsÎļþ»¹Ö§³ÖͨÅä·û¡£

[root@ansible ~]# vim /etc/ansible/hosts
[web]
192.168.3.2
192.168.3.3
[ftp]
ftp.benet.com:222 ##ͨ¹ý222¶Ë¿Ú½øÐйÜÀí
[mail]
zs1.accp.com
zs[2:5].accp.com ##[2:5]
±íʾ2~5Ö®¼äµÄËùÓÐÊý×Ö£¬
¼´±íʾzs2.accp.com£¬zs3.accp.com...

¿ÉÒÔ½«Í¬Ò»¸öÖ÷»úͬʱ¹éÊô²»Í¬µÄ×éÖÐ

ÅäÖÃÍê³Éºó¿ÉÒÔÕæ¶àhosts¶¨ÒåµÄ×é½øÐÐÔ¶³Ì²Ù×÷£¬Ò²¿ÉÒÔÕë¶Ô×éÖеÄijһ¸ö»ò¶à¸öÖ÷»ú½øÐвÙ×÷¡£

Îå.½øÐÐÖ¸¶¨»¯ÅúÁ¿²Ù¿Ø£º

Ansible ·µ»ØµÄÖµ·Ç³£ÓѺã¬Ò»°ã»áÓÃÈýÖÖÑÕÉ«À´±íʾִÐнá¹û£º

*ÂÌÉ«£º±íʾִÐгɹ¦²¢ÇÒûÓжÔÄ¿±ê»úÆ÷×öÐÞ¸Ä

*ºìÉ«£º±íʾִÐйý³ÌÓÐÒì³£

*»ÆÉ«£º±íʾÃüÁîÖ´ÐкóÓÐ״̬±ä»¯

1¡¢¶Ôweb×éÖеÄ192.168.3.2Ö÷»ú²Ù×÷£¬Í¨¹ý-limit²ÎÊýÏÞ¶¨Ö÷»úµÄ±ä¸ü¡£

[root@ansible ~]# ansible web -m command -a
¡°systemctl status httpd¡± --limit ¡°192.168.3.2¡±

´Ë´¦Ã»ÓпªÆôhttpd·þÎñ£¬ËùÓлá±êºì±¨´í£¬Èç¹û³öÏÈÕâ¸ö˵Ã÷ÒѾ­¿ÉÒÔ½øÐÐÔ¶³ÌÅúÁ¿²Ù¿Ø

2¡¢Ö»¶Ô192.168.3.2Ö÷»ú²Ù×÷£¬Í¨¹ýIPÏÞ¶¨Ö÷»úµÄ±ä¸ü¡£

[root@ansible ~]# ansible 192.168.3.2 -m command -a ¡°systemctl status httpd¡±

´Ë´¦ÎªÂÌ£¬Ôò±íʾ¸ÃÖØÆôhttp·þÎñ²Ù×÷Ö´Ðгɹ¦

3¡¢Ö»¶Ô192.168.3.0Íø¶ÎµÄÖ÷»ú²Ù×÷£¬Í¨¹ýͨÅä·ûÏÞ¶¨Ö÷»úµÄ±ä¸ü¡£

[root@ansible ~]# ansible 192.168.3.* -m command -a ¡°systemctl status httpd¡±

´Ë´¦±êÃ÷¶ÔÁ½Ì¨3Íø¶ÎµÄ·þÎñÆ÷³É¹¦½øÐÐÁËÖØÆô²Ù×÷

4¡¢¸ù¾Ý×飬ÅúÁ¿»¯½øÐбä¸ü¡£

[root@ansible ~]# ansible web -m command -a ¡°systemctl status httpd¡±

´Ë´¦ÒàΪ²Ù×÷³É¹¦½øÐÐ

Áù.AnsibleµÄÃüÁ

1.ansible

AnsibleÊÇÉú²ú»·¾³ÖÐʹÓ÷dz£Æµ·±µÄÃüÁîÖ®Ò»£¬Ö÷ÒªÔÚÒÔϳ¡¾°Ê¹Óãº

·Ç¹Ì»¯ÐèÇ󣺷ǹ̶¨²Ù×÷

ÁÙʱһ´ÎÐÔ²Ù×÷

¶þ´Î¿ª·¢½Ó¿Úµ÷ÓÃ

ansibleÃüÁîÏê½â£ºansible [options]

-v ##´òÓ¡ÏêϸÐÅÏ¢

-i ÎļþλÖà ##Ö¸¶¨hostsÎļþµÄ´æ·ÅλÖÃ

-f ½ø³ÌÊýÁ¿ ##Ö¸¶¨fork³öµÄ½ø³ÌÊýÁ¿Öµ

-m Ä£¿éÃû³Æ ##Ö¸¶¨Ä£¿éÃû³Æ£¬Ä¬ÈÏÄ£¿éÃû³ÆÎªcommand

-a Ä£¿éµÄ²ÎÊý»òÃüÁî ##Ö¸¶¨moduleÄ£¿éµÄ²ÎÊý»òÕßÃüÁî

-k ÃÜÂë ##ÊÖ¶¯Ö¸¶¨SSHµÄÃÜÂë

-sudo »ùÓÚsudoÓû§Ö¸¶¨

-u Óû§Ãû ##Ö¸¶¨Ö´ÐÐÓû§

-C ²âÊÔÖ¸¶¨¹ý³Ì ##²âÊÔ£¬²»¸Ä±äÕæÊµÄÚÈÝ£¬Ï൱ÓÚÔ¤ÑÝ

-T Ö¸¶¨ÃüÁʱʱ¼äµ¥Î»ÎªÃë ##³¬Ê±Ê±¼ä£¬Ä¬ÈÏÊÇ10s

¨Cversion ##²é¿´ansibleµÄ°æ±¾ÐÅÏ¢

eg:

a:¼ì²éËùÓÐÖ÷»úÊÇ·ñ´æ»î£º

[root@ansible ~]# ansible all -f 5 -m ping

b:Áгöweb×éÖÐËùÓеÄÁÐ±í£º

[root@ansible ~]# ansible web --list

c:ÅúÁ¿ÏÔʾweb×éÖдÅÅ̵Ŀռ䣺

[root@ansible ~]# ansible web -m command -a ¡°df -hT¡±

d.²é¿´Ó²¼þÐÅÏ¢

[root@ansible ~]# ansible 192.168.3.2 -m setup [root@ansible ~]#

ansible 192.168.3.2 -m setup -a ¡°filter=ansible_ens34¡±

2.ansible-doc

ansible-docÓÃÀ´²éѯansibleÄ£¿éÎĵµµÄ˵Ã÷£¬ÀàËÆÓÚmanÃüÁÕë¶Ô±³¸öÄ£¿é¶¼ÓÐÏêϸµÄÓ÷¨ËµÃ÷¼°Ó¦Óð¸Àý½éÉÜ

[root@ansible ~]# ansible-doc ping

3.ansible-playbook

ansible-playbookÊÇÈÕ³£Ó¦ÓÃÖÐʹÓÃÆµÂÊ×î¸ßµÄÃüÁÀàËÆÓÚLinuxÖеÄsh»òsource£¬ÓÃÀ´Ö´ÐÐϵÁÐÈÎÎñ£¬Æä¹¤×÷»úÖÆÊÇ£ºÍ¨¹ý¶ÁȡԤÏȱàдºÃµÄplaybookÎļþʵÏÖ¼¯Öд¦ÀíÈÎÎñ£¬ansible-playbookÃüÁîºó¸úymlºÏÊʵÄplaybookÎļþ£¬playbookÎļþ´æ·ÅÁËÒªÖ´ÐеÄÈÎÎñ´úÂ룬ÃüÁîʹÓ÷½Ê½ÈçÏ£º

[root@ansible ~]# ansible-playbook playbook.yml

#playbook.ymlÎļþÐèҪʵÏÖдºÃ£¬½¨ÒéÖ´ÐÐʱʹÓþø¶Ô·¾¶£¬

#ºóÃæ½«»áÓõ½

4.ansible-console

ansible-consoleÊÇansibleΪÓû§ÌṩµÄÒ»Ì×½»»¥Ê½¹¤¾ß£¬ÀàËÆÓÚWindowsÖеÄcmdÒÔ¼°LinuxÖеÄshell¡£Óû§¿ÉÒÔÔÙansible-consoleÐéÄâ³öÀ´µÄÖÕ¶ËÉÌÏñshellÒ»ÑùʹÓÃansibleÄÚÖõĸ÷ÖÖÃüÁÕâΪϰ¹ßÓÚʹÓÃshell½»»¥·½Ê½µÄÓû§ÌṩÁËÁ¼ºÃµÄʹÓÃÌåÑ飬ÔÚÖÕ¶ËÊäÈëansible-consoleÃüÁîºó£¬ÏÔʾÈçÏ£º

[root@localhost ~]# ansible-console

#²Ù×÷ÓëshellÀàËÆ£¬Ö§³Ötab¼ü£¬¿ì½Ý¼üCtrl+CÍ˳öÐéÄâÖÕ¶Ë

Æß.AnsibleÄ£¿é£º

1.commandÄ£¿é:

CommandÄ£¿éÔÚÔ¶³ÌÖ÷»úÉÏÖ´ÐÐÃüÁ²»Ö§³Ö¹ÜµÀ£¬Öض¨ÏòµÈshellµÄÌØÐÔ£¬³£ÓõIJÎÊýÈçÏ¡£

chdir£ºÔÚÔ¶³ÌÖ÷»úÉÏÖ´ÐÐÃüÁîǰҪÌáǰ½øÈëĿ¼

creates£ºÔÚÃüÁîÔËÐÐʱ´´½¨Ò»¸öÎļþ£¬Èç¹ûÎļþÒÑ´æÔÚ£¬Ôò²»»áÖ´Ðд´½¨ÈÎÎñ¡£

removes£ºÔÚÃüÁîÔËÐÐʱÓï³öÒ»¸öÎļþ£¬Èç¹ûÎļþ²»´æÔÚ£¬Ôò²»»áÖ´ÐÐÒÆ³ýÈÎÎñ

executeble£ºÖ¸Ã÷ÔËÐÐÃüÁîµÄshell³ÌÐò

ÔÚËùÓÐÖ÷»úÉÏÖ´ÐС°ls ./¡±ÃüÁîʽ£¬ÔËÐÐǰÇл»µ½/homeĿ¼

[root@ansible ~]# ansible all -m command -a ¡°chdir=/home ls ./¡±

2.shellÄ£¿é:

ShellÄ£¿éÔÚÔ¶³ÌÖ÷»úÖ´ÐÐÃüÁÏ൱ÓÚµ÷ÓÃÔ¶³ÌÖ÷»úµÄshell½ø³Ì£¬È»ºóÔÚ¸ÃshellÏ´ò¿ªÒ»¸ö×ÓshellÔËÐÐÃüÁî¡£ºÍcommandÄ£¿éµÄÇø±ð¾ÍÊÇËüÖ§³ÖshellÌØÐÔ£¬È磺¹ÜµÀ¡¢Öض¨ÏòµÈ¡£

[root@ansible ~]# ansible web -m shell -a ¡°echo ¡°hello¡± >> /tmp/hello.txt¡±

[root@ansible ~]# ansible web -m shell -a ¡°cat /tmp/hello.txt¡±

3.copyÄ£¿é£º

copyÄ£¿éÓÃÓÚ¸´ÖÆÖ¸¶¨Ö÷»úÎļþµ½Ô¶³ÌÖ÷»úÖ¸¶¨Î»Ö㬳£¼û²ÎÊýÈçÏ¡£

src ##Ô´ÎļþλÖÃ

content ##ÊÖ¶¯±àдԴÎļþÄÚÈÝ

dest ##Ä¿±êÖ÷»úÉϵÄÄ¿±êÎļþλÖÃ

mode ##ÉèÖÃÎļþȨÏÞ

owner ##ÉèÖÃÎļþÊôÖ÷

group ##ÉèÖÃÎļþÊô×é

force ##Ç¿ÖÆ¸²¸ÇÎļþ

[root@ansible ~]# cat << END >>/root/ansible.txt

> I am ansible

> END

[root@ansible ~]# ansible web -m copy -a
¡°src=/root/ansible.txt dest=/tmp/ mode=777 owner=nobody group=root¡±

[root@ansible ~]# ansible web -m shell -a ¡°cat /tmp/ansible.txt¡±

4.hostnameÄ£¿é:

HostnameÄ£¿éÓÃÓÚ¹ÜÀíÔ¶³ÌÖ÷»úÉϵÄÖ÷»úÃû£¬³£ÓòÎÊýÈçÏ£º

#name£ºÖ¸Ã÷Ö÷»úÃû

[root@ansible ~]# ansible web -m hostname -a ¡°name=Apache¡±

[root@ansible ~]# ansible web -m shell -a ¡°cat /etc/hostname¡±

5.yumÄ£¿é

ÓÃÀ´Ö¸¶¨yum°²×°·þÎñ£¬³£¼û²ÎÊýÈçÏ£º

name ##Èí¼þ°üÃû³Æ

state=present|latest|absent ##Èí¼þ°ü״̬£¬present£º±íʾ°²×°³ÌÐò°ü£¬latest£º±íʾ°²×°×îа汾µÄ³ÌÐò°ü£¬absent£º±íÊ¾Ð¶ÔØ³ÌÐò°ü

update_cache ##°²×°Èí¼þ°üǰ¸üлº´æ

enablerepo ##Ö¸¶¨yumÔ´Ãû³Æ

conf_file ##Ö¸¶¨yum°²×°Ê±Ëù¼ÓÔØµÄyumÅäÖÃÎļþ

6.serviceÄ£¿é

ÓÃÀ´¹ÜÀíÔ¶³ÌÖ÷»úÉϵķþÎñµÄÄ£¿é£¬³£¼û²ÎÊýÈçÏÂ:

name: ##±»¹ÜÀíµÄ·þÎñÃû³Æ

state=started|stopped|restarted|reloaded: ##¶¯×÷£ºÆô¶¯£¬¹Ø±Õ£¬ÖØÆô£¬ÖØÔØ

enabled=yes|no ##ÊÇ·ñÉèÖÿª»úÆô¶¯

runlevel: ##Èç¹ûÉ趨ÁËenabled¿ª»úÆô¶¯£¬ÔòÒª¶¨ÒåÔÚÄÄЩÔËÐÐÄ¿±êÏÂ×Ô¶¯ÔËÐÐ

[root@ansible ~]# ansible web -m service -a ¡°name=httpd state=started enabled=yes¡± »ò

[root@ansible ~]# ansible web -m shell -a ¡°systemctl start httpd¡±

Êý¾ÝÁ¿Ì«¶à£¬¾Íչʾµ½Õâ¶ù

7.userÄ£¿é

ÒÔÏÂÊÇuserÄ£¿é²ÎÊý£º

name ##Óû§Ãû

home ##¼ÒĿ¼λÖÃ

shell ##Ö¸¶¨µÇ½shell

uid ##Ö¸¶¨Óû§uid

state ##״̬£¬presentΪн¨¡¢absentΪɾ³ý

force ##Ç¿ÖÆÉ¾³ý

[root@ansible ~]# ansible web -m user -a ¡°name=user1 system=yes uid=501 group=root groups=sshd shell=/sbin/nologin home=/home/user1 password=user1 comment=¡°testuser¡±¡±

#´ËΪ´´½¨Ò»¸öuser1µÄÓû§£¬uidΪ501£¬Êô×éΪroot¡­

[root@ansible ~]# ansible web -m shell -a ¡°tail -1 /etc/passwd¡±

#²é¿´/etc/passwdÈ·ÈϸÃÓû§ÊÇ·ñ´´½¨

[root@ansible ~]# ansible web -m user -a ¡°name=user1 remove=yes state=absent¡±

#ɾ³ýÓû§¼°¼ÒĿ¼

[root@ansible ~]# ansible web -m shell -a ¡°tail -1 /etc/passwd¡±

#²é¿´ÊÇ·ñɾ³ýÓû§user1

°Ë.playbookÅäÖÃÎļþ£º

PlaybookÅäÖÃÎļþʹÓÃyamlÓï·¨£¬¾ßÓмò½àÃ÷ÁË¡¢½á¹¹ÇåÎúµÈÌØµã¡£PlaybookÅäÖÃÎļþÀàËÆÓÚshell½Å±¾£¬ÊÇÒ»¸öYAML¸ñʽµÄÎļþ£¬ÓÃÓÚ±£´æÕë¶ÔÌØ¶¨ÐèÇóµÄÈÎÎñÁÐ±í£»

YAMLÓï·¨ºÍÆäËû¸ß¼¶ÓïÑÔÀàËÆ£¬Æä½á¹¹Í¨¹ýËõ½øÀ´Õ¹Ê¾£¬Í¨¹ý¡°-¡±À´´ú±íÏͨ¹ý¡°:¡±À´·Ö¸î¼üºÍÖµ£¬Õû¸öδ¼ûÒÔ¡°¡ª¡±¿ªÊ¼£¬ÒÔ¡°¡­¡±½áÊø¡£

ËùÓеġ°-ºá¸Ü¡±ºÍ¡°£ºÃ°ºÅ¡±ºóÃæ¶¼Óпոñ£¬¶øÇÒҪעÒâËõ½øºÍ¶ÔÆë¡£

PlaybookµÄºËÐÄÔªËØ:

hosts:ÈÎÎñµÄÄ¿±êÖ÷»ú£¬¶à¸öÖ÷»úÓÃðºÅ·Ö¸î£¬Ò»°ã»áµ÷ÓÃ/etc/ansible/hostsÖеķÖ×éÐÅÏ¢

remote_user:Ô¶³ÌÖ÷»úÉÏ£¬ÔËÐдËÈÎÎñµÄÉí·ÝĬÈÏΪroot

tasks:ÈÎÎñ£¬¶¨ÒåµÄ¾ßÌåÈÎÎñ£¬ÓÉÄ£¿é¶¨ÒåµÄ²Ù×÷ÁÐ±í¡£

handlers:´¥·¢Æ÷£¬ÀàËÆtasks£¬Ö»ÊÇÔÚÌØ¶¨Ìõ¼þϲŻᴥ·¢µÄÈÎÎñ¡£

roles:½ÇÉ«£¬½«hosts°þÀë³öÈ¥£¬ÓÉtasks¡¢handlersµÈËù×é³ÉµÄÒ»ÖÖÌØ¶¨µÄ½á¹¹¼¯ºÏ

PlaybookÎļþ¶¨ÒåµÄÈÎÎñÐèÒªÌý¹ýansible-plyabookÃüÁî½øÐе÷ÓÃÖ´ÐУ¬

ÃüÁîÓï·¨£º

[root@localhost ~]# ansible-playbook [option] /PATH/TO/PLAYBOOK.yaml

[option]²¿·Ö¹¦ÄܽâÎö

¨Csyntax-check:¼ì²âymlÎļþµÄÓï·¨

-C£ºÔ¤²âÊÔ£¬²»»á¸Ä±äÄ¿±êÖ÷»úÈκÎÉèÖÃ

¨Clist-hosts£ºÁгöymlÎļþÓ°ÏìµÄÖ÷»úÁбí

¨Clist-tasks£ºÁгöymlÎļþµÄÈÎÎñÁбí

-t TAGS£º±íʾִֻÐÐÖ¸¶¨±êÇ©µÄÈÎÎñ

¨Cskip-tags=SKIP_ATGS£º±íÊ¾ÒÆ³ýÁËÖ¸¶¨±êÇ©µÄÈÎÎñ£¬Ö´ÐÐÆäËûÈÎÎñ¡£

¨Cstart-at-tasks=START-AT£º´ÓÖ¸¶¨µÄÈÎÎñ¿ªÊ¼ÍùÏÂÖ¸¶¨¡£

eg:

[root@ansible ~]# ansible-playbook
--syntax /etc/ansible/a.yml
##ymlÎļþÓï·¨¼ì²é
playbook: /etc/ansible/a.yml

[root@ansible ~]# ansible-playbook -C
/etc/ansible/a.yml ##Ô¤²âÊÔ

[root@ansible ~]# ansible-playbook
--list-hosts /etc/ansible/a.yml
##ÁгöÓ°ÏìÁËÄÇЩÖ÷»ú

[root@ansible ~]# ansible-playbook
--list-tasks /etc/ansible/a.yml
##ÏÔʾÈÎÎñÁбí

[root@ansible ~]# ansible-playbook
--list-tags/etc/ansible/a.yml
##ÏÔʾÈÎÎñ±êÇ©

[root@ansible ~]# ansible-playbook
/etc/ansible/a.yml ##Ö´ÐÐÈÎÎñ

[root@ansible ~]# ansible web1
-m shell -a "tail -1 /etc/passwd"
[root@ansible ~]# ansible web2
-m shell -a "ls -l /home/passwd"

2.´¥·¢Æ÷

ÐèÒª³ö·¢²ÅÄÜÖ´ÐеÄÈÎÎñ£¬µ±Ö®Ç°¶¨ÒåÔÚtasksÖеÄÈÎÎñÖ´ÐÐÍê³Éºó£¬ÈôÏ£ÍûÔÚ´Ë»ù´¡Éϳö·¢ÆäËûµÄÈÎÎñ£¬ÕâÊÇÐèÒª¶¨Òåhandlers¡£

HandlersÊÇansibleÌṩµÄÌõ¼þ»úÖÆÖ®Ò»£¬handlersºÍtaskÏàËÆ£¬£¬µ«ÊÇËüÖ»ÔÚ±»task֪ͨµÄʱºò²Å»á´¥·¢Ö´ÐС£

HandlersÖ»»áÔÚËùÓÐÈÎÎñÖ´ÐÐÍêºóÖ´ÐУ¬¶øÇÒ¼´Ê¹±»Í¨ÖªÁ˶à´Î£¬ËüÒ²Ö»»áÖ´ÐÐÒ»´Î£¬handlers°´ÕÕ¶¨ÒåµÄ˳ÐòÒÀ´ÎÖ´ÐÐ

eg£º

[root@ansible ~]# ansible web1
-m shell -a "netstat -anpt
| grep httpd" ##httpdÕýÔÚ¼àÌý80¶Ë¿Ú

[root@ansible ~]# vim /etc/ansible
/httpd.yml ##´´½¨httpd.ymlÎļþ
--- ##½Å±¾¿ªÊ¼
- hosts: web1 ##
remote_user: root ##
tasks: ##
- name: change port ##
command: sed -i 's/Listen\
80/Listen\ 8080/g'
/etc/httpd/conf/httpd.conf ##Ð޸Ķ˿Ú
notify: ##ÅäÖô¥·¢Ìõ¼þ
- restart httpd server
##Íê³ÉÈÎÎñºóµ÷ÓøÄÃû×ֵĴ¥·¢Æ÷
handlers: ##
- name: restart httpd server
##Ö¸¶¨´¥·¢Æ÷µÄÃû×Ö
service: name=httpd state=restarted
##´¥·¢ÈÎÎñÎªÖØÆôhttpd·þÎñ
... ##½áÊø

[root@ansible ~]# ansible-playbook
--syntax-check
/etc/ansible/httpd.yml ##¼ì²é½Å±¾

[root@ansible ~]# ansible-playbook
/etc/ansible/httpd.yml ##Ö´Ðнű¾

[root@ansible ~]# ansible web1
-m shell -a "netstat -anpt
| grep httpd" ##²é¿´´¥·¢Æ÷Ö´Ðнá¹û

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

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

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

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