1.安装ansible
2.ansible相关配置
<code>cat</code> <code>/etc/ansible/hosts</code>
<code>[webserver]</code>
<code>192.168.1.101</code>
<code>192.168.1.102</code>
3.在/etc/ansible/roles中创建nginx目录结构
<code>[root@Centos roles]</code><code># mkdir -p/etc/ansible/roles/nginx/{defaults,files,handlers,meta,tasks,templates,vars}</code>
整体目录结构:
<a href="https://s5.51cto.com/wyfs02/M01/95/DB/wKioL1kal2Xjtg2_AACFJDcbHqY971.jpg-wh_500x0-wm_3-wmp_4-s_3871789157.jpg" target="_blank"></a>
install_nginx.sh内容:
<code>#!/bin/bash</code>
<code>#</code>
<code>yum -y </code><code>install</code> <code>gcc openssl-devel pcre-devel zlib-devel</code>
<code>groupadd -r nginx</code>
<code>useradd</code> <code>-r -g nginx -s </code><code>/bin/false</code> <code>-M nginx</code>
<code>cd</code> <code>/root/soft</code> <code>&&</code>
<code>tar</code> <code>zxf nginx-1.2.2.</code><code>tar</code><code>.gz && </code><code>cd</code> <code>nginx-1.2.2 &&</code>
<code>.</code><code>/configure</code> <code>\</code>
<code> </code><code>--prefix=</code><code>/usr/local/nginx</code> <code>\</code>
<code> </code><code>--sbin-path=</code><code>/usr/sbin/nginx</code> <code>\</code>
<code> </code><code>--conf-path=</code><code>/etc/nginx/nginx</code><code>.conf \</code>
<code> </code><code>--error-log-path=</code><code>/var/log/nginx/error</code><code>.log \</code>
<code> </code><code>--http-log-path=</code><code>/var/log/nginx/access</code><code>.log \</code>
<code> </code><code>--pid-path=</code><code>/var/run/nginx/nginx</code><code>.pid \</code>
<code> </code><code>--lock-path=</code><code>/var/lock/nginx</code><code>.lock \</code>
<code> </code><code>--user=nginx \</code>
<code> </code><code>--group=nginx \</code>
<code> </code><code>--with-http_ssl_module \</code>
<code> </code><code>--with-http_flv_module \</code>
<code> </code><code>--with-http_stub_status_module \</code>
<code> </code><code>--with-http_gzip_static_module \</code>
<code> </code><code>--http-client-body-temp-path=</code><code>/var/tmp/nginx/client/</code> <code>\</code>
<code> </code><code>--http-proxy-temp-path=</code><code>/var/tmp/nginx/proxy/</code> <code>\</code>
<code> </code><code>--http-fastcgi-temp-path=</code><code>/var/tmp/nginx/fcgi/</code> <code>\</code>
<code> </code><code>--http-uwsgi-temp-path=</code><code>/var/tmp/nginx/uwsgi</code> <code>\</code>
<code> </code><code>--http-scgi-temp-path=</code><code>/var/tmp/nginx/scgi</code> <code>\</code>
<code> </code><code>--with-pcre</code>
<code>make</code> <code>&& </code><code>make</code> <code>install</code>
main.yml内容:
<code>- name: copy nginx-1.2.2.</code><code>tar</code><code>.gz to webservers</code>
<code> </code><code>copy: src=nginx-1.2.2.</code><code>tar</code><code>.gz dest=</code><code>/root/soft/nginx-1</code><code>.2.2.</code><code>tar</code><code>.gz</code>
<code>- name: copy install_nginx.sh to webservers</code>
<code> </code><code>copy: src=install_nginx.sh dest=</code><code>/root/soft/install_nginx</code><code>.sh</code>
<code>- name: </code><code>install</code> <code>nginx</code>
<code> </code><code>shell: </code><code>/bin/bash</code> <code>/root/soft/install_nginx</code><code>.sh</code>
webservice.yml内容:
<code>- hosts: webserver</code>
<code> </code><code>remote_user: root</code>
<code> </code><code>roles:</code>
<code> </code><code>- nginx</code>
4.执行ansible-playbook进行安装:
<code>[root@Centos files]</code><code># cd /etc/ansible/</code>
<code>[root@Centos ansible]</code><code># ls</code>
<code>ansible.cfg hosts roles webservice.yml</code>
<code>[root@Centos ansible]</code><code># ansible-playbook webservice.yml</code>
安装成功!
5.测试
由于webserver两个节点安装完没有启动脚本,我们从ansible主机上拷贝一下启动脚本:
<code>[root@Centos ansible]</code><code># scp /etc/rc.d/init.d/nginx [email protected]:/etc/rc.d/init.d/</code>
<code>[root@Centos ansible]</code><code># scp /etc/rc.d/init.d/nginx [email protected]:/etc/rc.d/init.d/</code>
以下为脚本内容:
<code>#!/bin/sh</code>
<code># nginx - this script starts and stops the nginx daemon</code>
<code># chkconfig: - 85 15 </code>
<code># description: Nginx is an HTTP(S) server, HTTP(S) reverse \</code>
<code># proxy and IMAP/POP3 proxy server</code>
<code># processname: nginx</code>
<code># config: /etc/nginx/nginx.conf</code>
<code># config: /etc/sysconfig/nginx</code>
<code># pidfile: /var/run/nginx.pid</code>
<code> </code>
<code># Source function library.</code>
<code>. </code><code>/etc/rc</code><code>.d</code><code>/init</code><code>.d</code><code>/functions</code>
<code># Source networking configuration.</code>
<code>. </code><code>/etc/sysconfig/network</code>
<code># Check that networking is up.</code>
<code>[ </code><code>"$NETWORKING"</code> <code>= </code><code>"no"</code> <code>] && </code><code>exit</code> <code>0</code>
<code>nginx=</code><code>"/usr/local/nginx/sbin/nginx"</code>
<code>prog=$(</code><code>basename</code> <code>$nginx)</code>
<code>NGINX_CONF_FILE=</code><code>"/usr/local/nginx/conf/nginx.conf"</code>
<code>[ -f </code><code>/etc/sysconfig/nginx</code> <code>] && . </code><code>/etc/sysconfig/nginx</code>
<code>lockfile=</code><code>/var/lock/subsys/nginx</code>
<code>make_dirs() {</code>
<code> </code><code># make required directories</code>
<code> </code><code>user=`nginx -V 2>&1 | </code><code>grep</code> <code>"configure arguments:"</code> <code>| </code><code>sed</code> <code>'s/[^*]*--user=\([^ ]*\).*/\1/g'</code> <code>-`</code>
<code> </code><code>options=`$nginx -V 2>&1 | </code><code>grep</code> <code>'configure arguments:'</code><code>`</code>
<code> </code><code>for</code> <code>opt </code><code>in</code> <code>$options; </code><code>do</code>
<code> </code><code>if</code> <code>[ `</code><code>echo</code> <code>$opt | </code><code>grep</code> <code>'.*-temp-path'</code><code>` ]; </code><code>then</code>
<code> </code><code>value=`</code><code>echo</code> <code>$opt | </code><code>cut</code> <code>-d </code><code>"="</code> <code>-f 2`</code>
<code> </code><code>if</code> <code>[ ! -d </code><code>"$value"</code> <code>]; </code><code>then</code>
<code> </code><code># echo "creating" $value</code>
<code> </code><code>mkdir</code> <code>-p $value && </code><code>chown</code> <code>-R $user $value</code>
<code> </code><code>fi</code>
<code> </code><code>fi</code>
<code> </code><code>done</code>
<code>}</code>
<code>start() {</code>
<code> </code><code>[ -x $nginx ] || </code><code>exit</code> <code>5</code>
<code> </code><code>[ -f $NGINX_CONF_FILE ] || </code><code>exit</code> <code>6</code>
<code> </code><code>make_dirs</code>
<code> </code><code>echo</code> <code>-n $</code><code>"Starting $prog: "</code>
<code> </code><code>daemon $nginx -c $NGINX_CONF_FILE</code>
<code> </code><code>retval=$?</code>
<code> </code><code>echo</code>
<code> </code><code>[ $retval -</code><code>eq</code> <code>0 ] && </code><code>touch</code> <code>$lockfile</code>
<code> </code><code>return</code> <code>$retval</code>
<code>stop() {</code>
<code> </code><code>echo</code> <code>-n $</code><code>"Stopping $prog: "</code>
<code> </code><code>killproc $prog -QUIT</code>
<code> </code><code>[ $retval -</code><code>eq</code> <code>0 ] && </code><code>rm</code> <code>-f $lockfile</code>
<code>restart() {</code>
<code> </code><code>configtest || </code><code>return</code> <code>$?</code>
<code> </code><code>stop</code>
<code> </code><code>sleep</code> <code>1</code>
<code> </code><code>start</code>
<code>reload() {</code>
<code> </code><code>echo</code> <code>-n $</code><code>"Reloading $prog: "</code>
<code> </code><code>killproc $nginx -HUP</code>
<code> </code><code>RETVAL=$?</code>
<code>force_reload() {</code>
<code> </code><code>restart</code>
<code>configtest() {</code>
<code> </code><code>$nginx -t -c $NGINX_CONF_FILE</code>
<code>rh_status() {</code>
<code> </code><code>status $prog</code>
<code>rh_status_q() {</code>
<code> </code><code>rh_status ></code><code>/dev/null</code> <code>2>&1</code>
<code>case</code> <code>"$1"</code> <code>in</code>
<code> </code><code>start)</code>
<code> </code><code>rh_status_q && </code><code>exit</code> <code>0</code>
<code> </code><code>$1</code>
<code> </code><code>;;</code>
<code> </code><code>stop)</code>
<code> </code><code>rh_status_q || </code><code>exit</code> <code>0</code>
<code> </code><code>restart|configtest)</code>
<code> </code><code>reload)</code>
<code> </code><code>rh_status_q || </code><code>exit</code> <code>7</code>
<code> </code><code>force-reload)</code>
<code> </code><code>force_reload</code>
<code> </code><code>status)</code>
<code> </code><code>rh_status</code>
<code> </code><code>condrestart|try-restart)</code>
<code> </code><code>;;</code>
<code> </code><code>*)</code>
<code> </code><code>echo</code> <code>$</code><code>"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"</code>
<code> </code><code>exit</code> <code>2</code>
<code>esac</code>
webserver中的两台机器启动nginx服务:
ip:192.168.1.101中--
<a href="https://s2.51cto.com/wyfs02/M02/95/DC/wKiom1kamrTzgTRnAABqmTR0BBg043.jpg-wh_500x0-wm_3-wmp_4-s_3819960600.jpg" target="_blank"></a>
<a href="https://s4.51cto.com/wyfs02/M00/95/DC/wKiom1kam9DhWVDJAABH2aS7npI946.jpg-wh_500x0-wm_3-wmp_4-s_993687269.jpg" target="_blank"></a>
ip:192.168.1.102中--
<a href="https://s2.51cto.com/wyfs02/M02/95/DC/wKioL1kamrTBZ0RaAACCjSCnVDY489.jpg-wh_500x0-wm_3-wmp_4-s_874740458.jpg" target="_blank"></a>
<a href="https://s1.51cto.com/wyfs02/M01/95/DC/wKiom1kam-OyUAfTAABHnywNKxY566.jpg-wh_500x0-wm_3-wmp_4-s_3807725137.jpg" target="_blank"></a>
ok,完成!
本文转自 SoulMio 51CTO博客,原文链接:http://blog.51cto.com/bovin/1926216,如需转载请自行联系原作者