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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
×Ô¶¯»¯ÔËά¹¤¾ßÖ®ansible
 
À´Ô´£º51cto ·¢²¼ÓÚ£º 2017-7-6
  5069  次浏览      27
 

Ò»¡¢Ê²Ã´ÑùµÄÇéÐÎÐèÒªÅúÁ¿²¿Êð

1¡¢²Ù×÷ϵͳµÄ°²×°

³£¼ûµÄÓÐcollber,red hat satelite (redhat) ϵͳרÓá£

2¡¢²Ù×÷ϵͳµÄÅäÖÃ

³£¼ûµÄÓÐcfengine,puppet,chef,func¡£ÆäÖÐ puppet ×îÊÜ»¶Ó­

3¡¢ÅúÁ¿³ÌÐòµÄ²¿Êð

4¡¢ÅúÁ¿ÃüÁîµÄÔËÐв鿴״̬ÐÅÏ¢

¶þ¡¢ansible½éÉÜ

ansibleµÄ¼Ü¹¹´óÖÂÈçÏÂ

ansibleÊÇгöÏÖµÄÔËά¹¤¾ßÊÇ»ùÓÚPythonÑз¢µÄôÛºÏÁËÖÚ¶àÀÏÅÆÔËά¹¤¾ßµÄÓŵãʵÏÖÁËÅúÁ¿²Ù×÷ϵͳÅäÖá¢ÅúÁ¿³ÌÐòµÄ²¿Êð¡¢ÅúÁ¿ÔËÐÐÃüÁîµÈ¹¦ÄÜ¡£

ÔËά¹¤¾ß³£¼ûµÄ¹¤×÷ģʽ

1¡¢agentģʽ: »ùÓÚsslʵÏÖ¡£´úÀí¹¤×÷ÔÚ±»¼à¿Ø¶Ë¡£Ïñ puppet ¡£

2¡¢agentlessģʽ: »ùÓÚssh·þÎñʵÏÖ¹¤×÷ÔÚ±»¼à¿Ø¶Ë¡£¼à¿Ø¶ËÊÇ ssh µÄ¿Í»§¶Ë¡£

ansibleÊǹ¤×÷ÔÚagentlessģʽϾßÓÐÃݵÈÐÔ¡£ ansible ÔÚ¿ØÖƶËÖ»ÐèÒª¸æËß¼à¿Ø¶ËµÄÆÚÍû״̬¾Í¿ÉÒÔʵÏÖÅúÁ¿²¿Êð¡£

Ãû´Ê½âÊÍ

1.ÃݵÈÐÔ²»»áÖØ¸´Ö´ÐÐÏàͬµÄÖ¸Áî¡£ÀýÈç²»»áÖØ¸´°²×°Èí¼þ

2.ÆÚÍû״ֻ̬ÐèÒª¸æËß±»¼à¿Ø¶ËµÄÆÚÍû״̬

ansibleÊÇ»ùÓÚÄ£¿é¹¤×÷µÄ ansible ±¾ÉíûÓÐÅúÁ¿²¿ÊðµÄÄÜÁ¦¡£ÕæÕý¾ßÓÐÅúÁ¿²¿ÊðµÄÊÇ ansible ËùÔËÐеÄÄ£¿é ansible Ö»ÊÇÌṩһÖÖ¿ò¼Ü¡£¼Ü¹¹°üÀ¨

1.Á¬½Ó²å¼þconnection plugins ¸ºÔðºÍ±»¼à¿Ø¶ËʵÏÖͨÐÅ¡£

2.Host Inventory:Ö¸¶¨²Ù×÷µÄÖ÷»ú,ÊÇÒ»¸öÅäÖÃÎļþÀïÃæ¶¨Òå¼à¿ØµÄÖ÷»ú

3.¸÷ÖÖÄ£¿éºËÐÄÄ£¿écommandÄ£¿é×Ô¶¨ÒåÄ£¿é

4.½èÖúÓÚ²å¼þÍê³É¼Ç¼ÈÕÖ¾ÓʼþµÈ¹¦ÄÜ

