Ansible自动化安装nginx

简介:

1.安装ansible

参考:运维自动化工具之Ansible

2.ansible相关配置

1
2
3
4
cat  /etc/ansible/hosts
[webserver]
192.168.1.101
192.168.1.102

3.在/etc/ansible/roles中创建nginx目录结构

1
[root@Centos roles] # mkdir -p/etc/ansible/roles/nginx/{defaults,files,handlers,meta,tasks,templates,vars}

整体目录结构:

wKioL1kal2Xjtg2_AACFJDcbHqY971.jpg-wh_50

install_nginx.sh内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/bin/bash
#
yum -y  install  gcc openssl-devel pcre-devel zlib-devel
groupadd -r nginx
useradd  -r -g nginx -s  /bin/false  -M nginx
cd  /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-pcre
make  &&  make  install

main.yml内容:

1
2
3
4
5
6
- 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内容:

1
2
3
4
- hosts: webserver
   remote_user: root
   roles:
   - nginx

4.执行ansible-playbook进行安装:

1
2
3
4
[root@Centos files] # cd /etc/ansible/
[root@Centos ansible] # ls
ansible.cfg  hosts  roles  webservice.yml
[root@Centos ansible] # ansible-playbook webservice.yml

 wKioL1kamPqBADqmAAEppeSVEck436.jpg-wh_50

安装成功!

5.测试

由于webserver两个节点安装完没有启动脚本,我们从ansible主机上拷贝一下启动脚本:

1
2
[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/

以下为脚本内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#!/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=\([^ ]*\).*/\1/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|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
         exit  2
esac

webserver中的两台机器启动nginx服务:

ip:192.168.1.101中--

wKiom1kamrTzgTRnAABqmTR0BBg043.jpg-wh_50

wKiom1kam9DhWVDJAABH2aS7npI946.jpg-wh_50

ip:192.168.1.102中--

wKioL1kamrTBZ0RaAACCjSCnVDY489.jpg-wh_50

wKiom1kam-OyUAfTAABHnywNKxY566.jpg-wh_50

ok,完成!











本文转自 SoulMio 51CTO博客,原文链接:http://blog.51cto.com/bovin/1926216,如需转载请自行联系原作者
目录
相关文章
|
4天前
|
应用服务中间件 nginx Docker
docker安装nginx
`docker search`找镜像,`pull`下载,后台 `-d` 运行容器,命名 `--name`,映射端口 `-p`。本机测试,确保服务器安全组开放端口,公网通过`http://ip:port`访问。用`docker stop id`停止容器。[查看详情](https://blog.csdn.net/javayoungcoolboy/article/details/134976510)
|
5天前
|
应用服务中间件 网络安全 nginx
nginx(1.13.7)首次安装出现:【make: *** 没有规则可以创建“default”需要的目标“build” 问题】解决措施
nginx(1.13.7)首次安装出现:【make: *** 没有规则可以创建“default”需要的目标“build” 问题】解决措施
|
6天前
|
运维 Kubernetes 监控
构建高效自动化运维体系:基于Ansible的策略与实践
【5月更文挑战第8天】 在当今IT基础设施管理领域,自动化不再是一个选择,而是必要的步骤。随着复杂性的增加和变更的频繁性,自动化工具如Ansible提供了一种高效、可靠的解决方案来简化配置管理和多节点部署。本文将探讨如何利用Ansible构建一个高效的自动化运维体系,涵盖其核心原理、策略设计以及在实际环境中的应用。我们将分析Ansible与其他自动化工具的不同之处,并提供一些最佳实践,以帮助运维专家提升他们的工作效率和系统稳定性。
|
7天前
|
运维 Linux Shell
Ansible的介绍与安装
**自动化与Linux系统管理**\n\n学习自动化运维能减少手动任务的错误和遗漏,提高效率。Ansible是一款Python开发的自动化工具,支持多平台,实现批量配置、部署和命令执行。它是无代理的,通过SSH连接管理主机,无需在远程主机安装额外软件。\n\nAnsible具有跨平台、人类可读的自动化语言、描述应用状态、易版本控制、动态清单管理和与其他系统集成等优点。\n\nAnsible的工作流程包括ad-hoc和playbook模式。安装涉及配置YUM源、EPEL源,然后通过yum或dnf安装软件包。在无网络环境下,可以下载rpm包离线安装。
|
7天前
|
存储 安全 Shell
Ansible安装基本原理及操作(初识)
Ansible安装基本原理及操作(初识)
|
7天前
|
运维 关系型数据库 MySQL
Ansible自动化运维工具主机清单配置
Ansible自动化运维工具主机清单配置
|
8天前
|
SQL 关系型数据库 MySQL
【简单无脑】自动化脚本一键安装虚拟机下的MySQL服务
该文章提供了在虚拟机上安装MySQL服务的简化方法,特别是针对新手。作者提供了一个自动化脚本`install_mysql.sh`,使得安装过程更简单。用户需要下载`install.rpm`资源,将其放在指定目录下,然后创建并编辑脚本文件,将提供的代码粘贴进去,通过`chmod u+x`授权,最后运行脚本`./install_mysql.sh [rpm文件路径]`来安装MySQL。文章还附有相关图片说明。
20 1
【简单无脑】自动化脚本一键安装虚拟机下的MySQL服务
|
8天前
|
SQL 缓存 关系型数据库
MySQL常见问题解决和自动化安装脚本
这篇内容包含了两个主要部分:解决MySQL登录问题和处理GPG密钥问题。当MySQL密码正确但无法登录时,可以通过执行SQL命令`ALTER USER`和`flush privileges`来修改和重置密码。对于MySQL安装时的GPG密钥错误,首先需要强制删除旧的MySQL仓库包,导入新的GPG公钥,然后安装MySQL服务器。如果遇到GPG检查错误,可以使用`--nogpgcheck`参数忽略检查来安装。最后,提供了一个自动化安装MySQL的脚本,用于检查旧版本、卸载残留、安装MySQL8并启动服务。
22 1
MySQL常见问题解决和自动化安装脚本
|
8天前
|
Ubuntu 应用服务中间件 nginx
ubuntu编译安装nginx及安装nginx_upstream_check_module模块
以上是编译安装Nginx和安装 `nginx_upstream_check_module`模块的基本步骤。根据你的需求和环境,你可能需要进一步配置Nginx以满足特定的要求。
19 3
|
13天前
|
弹性计算 运维 Shell
自动化软件包安装与管理
【4月更文挑战第30天】
7 0