±à¼ÍƼö: |
±¾ÎÄÖ÷Òª½éÉÜÁËPlayBookµÄ×÷ÓÃ×é³É¼°²ÎÊýÏê½âÒÔ¼°YAMLÓïÑÔÌØÐÔ×îºó¶ÔAnsible
PlayBook½øÐÐʾÀýÑÝʾ£¬Ï£Íû¶ÔÄúµÄѧϰÓÐËù°ïÖú¡£
±¾ÎÄÀ´×ÔÓÚCSDN£¬ÓÉ»ðÁú¹ûÈí¼þAlice±à¼¡¢ÍƼö¡£ |
|
Ò»¡¢PlayBookµÄ×÷ÓÃ
֮ǰµÄÄ£¿é¶¼ÊÇʹÓÃAd-hoc·½Ê½£¨Ad-hoc·½Ê½ÊÇÒ»ÖÖ¿ÉÒÔ¿ìËÙÊäÈëµÄÃüÁ¶øÇÒ²»ÐèÒª±£´æÆðÀ´µÄÃüÁÏ൱ÓÚbashÖеÄÒ»¾ä»°shell£©µã¶ÔµãÃüÁîÖ´ÐУ¬¿ÉÒÔ¹ÜÀíÔ¶³ÌÖ÷»ú£¬µ«Èç¹û·þÎñÆ÷ÊýÁ¿±È½Ï¶à£¬ÅäÖÃÐÅÏ¢Ò²±È½Ï¶à£¬¿ÉÒÔÀûÓÃAnsible
PlayBook±àд¾ç±¾£¬ÒÔ¸ü¼Ó¼ò±ãµÄ·½Ê½ÊµÏÖÈÎÎñ´¦ÀíµÄ×Ô¶¯»¯ºÍÁ÷³Ì»¯¡£
¶þ¡¢PlayBook×é³É¼°²ÎÊýÏê½â
PlayBookÊÇÓÉÒ»¸ö»ò¶à¸ö¡°play¡±×é³ÉµÄÁÐ±í£¬playµÄÖ÷Òª¹¦ÄÜÊÇΪAnsibleÖеÄtask¶¨ÒåºÃµÄ½ÇÉ«£¬Ö¸¶¨¾ç±¾¶ÔÓ¦µÄ·þÎñÆ÷×é¡£
Ï൱ÓÚtaskÊÇÒ»¸öÈÎÎñ£¬taskµ÷ÓÃAnsibleµÄ¸÷ÖÖÄ£¿é£¬½«¶à¸öplay×éÖ¯ÔÚÒ»¸öplaybook¾ç±¾ÖУ¬È«²¿×é³ÉÒ»¸öÍêÕûµÄÁ÷³Ì¿ØÖƼ¯ºÏ
1¡¢PlayBook×é¼þ°üÀ¨
target£º¶¨ÒåPlayBookµÄÔ¶³ÌÖ÷»ú×é
variable£º¶¨ÒåPlayBookʹÓõıäÁ¿
task£º¶¨ÒåÔ¶³ÌÖ÷»úÉÏÖ´ÐеÄÈÎÎñÁбí
handler£º¶¨ÒåtaskÖ´ÐÐÍê³ÉºóÐèÒªµ÷ÓõÄÈÎÎñ£¬ÀýÈçÐÞ¸ÄÅäÖÃÎļþÖ®ºó£¬Æô¶¯¸úhandlerÈÎÎñÖØÆôÏà¹ØÁªµÄ·þÎñ
2¡¢target³£ÓòÎÊýÏê½â
hosts£º¶¨ÒåÔ¶³ÌÖ÷»ú×é
user£ºÖ´ÐиÃÈÎÎñµÄÓû§
sudo£ºÉèÖÃΪyesµÄʱºò£¬Ö´ÐÐÈÎÎñʹÓÃrootȨÏÞ
sudo_user£ºÖ¸¶¨sudoµÄÆÕͨÓû§
connection£ºÄ¬ÈÏ»ùÓÚSSHÁ´½Ó¿Í»§¶Ë
gather_facks£º»ñȡԶ³ÌÖ÷»úfacts»ù´¡ÐÅÏ¢
3¡¢variable³£ÓòÎÊýÏê½â
vars£º¶¨Òå¸ñʽ£¬±äÁ¿Ãû£º±äÁ¿Öµ
vars_files£ºÖ¸¶¨±äÁ¿Îļþ
vars_prompt£ºÓû§½»»¥Ä£Ê½×Ô¶¨Òå±äÁ¿
setup£ºÄ£¿éȡԶ³ÌÖ÷»úµÄÖµ
4¡¢task³£ÓòÎÊýÏê½â
name£ºÈÎÎñÏÔʾÃû³ÆÒ²ÊÇÆÁÄ»ÏÔʾÐÅÏ¢
action£º¶¨ÒåÖ´Ðе͝×÷
copy£º¸´ÖƱ¾µØÎļþµ½Ô¶³ÌÖ÷»ú
template£º¸´ÖƱ¾µØÎļþµ½Ô¶³ÌÖ÷»ú£¬¿ÉÒÔÒýÓñ¾µØ±äÁ¿
service£º¶¨Òå·þÎñµÄ״̬
»ùÓÚAnsible PlayBook»¹¿ÉÒÔÊÕ¼¯ÃüÁî¡¢´´½¨ÈÎÎñ¼¯£¬¿ÉÒÔ´ó´ó½µµÍ¹ÜÀí¹¤×÷µÄ¸´Ôӳ̶ȣ¬PlayBook²ÉÓÃYAMLÓï·¨½á¹¹
Èý¡¢YAMLÓïÑÔÌØÐÔ
YAML(yet another markup language)ÊÇÒ»ÖÖÖ±¹ÛµÄÄܱ»µçÄÔʶ±ðµÄÊý¾ÝÐòÁл¯¸ñʽ£¬ÊÇÒ»¸öÈÝÒ×ÔĶÁ£¬ºÍ½Å±¾ÓïÑÔ½»»¥£¬ÓÃÀ´±í´ï×ÊÁÏÐòÁеıà³ÌÓïÑÔ¡£YAMLʹÓÿհ××Ö·ûºÍ·ÖÐÐÀ´·Ö¸ô×ÊÁÏ£¬ÊʺÏÓÃPython¡¢Ruby¡¢Perl¡¢grepÀ´²Ù×÷¡£
YAMLÓïÑÔÌØÐÔΪ£º
¿É¶ÁÐÔÇ¿
ºÍ½Å±¾ÓïÑԵĽ»»¥ÐÔºÃ
ʹÓÃʵÏÖÓïÑÔµÄÊý¾ÝÀàÐÍ
Ò»ÖµÄÐÅϢģÐÍ
Ò×ÓÚʵÏÖ
¿ÉÒÔ»ùÓÚÁ÷À´´¦Àí
¿ÉÀ©Õ¹ÐÔÇ¿
ËÄ¡¢Ansible PlayBookʾÀý
£¨1£©ÅжÏÊÇ·ñÐèÒª°²×°Ä³¸ö·þÎñ
¼ì²âÔ¶³ÌÖ÷»úÊÇ·ñÓÉapache·þÎñ£¬²»´æÔÚÔò°²×°apache httpd·þÎñ£¬°²×°Íê³Éºó²¢Æô¶¯apache
1.1 ±àд½Å±¾
PlayBook´úÂëÈçÏ£¬ÎļþÃûÊÇxxx.yml
ÔÚÔ¶³Ì·þÎñÆ÷ÉÏ£¬ÊÇ172.25.70.1ûÓÐapache·þÎñ£¬172.25.70.2ÓÐapache·þÎñ
ÔÚÔ¶³Ì·þÎñÆ÷ÉÏ£¬ÊÇ172.25.70.1ûÓÐapache·þÎñ£¬172.25.70.2ÓÐapache·þÎñ
#apache.yml
---
- hosts: all
user: root
tasks:
- name: Apache server Install
yum: name=httpd state=installed
notify:
- start httpd
handlers:
- name: start httpd
service: name=httpd state=started enabled=yes |
¸ù¾ÝyamlÓïÑÔÖð²½·ÖÎöÓï·¨£º
µÚÒ»ÐÐ#apache.yml¾ÍÊÇÒ»¸ö×¢ÊÍ£¬±íʾÕâ¶ÎÊÇʲô£¬µ±È»¿ÉÓпÉÎÞ
µÚ¶þÐÐÊÇ---£¬ÕâÊÇYAML½«Îļþ½âÊÍΪÕýÈ·µÄÎĵµµÄÒªÇó¡£YAMLÔÊÐí¶à¸öÎĵµÔÚͬһ¸öÎļþÖУ¬²»Í¬µÄÎĵµ¾ÍÊÇÓÃ---·Ö¸ô¿ª
½ÓÏÂÀ´ÊÇ
- hosts: all
user: root ##ÕâÀïÒ²¿ÉÒÔд³Éremote_user£¬¶¼ÊDZíʾÔÚÔ¶³Ì·þÎñÆ÷ÉÏÓÃÄĸöÓû§Ö´ÐÐ |
ÒÔ - ¿ªÍ·µÄÏîÄ¿±»ÊÓΪÁбíÏîÄ¿¡£×÷ΪɢÁлò×Öµä²Ù×÷£¬Ëü¾ßÓÐkey£ºvalue¸ñʽµÄÏî¡£ËüÔÚ×î×ó²àµÄ¼¶±ð£¬ËüÒ²ÊÇÒ»¸öAnsible¡°palys¡±£¨Ä³¸öÈÎÎñ£©¡£plays»ù±¾ÉÏÊÇÔÚijһ×éÖ÷»úÉÏÖ´ÐеÄÈÎÎñ×飬ÒÔÔÊÐíËüÃÇʵÏÖÒª·ÖÅ䏸ËüÃǵŦÄÜ¡£Ã¿¸öplay±ØÐëÖ¸¶¨Ò»¸öÖ÷»ú»òÒ»×éÖ÷»ú£¬ÕýÈçÉÏÃæÒ»Ñù£¬Ö¸¶¨ÁËall
ËùÓÐÖ÷»ú¡£Ò²Ö¸¶¨ÁËʹÓõÄÊÇÄĸöÓû§
È»ºó¾ÍÊÇÈÎÎñÁË£¬ÕâÀïֻдÁËÒ»¸ötask
tasks:
- name: Apache server Install
yum: name=httpd state=installed
notify:
- start httpd |
ay°üº¬ÁËÒ»¸ötasksÁÐ±í£¨ÈÎÎñÁÐ±í£©¡£ÈÎÎñÁбíÖеĸ÷ÈÎÎñ°´´ÎÐòÖð¸öÔÚhostsÖÐÖ¸¶¨µÄËùÓÐÖ÷»úÉÏÖ´Ðм´ÔÚËùÓÐÖ÷»úÉÏÍê³ÉµÚÒ»¸öÈÎÎñºóÔÙ¿ªÊ¼µÚ¶þ¸ö¡£ÔÚ×ÔÉ϶øÏÂÔËÐÐijplaybookʱÈç¹ûÖÐ;·¢Éú´íÎó£¬ËùÓÐÒÑÖ´ÐÐÈÎÎñ¶¼½«»Ø¹ö£¬Òò´ËÔÚ¸üÕýplaybookºóÖØÐÂÖ´Ðм´¿É¡£
µÚÒ»¸ö¡°name¡±£¬ÕâÊǶÔÓÚÈÎÎñµÄÃèÊö£¬¿ÉÒÔÈÎÒⶨÒå
ÏÂÒ»¸ökey¸øµÄÊÇyum£¬±íʾÒýÓÃAnsibleµÄyumÄ£¿é£¬ºóÃæ±íʾʹÓÃyumÄ£¿éµÄÄÄЩ²ÎÊý£¬Õâ¸ö¾ÍÏ൱ÓÚ֮ǰִÐеÄansible
all -m yum -a "name=httpd state=installed"ÃüÁÁ½Õß×÷ÓÃÏàͬ
notify ¿ÉÒÔ¿´µ½Ëü°üº¬ÁËÒ»¸ö¾ßÌåÏîÄ¿µÄÁÐ±í£¬ÕâÀï±íʾµÄÊÇ¡°start httpd¡±£¬Õâ¸ö²»ÊÇansibleµÄÃüÁ¶øÊǶÔhandlersµÄÒýÓã¬Ëü¿ÉÒÔÖ´ÐÐijЩ¹¦ÄÜ£¬ÔÚhandlersÖÐÀïÃæ¶¨Òå
½ÓÏÂÀ´¾ÍÊÇhandlersµÄ¶¨Òå
handlers:
- name: start httpd
service: name=httpd state=started enabled=yes |
¿ÉÒÔ¿´µ½handlersÆäʵÊǺÍhosts¡¢userÒÔ¼°tasksÊÇͬһ¸ö¼¶±ðµÄ£¬Ëü±íʾֻÓÐÔÚ¿Í»§¶Ë·¢ÉúÁËÈÎÎñʱ²Å»áÈ¥Ö´ÐÐËü£¬ÕâÀï¾Í±ÈÈç˵ijһ¸ö¿Í»§¶Ë±¾À´Ã»Óа²×°httpdÃüÁ·¢ÉúÁËtasksÀïÃæÖ´ÐеݲװhttpdÃüÁÄÇôÕâ¸ö¿Í»§¶Ë²Å»áÈ¥Ö´ÐÐÕâ¸ö¡°start
httpd¡±£¬Èç¹û»¹ÓÐÒ»¸ö¿Í»§¶Ë±¾ÉíÒѾ°²×°ÁËhttpdÃüÁËùÒÔËû¾Í²»»áÖ´Ðа²×°ÃüÁÄÇô¡°start
httpd¡±Ò²²»»áÖ´ÐÐ
µÚ¶þÐÐservice¾Í±íʾÒýÓÃÁËansibleµÄserviceÄ£¿é£¬Ê¹ÓõIJÎÊýÊÇðºÅºóÃæµÄÄÚÈÝ
1.2 Ö´Ðнű¾
½Å±¾Ð´ÍêÁËÖ®ºó£¬Ö±½ÓÓÃansible-playbook xxx.ymlÖ´Ðм´¿É£¬YAMLÓïÑÔ¶ÔÓÚ¸ñʽ·Ç³£Ñϸñ£¬ÓÈÆäÊǿոñʲôµÄ£¬Í¬Ò»¼¶±ðµÄ£¬Ö»ÓÐÏàͬµÄ¿Õ¸ñ¼ü£¬Õâ¸öÎļþ²Å¿ÉÒÔÖ´ÐУ¬ÎÒ×öµÄʱºò£¬Ëĸö¿Õ¸ñ£¬ÓеÄÊǰ´4¸ö¿Õ¸ñ¼ü£¬ÓеÄÖ±½Ó°´ÁËtab¼ü£¬½á¹ûÏÔʾÊǻᱨ´íµÄ
¡£¡£¡£
ÒòΪÕâÀïµÄÎļþÃûÊÇapache.yml£¬ËùÒÔ£¬ÎÒµÄÖ´Ðнá¹ûÊÇ