5.PlayBooks:¾ç±¾Ö´Ðжà¸öÈÎÎñʱ¡£²¢·Ç±ØÐè¿ÉÒÔÈýڵãÒ»´ÎÐÔÔËÐжà¸öÈÎÎñ

Èý¡¢ansibleµÄ»ù±¾Ê¹ÓÃ

°²×°Èí¼þyum install ansible -y # ¶ÔÓ¦µÄÈí¼þÔÚ

epel ²Ö¿âÖÐÒ²¿É×Ô¼ºÊÖ¶¯±àÒë
#Ô´ÂëµØÖ· https://pypi.python.org/packages/

source/a/ansible/ansible-1.5.tar.gz

2¡¢¶¨ÒåHost Inventory
# vim /etc/ansible/hosts
[webhosts]
172.16.10.22 ansible_ssh_user=root ansible_ssh_pass = guoting
172.16.10.33 ansible_ssh_user=root ansible_ssh_pass=guoting
½âÊÍ
#ansible_ssh_user=root ÊÇsshµÇ½Óû§
#ansible_ssh_pass=guoting ÊÇsshµÇ½ÃÜÂë

3¡¢²âÊÔ¸÷¸öÄ£¿é
# ×¢Òâÿ¸öÄ£¿éµÄÓ÷¨¿ÉÒÔʹÓà ansible-doc MOD

À´²é¿´ÀýÈçansible-doc copy

ansibleÃüÁî×î³£ÓõÄÓ÷¨
ansible <Host-partten> -m MOE -a 'MOD_ARV'

ËùÖ§³ÖµÄÄ£¿é¿ÉÒÔʹÓÃansible-doc -lÀ´²é¿´

ansibleʾÀý

1¡¢²é¿´Ê±¼äÐÅÏ¢¡£command¡¢shellÄ£¿é

2¡¢ÔÚ¿ØÖƶËÌí¼ÓÌí¼ÓÓû§¡£userÄ£¿é

3¡¢ÊµÏÖsshÃØÔ¿ÈÏÖ¤¡£shell¡¢copyÄ£¿é

´Ëʱ¾Í¿ÉÒÔʵÏÖ»ùÓÚsshÃØÔ¿Í¨ÐÅÁË´Ëʱ / etc / ansible / hosts ¿ÉÒÔÐÞ¸ÄÈçÏÂ

###### /etc/ansible/hosts
[webhosts]
172.16.10.22
172.16.10.33

4¡¢°²×°Èí¼þºÍÆô¶¯·þÎñ¡£ yum ¡¢ service Ä£¿é

5¡¢Ö§³Ö¹ÜµÀµÄÃüÁî¡£rawÄ£¿é£¬ÀàËÆÓÚshellÄ£¿é

ËÄ¡¢YAMLÓïÑÔ½éÉÜ

1¡¢YAML¼ò½é

YAMLÊÇÒ»¸ö¿É¶ÁÐԸߵÄÓÃÀ´±í´ï×ÊÁÏÐòÁеĸñʽ

¡£YAML²Î¿¼ÁËÆäËû¶àÖÖÓïÑÔ°üÀ¨XML¡¢CÓïÑÔ¡¢

Python¡¢PerlÒÔ¼°µç×ÓÓʼþ¸ñʽRFC2822µÈ¡£

Clark EvansÔÚ2001ÄêÔÚÊ״η¢±íÁËÕâÖÖÓïÑÔ

ÁíÍâIngy dtNetÓëOren Ben-KikiÒ²ÊÇÕâÓïÑÔ

µÄ¹²Í¬Éè¼ÆÕß¡£
YAML Ain't Markup Language¼´YAML²»ÊÇXML

¡£²»¹ýÔÚ¿ª·¢µÄÕâÖÖÓïÑÔʱYAMLµÄÒâ˼ÆäʵÊÇ

"Yet Another Markup Language"ÈÔÊÇÒ»ÖÖ±ê¼ÇÓïÑÔ¡£

