• Ansible安装配置Nginx


    一、思路

    现在一台机器上编译安装好nginx、打包,然后在用ansible去下发

    cd /etc/ansible 进入ansible配置文件目录

    mkdir roles/{common,install}/{handlers,files,meta,tasks,templates,vars} –pv

    目录说明:

    roles目录下面有两个角色,common为一些准备操作,install为安装nginx的操作。每个角色下面又有几个目录,handlers下面是当前发生改变时要执行的操作,通常用在配置文件发生改变,重启服务。files为安装时用到的一些文件,meta为说明信息,说明角色依赖等信息,tasks里面是核心的配置文件,templates通常存一些配置文件,启动监本等模板,vars下为定义的变量

    进入install目录

    二、Ansible安装Nginx(操作目录/etc/ansible/nginx_install)

    /etc/ansible/nginx_install/roles/install/files目录下

    定义common的tasks,nginx是需要依赖包的

    cd /etc/ansible/nginx_install/

    # vim roles/common/tasks/main.yml

    - name: install initializtion require software

      yum: name={{ item }} state=installed

      with_items:

        - zlib-devel

        - openssl-devel

        - pcre-devel

    将编译好的配置文件放到roles/install/files/下

    cp /usr/local/nginx.tar.gz files/

    将配置文件和启动脚本放到roles/install/templates/下

    cp /usr/local/nginx/conf/nginx.conf templates/

    cp /etc/init.d/nginx templates/

    定义安装时所用的变量

    # vim roles/install/vars/main.yml

    nginx_user: www

    nginx_basedir: /usr/local/nginx

    nginx_port: 80

    定义复制文件copy.yml,复制所需的文件

    # vim roles/install/tasks/copy.yml

    - name: Copy Nginx Software

      copy: src=nginx.tar.gz dest=/tmp/nginx.tar.gz owner=root group=root

    - name: Uncompression Niginx Software

      shell: tar zxf /tmp/nginx.tar.gz -C /usr/local

    - name: Copy Nginx Start Script

      template: src=nginx dest=/etc/init.d/nginx owner=root group=root mode=0755

    - name: Copy Nginx Config

      template: src=nginx.conf dest={{ nginx_basedir }}/conf/ owner=root group=root mode=0644

    定义安装文件install.yml,安装nginx

    - name: Create Nginx User

      user: name={{ nginx_user }} state=present createhome=no shell=/sbin/nologin

    - name: Create /data/logs

      shell: mkdir -p /data/logs

    - name: Start Nginx Service

      service: name=nginx state=started

    - name: Add Boot Start Nginx Service

      shell: chkconfig --level 2345 nginx on

    - name: Delete Nginx compression files

      shell: rm -rf /tmp/nginx.tar.gz

    定义入口文件main.yml,引用复制文件和安装文件

    # vim roles/install/tasks/main.yml

    - include: copy.yml

    - include: install.yml

    定义总入口文件

    # vim install.yml

    ---

    - hosts: fansik

      remote_user: root

      gather_facts: Ture

      roles:

        - common

        - install

    到此就可以用# ansible-playbook install.yml安装了

    三、Ansible管理Nginx的配置文件

    生产环境中大多时候是需要管理配置文件的,安装软件包只是在初始化环境的时候用一下,创建一个管理nginx配置文件的playbook

    # mkdir -p /etc/ansible/nginx_config/roles/{new,old}/{files,handlers,vars,tasks}

    其中new为更新是用到的,old为回滚是用到的,file下面为nginx.conf和vhosts目录,handlers为启动nginx服务的命令

    关于回滚,需要在执行playbook之前备份一下旧的配置,所以老配置文件的管理一定要严格,千万不能随便去修改线上机器的配置,并且要保证new/files下面的配置和线上的配置一样

    先把nginx.conf和vhosts目录放到files目录下面

    cd /usr/local/nginx/conf

    cp -r nginx.conf vhosts /etc/ansible/nginx_conf/roles/new/files

    定义变量# vim roles/new/vars/main.yml

    nginx_basedir: /usr/local/nginx

    定义重新加载nginx服务

    # vim roles/new/handlers/main.yml

    - name: restart nginx

      shell: /etc/init.d/nginx reload

    定义核心任务# vim roles/new/tasks/main.yml

    - name: copy conf file

      copy: src={{ item.src }} dest={{ nginx_basedir }}/{{ item.dest }} backup=yes owner=root group=root mode=0644

      with_items:

        - { src: nginx.conf, dest: conf/nginx.conf }

        - { src: vhosts, dest: conf/ }

      notify: restart nginx

    定义更新总入口文件# vim update.yml

    ---

    - hosts: slave.fansik.com

      user: root

      roles:

      - new

    定义回滚总入口文件# vim backup.yml

    ---

    - hosts: slave.fansik.com

      user: root

      roles:

      - old

    更新之前先

    # rsync -av roles/new/files/ roles/old/files/

    四、自动化部署的样例库

    先安装git

    # yum -y install git

    # git clone git://github.com/dl528888/ansible-examples.git

     

  • 相关阅读:
    between…and…用法
    as用法
    as the saying goes 常言道
    share with用法
    know about用法
    *[topcoder]LCMSetEasy
    5生鲜超市(商品列表页功能,restful api基础以及vue项目结构介绍,drf的APIView、GenericView、viewsets和route)
    1生鲜超市(项目介绍)
    11生鲜超市(首页、商品数量、缓存和限速功能开发)
    Aplix助NEC/松下Linux手机平台建设
  • 原文地址:https://www.cnblogs.com/fansik/p/5519631.html
Copyright © 2020-2023  润新知