ansible nginx installer
ansible 官方网站建议playbook剧本机构如下
目录结构
production #正式环境inventory文件 staging #测试环境用的inventory文件 group_vars / #机器组的变量文件 group1 group2 hosts_vars / #执行机器成员的变量 hostname1 hostname2 = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = site.yml # 主要的playbook剧本文件 webservers.yml # webserver类型服务所用的剧本 dbservers.yml # 数据库类型的服务所用的剧本 roles/ webservers/ # webservers这个角色相关任务和自定义变量 tasks/ # 存放任务文件目录 main.yml # 存放任务信息的 handlers/ # main.yml # vars/ # 变量的目录 特定的变量目录 main.yml # 里面记录详细变量 dbservers/ # dbservers这个角色相关任务和自定义变量 ... common/ # 公共的 tasks/ # 公共任务目录 main.yml # handlers/ # main.yml # handlers file vars/ # 角色所用的变量 main.yml # = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = templates/ # ntp.conf.j2 # 用于模板文件 file/ # 用于存放文件的目录 bar.txt # fool.sh # meta/ # 角色的依赖 main.yml #
Nginx 工程方式的编译安装
1 场景剧本分解
2 剧本分解
.
├── files
│ ├── index.html
│ ├── nginx
│ └── nginx-1.12.3.tar.gz
├── production
├── roles
│ ├── apache
│ ├── common
│ │ ├── tasks
│ │ │ └── main.yml
│ │ └── vars
│ │ └── main.yml
│ ├── handlers
│ ├── meta
│ ├── nginx
│ │ ├── handlers
│ │ │ └── main.yml
│ │ ├── tasks
│ │ │ ├── base.yml
│ │ │ ├── main.yml
│ │ │ └── nginx.yml
│ │ └── vars
│ │ └── main.yml
│ └── tasks
├── staging
├── templates
│ └── nginx.conf
├── webserver.retry
└── webserver.yml
2 剧本分解
├── ansible.cfg #ansible主配置文件
├── files #存放上传文件
├── production #线上的主机配置文件
├── roles #roles角色执行
├── staging #线下测试环境使用主机配置文件
├── templates #模板(配置、html)
└── webserver.yml # web服务相关主执行文件
files目录结构
#tree -L 1
.
├── index.html #测试用的html文件
├── nginx #系统init中,控制nginx启动脚本文件
└── nginx-1.12.3.tar.gz #nginx的安装包文件
templates 目录结构
#tree -L 1
.
└── nginx.conf # nginx的自定义conf文件
roles 目录结构
.
├── apache
├── common #公共目录
│ ├── tasks
│ │ └── main.yml
│ └── vars
│ └── main.yml #变量目录 放在common里面
├── handlers
├── meta
├── nginx
│ ├── handlers #handlers通过notify触发
│ │ └── main.yml #
│ ├── tasks # 剧本配置问阿金
│ │ ├── base.yml #基本配置任务
│ │ ├── main.yml
│ │ └── nginx.yml
│ └── vars
│ └── main.yml
└── tasks
远程机器 安装基本环节包
yum install gcc openssl-devel 环境包
环境配置案例模板
/etc/ansible/palybook/production #主机配置文件hosts文件
[nginx_hosts]
192.168.192.1 ansible_ssh_prot=22 ansible_ssh_user=root ansible_ssh_pass='123456'
[nginx_hsots:vars]
filename=hostname
/etc/ansible/palybook/webserver.yml #配置文件
---
- hosts : nginx_hosts
remote_user : root
roles :
- common
- {rele: nginx, tags:nginx }
/etc/ansible/palybook/roles/common/vars/main.yml #安装程序 定义安装目录及环境变量
download_dir : /opt/download #上传到目标主机目录
app_dir : /opt/app # 安装程序目录
/etc/ansible/palybook/roles/nginx/tasks/main.yml #导入其他的配置文件安装模块
---
- include_tasks : basic.yml
- include_tasks : nginx.yml
/etc/ansible/palybook/roles/nginx/tasks/basic.yml #安装相应的软件包
---
- name : install basic parket for nginx
yum : name={{ item}} state=latest
with_items :
- gcc-c++
- openssl-devel
- pcre
- pcre-devel
/etc/ansible/palybook/roles/nginx/tasks/nginx.yml # nginx程序编译安装过程
---
- name : zunip nginx parket to remote hsots
unarchive : src=/nginx-1.12.2.tar.gz dest={{download_dir}}
name : make install nginx
shell : cd {{download_dir}}/nginx-1.12.2/ && ./confgure --prefile={{app_dir}}/nginx --with-http_ssl_module --with-http_stub_status_module && make && mak install
- name : copy a test html file to remote hosts
copy src=index.html dest={{app_dir}}/nginx/html/
- name : copy nginx config file to remote hosts
templates : src=nginx.conf dest={{app_dir}}/nginx/conf/nginx.conf
notify:
- restar nginx service
- name : ensure nginx srvice is running
service : name=nginx state=started
/etc/ansible/palybook/roles/nginx/tasks/handlers/main.yml # 定义的是程序重启服务 handlers
name : restart nginx service
service : name=nginx state=restarted
ansible-playbook -i /etc/ansible/palybook/production /etc/ansible/palybook/webservers.yml #执行安装过程测试
温馨提示
netstat -luntp|grep nginx #check nginx 服务是否正常

浙公网安备 33010602011771号