ÆäÌØÐÔ
YAMLµÄ¿É¶ÁÐÔºÃ
YAMLºÍ½Å±¾ÓïÑԵĽ»»¥ÐÔºÃ
YAMLʹÓÃʵÏÖÓïÑÔµÄÊý¾ÝÀàÐÍ
YAMLÓÐÒ»¸öÒ»ÖµÄÐÅϢģÐÍ
YAMLÒ×ÓÚʵÏÖ
YAML¿ÉÒÔ»ùÓÚÁ÷À´´¦Àí
YAML±í´ïÄÜÁ¦Ç¿À©Õ¹ÐÔºÃ

¸ü¶àµÄÄÚÈݼ°¹æ·¶²Î¼ûhttp://www.yaml.org¡£

##########################YAMLÓï·¨

YAMLµÄÓï·¨ºÍÆäËû¸ß½×ÓïÑÔÀàËÆ²¢ÇÒ¿ÉÒÔ¼òµ¥

±í´ïÇåµ¥¡¢É¢ÁÐ±í¡¢±êÁ¿µÈÊý¾Ý½á¹¹¡£Æä½á¹¹

Structureͨ¹ý¿Õ¸ñÀ´Õ¹Ê¾ÐòÁÐSequenceÀïµÄÏîÓÃ

"-"À´´ú±í
MapÀïµÄ¼üÖµ¶ÔÓÃ":"·Ö¸ô¡£YAMLÎļþÀ©Õ¹Ãûͨ³£Îª

.yaml»òÕß.yml¡£ÏÂÃæÊÇÒ»¸öʾÀý¡£

name: John Smith
age: 41gender: Male
spouse:
name: Jane Smith
age: 37
gender: Female
children:
- name: Jimmy Smith
age: 17
gender: Male
- name: Jenny Smith
age 13
gender: Female

YAML 2 ¸öÖØÒªµÄ½á¹¹×é³É²¿·ÖlistºÍdirectory
################################# list

ÁбíµÄËùÓÐÔªËØ¾ùʹÓá°-¡±´òÍ·ÀýÈç
# A list of tasty fruits
- Apple
- Orange
- Strawberry
- Mango

##############################dictionary

×Öµäͨ¹ýkeyÓëvaluef½øÐбêʶÀýÈç
---
# An employee record
name: Example Developer
job: Developer
skill: Elite

Ò²¿ÉÒÔ½«key:value·ÅÖÃÓÚ{}ÖнøÐбíʾÀýÈç
---
# An employee record
{name: Example Developer, job: Developer, skill: Elite}

¶à¸öÓ³Éä¹ØÏµ×é³ÉÒ»¸ö×ÖµäÒ»¸öÁбí¿ÉÒÔ°üº¬¶à¸ö×ֵ䡣

2¡¢ymalÖеıäÁ¿

##################################

±äÁ¿ÃüÃû
±äÁ¿Ãû½öÄÜÓÉ×Öĸ¡¢Êý×ÖºÍÏ»®Ïß×é³ÉÇÒ

Ö»ÄÜÒÔ×Öĸ¿ªÍ·¡£

################################## facts
factsÊÇÓÉÕýÔÚͨÐŵÄÔ¶³ÌÄ¿±êÖ÷»ú·¢»ØµÄÐÅÏ¢

ÕâЩÐÅÏ¢±»±£´æÔÚansible±äÁ¿ÖС£Òª»ñȡָ¶¨µÄ

Ô¶³ÌÖ÷»úËùÖ§³ÖµÄËùÓÐfacts¿ÉʹÓÃÈçÏÂÃüÁî½øÐÐ
# ansible hostname -m setup Õâ¸öÃüÁî¿ÉÒÔ»ñµÃ

±»¼à¿Ø¶ËÖ÷»úµÄ¸÷ÖÖÐÅÏ¢½«ÕâЩÐÅÏ¢µÃµ½ºó±£´æµ½±äÁ¿ÖС£

