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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
Ansibleʵ¼ùƪ£ºAnsible PlayBookÓ¦ÓÃ
 
×÷Õߣº°~°~
  2324  次浏览      34
 2020-3-2
 
±à¼­ÍƼö:
±¾ÎÄÖ÷Òª½éÉÜÁË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Ò³Ãæ

 
   
2324 ´Îä¯ÀÀ       34
Ïà¹ØÎÄÕÂ

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

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

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