一键部署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
如下图:

则,表示部署成功。