天天看点

Ansible自动化安装nginx

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>&amp;&amp;</code>

<code>tar</code> <code>zxf nginx-1.2.2.</code><code>tar</code><code>.gz &amp;&amp; </code><code>cd</code> <code>nginx-1.2.2 &amp;&amp;</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>&amp;&amp; </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>] &amp;&amp; </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>] &amp;&amp; . </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&gt;&amp;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&gt;&amp;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 &amp;&amp; </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 ] &amp;&amp; </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 ] &amp;&amp; </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 &gt;</code><code>/dev/null</code> <code>2&gt;&amp;1</code>

<code>case</code> <code>"$1"</code> <code>in</code>

<code>    </code><code>start)</code>

<code>        </code><code>rh_status_q &amp;&amp; </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,如需转载请自行联系原作者

继续阅读