Ansible automatic installation of nginx
1. Install ansible
Reference: Ansible of automation tools for operation and maintenance
2.ansible related configuration
Cat / etc/ansible/ hosts[webserver] 192.168.1.101192.168.1.102
3. Create the nginx directory structure in / etc/ansible/roles
[root@Centos roles] # mkdir-p/etc/ansible/roles/nginx/ {defaults,files,handlers,meta,tasks,templates,vars}
Overall directory structure:
Install_nginx.sh content:
#! / bin/bash#yum-y install gcc openssl-devel pcre-devel zlib-develgroupadd-r nginxuseradd-r-g nginx- s / bin/false-M nginxcd / root/soft & & tar zxf nginx-1.2.2.tar.gz & & cd nginx-1.2.2 &. / configure\-prefix=/usr/local/nginx\-sbin-path=/usr/sbin/nginx\-conf-path=/etc/nginx/nginx.conf\-error-log-path= / var/log/nginx/error.log\-http-log-path=/var/log/nginx/access.log\-pid-path=/var/run/nginx/nginx.pid\-lock-path=/var/lock/nginx.lock\-user=nginx\-group=nginx\-with-http_ssl_module\-with-http_flv_module\-with-http_stub_status_module\-with-http_gzip_static_module \-http-client-body-temp-path=/var/tmp/nginx/client/\-http-proxy-temp-path=/var/tmp/nginx/proxy/\-http-fastcgi-temp-path=/var/tmp/nginx/fcgi/\-http-uwsgi-temp-path=/var/tmp/nginx/uwsgi\-http-scgi-temp-path=/var/tmp/nginx/scgi\-with-pcremake & & make install
Main.yml content:
-name: copy nginx-1.2.2.tar.gz to webservers copy: src=nginx-1.2.2.tar.gz dest=/root/soft/nginx-1.2.2.tar.gz- name: copy install_nginx.sh to webservers copy: src=install_nginx.sh dest=/root/soft/install_nginx.sh- name: install nginx shell: / bin/bash / root/soft/install_nginx.sh
Webservice.yml content:
-hosts: webserver remote_user: root roles:-nginx
4. Execute ansible-playbook to install:
[root@Centos files] # cd / etc/ansible/ [root@Centos ansible] # lsansible.cfg hosts roles webservice.yml [root@Centos ansible] # ansible-playbook webservice.yml
Installation successful!
5. test
Since there is no startup script for both webserver nodes after installation, let's copy the startup script from the ansible host:
[root@Centos ansible] # scp / etc/rc.d/init.d/nginx root@192.168.1.101:/etc/rc.d/init.d/ [root@Centos ansible] # scp / etc/rc.d/init.d/nginx root@192.168.1.102:/etc/rc.d/init.d/
Here is the content of the script:
#! / bin/sh## nginx-this script starts and stops the nginx daemon## chkconfig: 85 15 # description: Nginx is an HTTP (S) server, HTTP (S) reverse\ # proxy and IMAP/POP3 proxy server# processname: nginx# config: / etc/nginx/nginx.conf# config: / etc/sysconfig/nginx# pidfile: / var/run/nginx.pid # Source function library.. / etc/rc.d/init.d/functions # Source networking configuration.. / etc/sysconfig/network # Check that networking is up. ["$NETWORKING" = "no"] & & exit 0 nginx= "/ usr/local/nginx/sbin/nginx" prog=$ (basename $nginx) NGINX_CONF_FILE= "/ usr/local/nginx/conf/nginx.conf" [- f / etc/sysconfig/nginx] & &. / etc/sysconfig/nginx lockfile=/var/lock/subsys/nginx make_dirs () {# make required directories user= `nginx-V 2 > & 1 | grep "configure arguments:" | sed's / [^ *] *-- user=\ ([^] *\). * /\ 1configure arguments:' g'- `options= `$ nginx-V 2 > & 1 | grep 'configure arguments:' `for opt in $options; do if [`echo $opt | grep'. *-temp-path' `] Then value= `echo $opt | cut-d "="-f 2`if [!-d "$value"] Then # echo "creating" $value mkdir-p $value & & chown-R $user $value fi fi done} start () {[- x $nginx] | | exit 5 [- f $NGINX_CONF_FILE] | | exit 6 make_dirs echo-n $"Starting $prog:" daemon $nginx-c $NGINX_CONF_FILE retval=$? Echo [$retval-eq 0] & & touch $lockfile return $retval} stop () {echo-n $"Stopping $prog:" killproc $prog-QUIT retval=$? Echo [$retval-eq 0] & & rm-f $lockfile return $retval} restart () {configtest | | return $? Stop sleep 1 start} reload () {configtest | | return $? Echo-n $"Reloading $prog:" killproc $nginx-HUP RETVAL=$? Echo} force_reload () {restart} configtest () {$nginx-t-c $NGINX_CONF_FILE} rh_status () {status $prog} rh_status_q () {rh_status > / dev/null 2 > & 1} case "$1" in start) rh_status_q & & exit 0 $1; stop) rh_status_q | | exit 0 $1 Restart | configtest) $1;; reload) rh_status_q | | exit 7 $1;; force-reload) force_reload;; status) rh_status;; condrestart | try-restart) rh_status_q | | exit 0;; *) echo $"Usage: $0 {start | stop | restart | condrestart | try-restart | reload | force-reload | configtest}" exit 2esac
Two machines in webserver start the nginx service:
In ip:192.168.1.101-
In ip:192.168.1.102-
Ok, done!