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
相关推荐
晚风吹长发3 分钟前
Docker使用——Docker容器及相关命令
linux·运维·服务器·docker·容器·架构
jun_bai1 小时前
Orthanc服务器使用java上传dicom影像文件
java·运维·服务器
RisunJan2 小时前
Linux命令-semanage(SELinux 策略管理)
linux·运维·服务器
流浪0012 小时前
Linux系统篇 21:文件(五)——动静态库、ELF 底层原理全解
linux·运维·服务器
snow@li2 小时前
Spring Boot:项目服务器完整部署教程(零基础可直接实操)
服务器·spring boot·后端
Dawn-bit2 小时前
Linux救援模式和系统恢复
linux·运维·服务器·云计算·运维开发
李昊哲小课2 小时前
咖啡工坊 · FastAPI 22 章教程合集
服务器·人工智能·python·fastapi
十八岁牛爷爷2 小时前
Linux 进程与进程状态・三层级深度解析
linux·运维·服务器
chexus3 小时前
21. 深入 Nginx HTTP 缓存源码:CDN功能
nginx·http·缓存
不会就选b3 小时前
linux之进程管理(二)--替换
linux·运维·服务器