ansible一键安装nginx二进制版本

公司需求需要批量部署nginx,闲来无事,改进了原先手动部署的方式,写了一个ansible-playbook

复制代码
- hosts: web
  gather_facts: yes
  vars:
    ansible_ssh_common_args: '-o StrictHostKeyChecking=no'
  tasks:
   - name: add group
     group:
         name: nginx
         state: present

   - name: add user
     user:
         name: nginx
         state: present
         group: nginx
         shell: /sbin/nologin
   - name: check path
     stat:
         path: /usr/local/nginx
     register: file_stat
   - name: unarchive
     unarchive:
         src: /etc/ansible/files/nginx/nginx.tar.gz
         dest: /usr/local/
         owner: nginx
         group: nginx
     when: file_stat.stat.exists == False

   - name: check path
     stat:
         path: /apps/nginx/conf
     register: file_stat_nginx
   - name: compile and install
     shell:
         cmd: "./configure --prefix=/apps/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module &&  make && make install"
         chdir: "/usr/local/nginx"
     when: file_stat_nginx.stat.exists == False
   - name: chown
     shell:
         cmd: "chown -R  nginx.nginx /apps/nginx && ln -sv /apps/nginx/sbin/nginx /usr/sbin/nginx"
     ignore_errors: yes
   - name: mkdir  pid
     file:
         path: /apps/nginx/run
         state: directory
         owner: nginx
         group: nginx
         recurse: yes
   - name: conf file
     template:
         src: /etc/ansible/files/nginx/nginx.conf
         dest: /apps/nginx/conf/nginx.conf
         owner: nginx
         group: nginx

   - name: mkdir  pid
     file:
         path: /apps/nginx/conf.d
         state: directory
         owner: nginx
         group: nginx
         recurse: yes
   - name: conf.d  file
     template:
         src: /etc/ansible/files/nginx/bbs.com.conf
         dest: /apps/nginx/conf.d/bbs.com.conf
         owner: nginx
         group: nginx

   - name: service file
     template:
         src: /etc/ansible/files/nginx/nginx.service
         dest: /lib/systemd/system/nginx.service
     changed_when: False
   - name: start nginx
     service:
         name: nginx
         state: restarted
         enabled: yes

附加文件

bbs.com.conf

复制代码
[root@devops nginx]#cat bbs.com.conf
server {
   listen       80;
   server_name  bbs.com;
   root /apps/nginx/html;
}




[root@devops nginx]#cat nginx.conf
worker_processes  1;
pid        /apps/nginx/run/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    include /apps/nginx/conf.d/*.conf;
}

添加service文件,方便后续管理

复制代码
[root@devops nginx]#cat nginx.service
[Unit]
Description=The nginx HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/apps/nginx/run/nginx.pid
ExecStart=/apps/nginx/sbin/nginx -c /apps/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
LimitNOFILE=10000

[Install]
WantedBy=multi-user.targe
相关推荐
wanhengidc15 分钟前
云手机 高振畅玩不踩坑
运维·服务器·安全·web安全·智能手机
有谁看见我的剑了?23 分钟前
linux 添加硬盘后系统识别不到硬盘处理
linux·运维·服务器
偶尔上线经常挺尸1 小时前
《100个“反常识”经验15:Nginx 502排查:从应用到内核》
运维·nginx·性能调优·反向代理·502错误·http排错
yoyo_zzm1 小时前
Laravel9.x新特性全解析
数据库·mysql·nginx
金色光环3 小时前
FreeModbus释放底层的 TCP 监听端口
服务器·网络·tcp/ip
yoyo_zzm4 小时前
Laravel8.x新特性全解析
数据库·nginx
一曦的后花园7 小时前
linux搭建promethes并对接node-exporter指标
linux·运维·服务器
桌面运维家8 小时前
服务器进程异常监控:快速定位与排障实战指南
运维·服务器
@CLoudbays_Martin118 小时前
UniApp是否能够接入SDK游戏盾呢?
服务器·网络·网络协议·tcp/ip·安全