£¨2£©PlayBookÔ¶³ÌÐÞ¸ÄÅäÖÃÎļþ
°²×°ºÃÁËÖ®ºó£¬ÎÒÃÇ¿ÉÒÔ°ÑhttpµÄ·¢²¼Ò³Ãæ´Ó±¾µØ·¢Ë͸øÔ¶³Ì·þÎñÆ÷ÉÏÃæÈ¥
ÕâÊÇÖ»ÐèÒªÔÚtasksÀïÃæÌí¼ÓÒ»¸öÈÎÎñ¼´¿É
´úÂëÈçÏ£º
#apache.yml
---
- hosts: all
user: root
tasks:
- name: Apache server Install
yum: name=httpd state=installed
notify:
- start httpd
- name: Apache server index.html Update
copy: src=/mnt/index.html dest=/var/www/html/
mode=644
handlers:
- name: start httpd
service: name=httpd state=started enabled=yes |
index.htmlÄÚÈÝΪ£º

Ö´Ðнá¹ûΪ£º

×îÖÕ²âÊÔ½á¹û£º

£¨3£©PlayBook×Ô¶¨ÒåÄ£°æ
Ansible PlayBook»¹¿ÉÒÔ×Ô¶¨ÒåtemplateÄ£°æÎļþ£¬Ä£°åÎļþÖ÷ÒªÊÇÓÃÓÚ·þÎñÆ÷ÐèÇó²»Ò»Ö¡¢ÐèÒª¶ÀÁ¢¶¨ÒåµÄÇé¿ö¡£
±ÈÈçÏÖÔÚÓÐһ̨·þÎñÆ÷±¾ÉíÒѾÓÐÁËapache²¢ÇÒÕ¼ÁË80¶Ë¿Ú£¬µ«ÊÇÏÖÔÚÒ²Òª°²×°nginx·þÎñ£¬ÄÇôÕâʱ¾ÍÐèÒªÐÞ¸ÄËüµÄnginxµÄ¶Ë¿Ú£¬±ÈÈç˵ÐÞ¸ÄΪ81£¬µ«ÆäËûµÄÖ÷»ú²¢Ã»ÓÐapache·þÎñ£¬ËùÒÔÆäËûµÄnginx¿ÉÒÔÖ±½ÓÓÃ80¶Ë¿Ú¡£ÕâÖÖÇé¿öʹÓÃtemplate¾Í¿ÉÒÔÇáËÉʵÏÖ
ÒòÎªÇ°ÃæµÄʵÑ飬ËùÒÔÎÒµÄÁ½Ì¨²âÊÔ»ú¶¼ÓÐÁËapache·þÎñ£¬ÄÇôΪÁËÍê³ÉÕâ¸öʵÑ飬ÎÒÓÃansible
172.25.70.1 -m yum -a "name=httpd state=absent"Õâ¸öÃüÁîÏÈÐ¶ÔØÁËһ̨µÄhttpd·þÎñ£¬»òÕßÖ±½Ó×¼±¸Ò»Ì¨ÐµÄÖ÷»ú¾Í¿ÉÒÔ
¹ý³ÌΪ£º
ÏÖÔÚÎҵĻ·¾³ÊÇÁ½Ì¨ºó¶Ë·þÎñÆ÷»úÆ÷£¬172.25.70.1µÄ80¶Ë¿ÚÊÇûÓб»Õ¼ÓõÄ
172.25.70.2ÒѾ¿ªÆôÁËapache·þÎñ80¶Ë¿ÚÒѾ±»Õ¼Óã¬ÏÖÔÚÒª°²×°nginx£¬´òËã°Ñ¶Ë¿Ú¸ÄΪ81
1.ÐÞ¸ÄansibleµÄhostsÎļþ£¬ÔÚÀïÃæÖ¸¶¨²»Í¬µÄ·þÎñÆ÷Æô¶¯²»Í¬µÄhttpd_port¶Ë¿Ú
[root@localhost ansible]# vim hosts
[db]
172.25.70.1 httpd_port=80
172.25.70.2 httpd_port=81
2.Ansible´´½¨Ò»¸önginx.conf.bakµÄÄ£°æÎļþ£¬Õâ¸öÊDZ¾µØnginxµÄnginx.confÎļþµÄ¸´ÖÆ£¬ÐÞ¸ÄÀïÃæµÄlisten
80Ϊlisten {{httpd_port}}£¬ÆäËûÅäÖò»±ä
[root@localhost ansible]# vim /mnt/nginx.conf.bak
##ÕâÀï°ÑËü¸´ÖƵ½Á˱¾µØ/mnt/Ŀ¼ÀïÃæ
35 server {
36 listen {{httpd_port}};
37 server_name localhost;
3.´´½¨playbook¾ç±¾yamlÎļþ£¬´úÂëΪ
[root@localhost ansible]# vim nginx.yml
---
- hosts: all
remote_user: root
tasks:
- name: Nginx Server Install
file: path=/usr/local/nginx state=directory
notify:
- nginx install
- nginx config
- nginx start
handlers:
- name: nginx install
shell: cd /tmp; tar xzf nginx-1.12.0.tar.gz; cd
nginx-1.12.0; ./configure --prefix=/usr/local/nginx;
make; make install
- name: nginx config
template: src=/mnt/nginx.conf.bak dest=/usr/local/nginx/conf/nginx.conf
- name: nginx start
shell: /usr/local/nginx/sbin/nginx |
Ö´Ðнá¹ûΪ£º

²âÊÔ½á¹ûΪ£º
¿ÉÒÔ¿´µ½172.25.70.1µÄĬÈÏ80¶Ë¿ÚÊÇnginx£¬ÒòΪÎÒ֮ǰÒѾ°ÑËüµÄapacheÐ¶ÔØµôÁË£¬ËùÒÔnginx°²×°ÁËÖ®ºó£¬Ä¬ÈÏnginxÊÇ80¶Ë¿Ú£»¶ø172.25.70.2µÄnginxÊÇ81¶Ë¿Ú£¬¶ø80¶Ë¿Ú»¹ÊÇÉÏÃæ²âÊÔʱµÄapacheµÄindex.htmlÒ³Ãæ

|