ansible自动化部署nginx

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ansible自动化部署nginx相关的知识,希望对你有一定的参考价值。

1.ansible的安装
(1)准备两台机器,分别 IP为114.67.232.214,主机名为centos100
IP为114.67.233.22,主机名为centos101
(2)需要在centos100上安装ansible,直接使用yum安装:yum install ansible
(3)设置密钥认证
在centos100上操作:ssh-keygen
ssh-copy-id -i /root/.ssh/id_rsa.pub 114.67.233.22
测试成功:
[[email protected] ~]# ssh 114.67.233.22
Last login: Mon Jul 9 17:36:24 2018 from 1.119.132.165
Welcome to JCLOUD Elastic Compute Service
[[email protected] ~]# logout
Connection to 114.67.233.22 closed.
(4)vim /etc/ansible/hosts
[web]
114.67.232.214
114.67.233.22
说明:在此文件中增加上述内容。web为主机组名字,自定义的,下面的两个IP为组内的机器IP
vim /etc/ansible/ansible.cfg
host_key_checking = False 取消这一行的注释。(打开的理由:如果有台被管节点重新安装系统并在know_hosts中有了与之前不同的密钥信息,就会提示一个密钥不匹配的错误信息,直到被纠正为止。
在使用ansible时,如果有台被管节点没有在know_hosts中被初始化,将会在使用Ansible或定时执行ansible时提示对key信息的确认)

  1. ##################################
    playbook 实战-nginx 安装 1
    (1)思路:先在一台机器上编译安装好nginx,打包,然后再用ansible去下发
    tar zxf nginx-1.8.1.tar
    cd nginx-1.8.1
    ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module
    yum install -y pcre-devel openssl-devel gcc 解决依赖,缺少什么装什么
    make
    make install
    ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ 做个软连接
    nginx -t 检查语法错误
    nginx 启动nginx
    此时nginx安装完成
    (2)cd /etc/ansible
    mkdir nginx_install
    cd nginx_install
    mkdir -p roles/{common,install}/{handlers,files,meta,tasks,templates,vars}

    说明:roles目录下面有两个角色,common为一些准确操作,install为安装nginx的操作。每个角色下面又有几个目录,install为安装nginx的操作,每个角色下面又有几个目录,handlers下面是当发生
    改变时要执行的操作,通常用再配置文件发生改变,重启服务。files为安装时用到的一些文件,meta为说明信息,说明角色依赖等信息,tasks里面是核心的配置文件,templates通常存一些配置
    文件,启动脚本等模板文件,vars下为定义的变量。
    ###################################
    playbook 实战-nginx 安装 2
    (1)需要事先准备好用到的文件,具体如下:
    在一台机器上事先编译安装好nginx,配置好启动脚本,配置好配置文件。

    安装好后,我们需要把nginx目录打包,并放到/etc/ansible/nginx_install/roles/install/files 下面,名字为nginx.tar.gz
    cd /usr/local
    tar czvf nginx.tar.gz --exclude "nginx.conf" --exclude "vhost"  nginx/
    mv nginx.tar.gz /etc/ansible/nginx_install/roles/install/files
    启动脚本,配置文件都要放到/etc/ansible/nginx_install/roles/install/templates下面
    cp nginx/conf/nginx.conf  /etc/ansible/nginx_install/roles/install/templates
    cp /etc/init.d/nginx  /etc/ansible/nginx_install/roles/install/templates/ (我没加)
    
    cd /etc/ansible/nginx_install/roles
    定义common的tasks,nginx是需要一些依赖包的
    vim ./common/task/main.yml
    - name: install initializtion require software
      yum: name="pcre-devel,oepnssl-devel,gcc"  state=installed

    #####################################
    playbook 实战-nginx 安装 3
    (1)定义变量
    vim /etc/ansible/nginx_install/roles/install/vars/main.yml
    nginx_user: www
    nginx_port: 80
    nginx_basedir: /usr/local/nginx
    (2)首先要把所有用到的文档拷贝到目标机器
    vim /etc/ansible/nginx_install/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 Nginx Software
      shell: tar zxf /tmp/nginx.tar.gz -C /usr/local/
    • name: Copy Nginx Config
      template: src=nginx.conf dest={{ nginx_basedir }}/conf/ owner=root group=root mode=0644
      ######################################
      playbook 实战-nginx 安装4
      接下来会建立用户,启动服务,删除压缩包
      vim /etc/ansible/nginx_install/roles/install/tasks/install.yml
      • name: Create Nginx User
        user: name={{ nginx_user }} state=present createhome=no shell=/sbin/nologin
      • name: Start Nginx Service
        shell: /usr/local/nginx/sbin/nginx
      • name: Add Boot Start Nginx Service
        shell: chkconfig --level 345 nginx on
      • name: Delete Nginx compression files
        shell: rm -fr /tmp/nginx.tar.gz
        ##############################
        playbook 实战-nginx 安装 5
        再创建main.yml并且把copy和install调用
        vim /etc/ansible/nginx_install/roles/install/tasks/main.yml
    • include: copy.yml
    • include: install.yml
      到此两个roles: common和install就定义完成了,接下来要定义一个入口配置文件

      vim /etc/ansible/nginx_install/install.yml

      • hosts: centos101
        remote_user: root
        gather_facts: True
        roles
        • common
        • install

以上是关于ansible自动化部署nginx的主要内容,如果未能解决你的问题,请参考以下文章

实战:ansible自动化部署nginx+keepalived+mysql负载均衡集群

ansible 发部署nginx以及更新回滚

Ansible自动部署LNAMP

Ansible使用playbook自动化编译安装Nginx

使用ansible结合keepalived高可用,nginx反向代理部署小型企业环境

项目部署与ansible自动化部署