################################ ×Ô¶¨Òå±äÁ¿
ÔÚ yaml ÖпÉÒÔʹÓÃvars¹Ø¼ü×ÖÀ´¶¨Òå±äÁ¿
vars:
var_name: value

############################# ±äÁ¿µÄÒýÓÃ
{{ var_name }}


########################### ÌØÊâµÄ±äÁ¿µü´ú
µ±ÓÐÐèÒªÖØ¸´ÐÔÖ´ÐеÄÈÎÎñʱ¿ÉÒÔʹÓõü´ú»úÖÆ¡£

ÆäʹÓøñʽΪ½«ÐèÒªµü´úµÄÄÚÈݶ¨ÒåΪitem±äÁ¿

ÒýÓò¢Í¨¹ýwith_itemsÓï¾äÀ´Ö¸Ã÷µü´úµÄÔªËØÁÐ±í¼´¿É¡£

#######################################ʾÀý
ÀýÈçÔÚ±»¿Ø¶ËÌí¼Ó 2 ¸öÓû§

·½Ê½1Ò»°ã×ö·¨
- name: add user testuser1
user: name=testuser1 state=present groups=wheel
- name: add user testuser2
user: name=testuser2 state=present groups=wheel

·½Ê½2ʹÓñäÁ¿·½Ê½
- name: add several users
vars:
user1: testuser1
user2: testuser2
user: name={{ user1 }} state=present groups=wheel
user: name={{ user2 }} state=present groups=wheel

·½Ê½3ʹÓõü´ú·½Ê½
- name: add several users
user: name={{ item }} state=present groups=wheel
with_items:
- testuser1
- testuser2
ÊÂʵÉÏwith_itemsÖпÉÒÔʹÓÃÔªËØ»¹¿ÉΪhashesÀýÈç
- name: add several users
user: name={{ item.name }} state=present

groups={{ item.groups }}
with_items:
- { name: 'testuser1', groups: 'wheel' }
- { name: 'testuser2', groups: 'root' }

3¡¢InentoryÎļþµÄ¸ñʽ

inventoryÎļþ×ñÑ­INIÎļþ·ç¸ñÖÐÀ¨ºÅÖеÄ×Ö·ûΪ×éÃû¡£

¿ÉÒÔ½«Í¬Ò»¸öÖ÷»úͬʱ¹é²¢µ½¶à¸ö²»Í¬µÄ×éÖдËÍâµ±ÈçÈô

Ä¿±êÖ÷»úʹÓÃÁË·ÇĬÈϵÄSSH¶Ë¿Ú»¹¿ÉÒÔÔÚÖ÷»úÃû³ÆÖ®ºó

ʹÓÃðºÅ¼Ó¶Ë¿ÚºÅÀ´±êÃ÷¡£


[webservers]
www1.magedu.com:2222
www2.magedu.com
[dbservers]
db1.magedu.com
db2.magedu.com
db3.magedu.com

Èç¹ûÖ÷»úÃû³Æ×ñÑ­ÏàËÆµÄÃüÃûģʽ

»¹¿ÉÒÔʹÓÃÁбíµÄ

·½Ê½±êʶ¸÷Ö÷»úÀýÈç
[webservers]
www[01:50].example.com
[databases]
db-[a:f].example.com

#################### Ö÷»ú±äÁ¿
¿ÉÒÔÔÚinventoryÖж¨ÒåÖ÷»úʱΪÆäÌí

¼ÓÖ÷»ú±äÁ¿ÒÔ±ãÓÚ

ÔÚplaybookÖÐʹÓá£ÀýÈç
[webservers]
www1.magedu.com http_port=80 maxReques

tsPerChild=808
www2.magedu.com http_port=303 maxReques

tsPerChild=909

################### ×é±äÁ¿
×é±äÁ¿ÊÇÖ¸¸³Óè¸øÖ¸¶¨×éÄÚËùÓÐÖ÷»úÉϵÄÔÚplaybookÖÐ

¿ÉÓõıäÁ¿¡£ÀýÈç

[webservers]
www1.magedu.com
www2.magedu.com

