Get the App
SLTechnology News&Howtos  ›  Servers  › 

Ansible automatic installation of nginx

Shulou Source: shulou.com Published: 2022-06-03 05:17:43 09月26日 Update

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!

Tags: Content script directory structure automation success two host tool copy whole machine node medium creation reference service test configuration Apple Docker Huawei Linux macOS MariaDB Microsoft MySQL NVidia OPPO Reno Microsoft Shulou Information Linux macOS NVidia