一键部署nginx+bird.zip

环境准备:

客户端:web01:ip:192.168.10.7、172.16.1.7,主机名:web01
       web02:ip:192.168.10.8、172.16.1.8,主机名:web02
       web03:ip:192.168.10.9、172.16.1.9,主机名:web03
       db01:ip:192.168.10.51、172.16.1.51,主机名:db01
管理端:m01:ip:192.168.10.61,主机名:m01,项目目录:/server/project_roles/

管理端与客户端的ssh密钥认证已提前做好。

1、管理端

管理端:m01:ip:192.168.10.61,主机名:m01

1)创建项目目录

项目目录:/server/project_roles

[root@m01 ~]#mkdir /server/project_roles

2)主机分组清单

[root@m01 ~]#cd /server/project_roles
[root@m01 /server/project_roles]#vim hosts
[web]
172.16.1.7
172.16.1.8
172.16.1.9

[db]
172.16.1.51

3)group_vars

创建group_vars/all/和nginx的roles规范目录:

[root@m01 /server/project_roles]#mkdir -p group_vars/all/  nginx/{tasks,files,templates,handlers}

目录结构如下:

[root@m01 /server/project_roles]#tree -F
.
├── group_vars/
│   └── all/
├── hosts
└── nginx/
    ├── files/
    ├── handlers/
    ├── tasks/
    └── templates/

7 directories, 1 file
[root@m01 /server/project_roles]#

4)tasks

创建tasks的主文件main.yml

[root@m01 /server/project_roles]#vim nginx/tasks/main.yml
- name: 1.分发nginx yum源文件
  copy:
    src: nginx.repo
    dest: /etc/yum.repos.d/nginx.repo
    backup: yes
- name: 2.安装nginx
  yum:
    name: nginx
    state: present
- name: 3.分发bird.conf配置文件
  template:
    src: bird.conf.j2
    dest: /etc/nginx/conf.d/bird.conf
  notify:
    - restart_nginx
- name: 4.创建站点目录
  file:
    path: "{{ code_dir }}"
    state: directory
- name: 5.启动nginx服务
  systemd:
    name: nginx
    state: started
    enabled: yes
- name: 6.分发代码到站点目录
  unarchive:
    src: bird.zip
    dest: "{{ code_dir }}"

5)相关配置文件

1、nginx的yum源文件(files目录)

nginx的yum源配置方法:http://nginx.org/en/linux_packages.html#RHEL

[root@m01 ~]#vim  /server/project_roles/nginx/files/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

2、站点配置文件bird.conf(template目录,bird.conf.j2)

[root@m01 /server/project_roles]#vim nginx/templates/bird.conf.j2
server {
   listen 81;  #监听的端口,可以是80,一般是80
   server_name bird.mylinux.com;  # 主机名、域名
   #下面root后面的路径就是网站站点目录
   root {{ code_dir }};  #这里使用ansible的变量,在group_vars/all/目录中定义变量文件
   location / {
        index index.html;
   }
}

3、变量文件vars.yml(group_vars/all/ 目录)

[root@m01 /server/project_roles]#vim group_vars/all/vars.yml
#web服务器的变量,网站站点目录
code_dir: /app/code/bird/
4、重启nginx服务文件main.yml(handler目录)

handlers目录中创建main.yml文件

[root@m01 /server/project_roles]#vim nginx/handlers/main.yml
- name: restart_nginx
  systemd:
    name: nginx
    state: restarte
5、bird代码压缩包(放在files目录)

提前准备好bird.zip,放在nginx/files/目录中

[root@m01 /server/project_roles]#ls nginx/files/
bird.zip  nginx.repo
[root@m01 /server/project_roles]#
6、剧本入口文件(top.yml)
[root@m01 /server/project_roles]#vim top.yml
- hosts: 172.16.1.7
  gather_facts: no
  roles: 
    - role: nginx
7、整个目录结构

最终,整个目录架构如下:

[root@m01 /server/project_roles]#tree -F
.
├── group_vars/
│   └── all/
│       └── vars.yml
├── hosts
├── nginx/
│   ├── files/
│   │   ├── bird.zip
│   │   └── nginx.repo
│   ├── handlers/
│   │   └── main.yml
│   ├── tasks/
│   │   └── main.yml
│   └── templates/
│       └── bird.conf.j2
└── top.yml

7 directories, 8 files
[root@m01 /server/project_roles]#

6)执行剧本

浏览器打开网站:192.168.10.7:81

如下图:

则,表示部署成功。