[webservers:vars]
ntpntp_server=ntp.magedu.com
nfsnfs_server=nfs.magedu.com

################## ×éǶÌ×
inventoryÖÐ×黹¿ÉÒÔ°üº¬ÆäËüµÄ×é²¢ÇÒÒ²¿ÉÒÔÏò×éÖÐ

µÄÖ÷»úÖ¸¶¨±äÁ¿¡£²»¹ýÕâЩ±äÁ¿Ö»ÄÜÔÚansible-playbook

ÖÐʹÓöøansible²»Ö§³Ö¡£ÀýÈç

[apache]
httpd1.magedu.com
httpd2.magedu.com

[nginx]
ngx1.magedu.com
ngx2.magedu.com

[webservers:children]
apache
nginx

[webservers:vars]
ntpntp_server=ntp.magedu.com

######################### inventory²ÎÊý

ansible»ùÓÚsshÁ¬½ÓinventoryÖÐÖ¸¶¨µÄ

Ô¶³ÌÖ÷»úʱ»¹¿ÉÒÔ

ͨ¹ý²ÎÊýÖ¸¶¨Æä½»»¥·½Ê½³£ÓõIJÎÊýÈçÏÂËùʾ
ansible_ssh_host # ÒªÁ¬½ÓµÄÖ÷»úÃû
ansible_ssh_port # ¶Ë¿ÚºÅĬÈÏÊÇ22
ansible_ssh_user # sshÁ¬½ÓʱĬÈÏʹÓõÄÓû§Ãû
ansible_ssh_pass # sshÁ¬½ÓʱµÄÃÜÂë
ansible_sudo_pass # ʹÓÃsudoÁ¬½ÓÓû§ÊǵÄÃÜÂë
ansible_ssh_private_key_file # ÃØÔ¿

ÎļþÈç¹û²»ÏëʹÓÃ

ssh-agent¹ÜÀíʱ¿ÉÒÔʹÓôËÑ¡Ïî
ansible_shell_type # shellµÄÀàÐÍĬÈÏsh
##################################

################

#######################################
ansibleµÄÑ­»·»úÖÆ»¹Óиü¶àµÄ¸ß¼¶¹¦ÄܾßÌå

Çë²Î¼û¹Ù·½Îĵµhttp://docs.ansible.com/

playbooks_loops.html¡£

4¡¢playbooks

playbookÊÇÓÉÒ»¸ö»ò¶à¸ö¡°play¡±×é³ÉµÄÁÐ±í¡£

playµÄÖ÷Òª¹¦ÄÜÔÚÓÚ½«ÊÂÏȹ鲢Ϊһ×éµÄÖ÷»ú×°

°ç³ÉÊÂÏÈͨ¹ýansibleÖеÄtask¶¨ÒåºÃµÄ½ÇÉ«¡£
´Ó¸ù±¾ÉÏÀ´½²ËùνtaskÎÞ·ÇÊǵ÷ÓÃansibleµÄÒ»¸ö

module¡£½«¶à¸öplay×éÖ¯ÔÚÒ»¸öplaybookÖм´¿ÉÒÔ

ÈÃËüÃÇÁªÍ¬ÆðÀ´°´ÊÂÏȱàÅŵĻúÖÆÍ¬³ªÒ»Ì¨´óÏ·¡£

###########################playbook»ù´¡×é¼þ
1¡¢HostsºÍUsers

playbookÖеÄÿһ¸öplayµÄÄ¿µÄ¶¼ÊÇΪÁËÈÃij¸ö

»òijЩÖ÷»úÒÔij¸öÖ¸¶¨µÄÓû§Éí·ÝÖ´ÐÐÈÎÎñ¡£
hostsÓÃÓÚÖ¸¶¨ÒªÖ´ÐÐÖ¸¶¨ÈÎÎñµÄÖ÷»úÆä¿ÉÒÔÊÇÒ»¸ö

»ò¶à¸öÓÉðºÅ·Ö¸ôÖ÷»ú×é¡£
remote_userÔòÓÃÓÚÖ¸¶¨Ô¶³ÌÖ÷»úÉϵÄÖ´ÐÐÈÎÎñµÄÓû§¡£

²»¹ýremote_userÒ²¿ÉÓÃÓÚ¸÷taskÖС£Ò²¿ÉÒÔͨ¹ýÖ¸¶¨

Æäͨ¹ýsudoµÄ·½Ê½ÔÚÔ¶³ÌÖ÷»úÉÏÖ´ÐÐÈÎÎñÆä¿ÉÓÃÓÚplay

È«¾Ö»òijÈÎÎñ¡£
´ËÍâÉõÖÁ¿ÉÒÔÔÚsudoʱʹÓÃsudo_userÖ¸¶¨sudoʱÇл»µÄÓû§¡£

- hosts: webnodes
remote_user: mageedu
tasks:
- name: test connection ping:
remote_user: mageedu sudo: yes

2¡¢ÈÎÎñÁбíºÍaction
playµÄÖ÷Ì岿·ÖÊÇtask list¡£task listÖеĸ÷ÈÎÎñ°´´Î

ÐòÖð¸öÔÚhostsÖÐÖ¸¶¨µÄËùÓÐÖ÷»úÉÏÖ´Ðм´ÔÚËùÓÐÖ÷»úÉÏÍê³É

µÚÒ»¸öÈÎÎñºóÔÙ¿ªÊ¼µÚ¶þ¸ö¡£
ÔÚÔËÐÐ×Ô϶øÏÂijplaybookʱÈç¹ûÖÐ;·¢Éú´íÎóËùÓÐÒÑÖ´ÐÐ

ÈÎÎñ¶¼½«»Ø¹öÒò´ËÔÚ¸üÕýplaybookºóÖØÐÂÖ´ÐÐÒ»´Î¼´¿É¡£
taskµÄÄ¿µÄÊÇʹÓÃÖ¸¶¨µÄ²ÎÊýÖ´ÐÐÄ£¿é¶øÔÚÄ£¿é²ÎÊýÖпÉÒÔ

ʹÓñäÁ¿¡£Ä£¿éÖ´ÐÐÊÇÃݵȵÄÕâÒâζ×Ŷà´ÎÖ´ÐÐÊǰ²È«µÄ

ÒòΪÆä½á¹û¾ùÒ»Ö¡£
ÿ¸ötask¶¼Ó¦¸ÃÓÐÆänameÓÃÓÚplaybookµÄÖ´Ðнá¹ûÊä³ö½¨Òé

ÆäÄÚÈݾ¡¿ÉÄÜÇåÎúµØÃèÊöÈÎÎñÖ´Ðв½Öè¡£Èç¹ûδÌṩnameÔò

actionµÄ½á¹û½«ÓÃÓÚÊä³ö¡£

¶¨ÒåtaskµÄ¿ÉÒÔʹÓá°action: module options¡±»ò¡°module:

options¡±µÄ¸ñÊ½ÍÆ¼öʹÓúóÕßÒÔʵÏÖÏòºó¼æÈÝ¡£
Èç¹ûactionÒ»ÐеÄÄÚÈݹý¶àÒ²ÖÐʹÓÃÔÚÐÐÊ×ʹÓü¸¸ö¿Õ°×

×Ö·û½øÐл»ÐС£

tasks:
- name: make sure apache is running
service: name=httpd state=running

ÔÚÖÚ¶àÄ£¿éÖÐÖ»ÓÐcommandºÍshellÄ£¿é½öÐèÒª¸ø¶¨Ò»¸ö

ÁÐ±í¶øÎÞÐèʹÓá°key=value¡±¸ñʽÀýÈç
tasks:
- name: disable selinux
command: /sbin/setenforce 0Èç¹ûÃüÁî»ò½Å±¾µÄÍ˳öÂë

²»ÎªÁã¿ÉÒÔʹÓÃÈçÏ·½Ê½Ìæ´ú
tasks:
- name: run this command and ignore the result
shell: /usr/bin/somecommand || /bin/true
»òÕßʹÓÃignore_errorsÀ´ºöÂÔ´íÎóÐÅÏ¢
tasks:
- name: run this command and ignore the result
shell: /usr/bin/somecommand
ignore_errors: True

3¡¢handlers

ÓÃÓÚµ±¹Ø×¢µÄ×ÊÔ´·¢Éú±ä»¯Ê±²Éȡһ¶¨µÄ²Ù×÷¡£

¡°notify¡±Õâ¸öaction¿ÉÓÃÓÚÔÚÿ¸öplayµÄ×îºó±»´¥·¢ÕâÑù

¿ÉÒÔ±ÜÃâ¶à´ÎÓиı䷢Éúʱÿ´Î¶¼Ö´ÐÐÖ¸¶¨µÄ²Ù×÷È¡¶ø´úÖ®

½öÔÚËùÓеı仯·¢ÉúÍê³ÉºóÒ»´ÎÐÔµØÖ´ÐÐÖ¸¶¨²Ù×÷¡£

ÔÚnotifyÖÐÁгöµÄ²Ù×÷³ÆÎªhandlerÒ²¼´notifyÖе÷ÓÃ

handlerÖж¨ÒåµÄ²Ù×÷¡£

- name: template configuration file
template: src=template.j2 dest=/etc/foo.conf
notify:
- restart memcached
- restart apache

handlerÊÇtaskÁбíÕâЩtaskÓëǰÊöµÄtask²¢Ã»Óб¾ÖÊÉϵIJ»Í¬¡£

handlers:
- name: restart memcached
service: name=memcached state=restarted
- name: restart apache
service: name=apache state=restarted

5¡¢tags

tagsÓÃÓÚÈÃÓû§Ñ¡ÔñÔËÐлò·¹ýplaybookÖеÄ

²¿·Ö´úÂë¡£ansible¾ßÓÐÃݵÈÐÔÒò´Ë»á×Ô¶¯Ìø¹ý

ûÓб仯µÄ²¿·Ö¼´±ãÈç´ËÓÐЩ´úÂëΪ²âÊÔÆäȷʵ

ûÓз¢Éú±ä»¯µÄʱ¼äÒÀÈ»»á·Ç³£µØ³¤¡£´ËʱÈç¹û

È·ÐÅÆäûÓб仯¾Í¿ÉÒÔͨ¹ýtagsÌø¹ý´ËЩ´úÂëÆ¬¶Ï¡£

ʾÀý»ùÓÚplaybooksʵÏÖweb·þÎñµÄ²¿Êð
1¡¢ÌṩºÃInventoryÎļþ
# /etc/ansible/hosts»ùÓÚÃØÔ¿ÈÏÖ¤
[webhosts]
172.16.10.22
172.16.10.33

2¡¢±à¼­ palybooks ¾ç±¾
# vim /root/web.yaml
- name: web service
remote_user: root
hosts: webhosts
vars:
packages: httpd
tasks:
- name: install httpd yum: name=

{{ packages }} state=present
tags: install
- name: configuration httpd
copy: src=/root/httpd.conf dest=/etc/

httpd/conf/httpd.conf
tags: conf
notify:
- restart httpd
- name: service httpd start
service: name=httpd enabled=no

state=started
tags: start
- name: add centos and hadoop user
user: name={{ item }} state=absent
tags: adduser
with_items:
- centos
- hadoop
handlers:
- name: restart httpd
service: name=httpd state=restarted

3¡¢×¼±¸ºÃÅäÖÃÎļþ
½«webµÄÅäÖ÷ŵ½Ö¸¶¨Ä¿Â¼ src=/root/httpd.conf

4¡¢¿ªÊ¼²¿Êð
ansible-playbooks /root/web.yml

½á¹ûʾÀý

²é¿´¶Ë¿Ú

´ËʱÈç¹ûÅäÖÃÎļþ·¢Éú±ä»¯

ÖÁ´Ë»ù±¾Ê¹ÓÃÅäÖÃÍê³É¡£

 

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

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

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

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