准备:新建文件夹nginx-auto
1:复制源机nginx主配置文件
cp /etc/nginx/nginx.conf ./nginx-auto/nginx.conf.j2
2:复制源机nginx子配置文件
cp /etc/nginx/conf.d/default.conf ./nginx-auto/ #文件名看实际文件名
3:配置nginx源
# cat ./nginx-auto/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
部署文件:vim ./nginx-auto/ngimx-auto.yaml
- name: 自动部署nginx
hosts: web
gather_facts: no
vars:
main: nginx.conf.j2
sub: default.conf
tasks:
- name: 传输库
copy: src=nginx.repo dest=/etc/yum.repo.d/
- name: 安装nginx
yum: name=nginx
- name: 设置主配置文件
template:
src: "{{ main }}"
dest: /etc/nginx/nginx.conf
tags: update
notify: reload nginx
- name: 设置子配置文件
copy:
src: "{{ sub }}"
dest: /etc/nginx/conf.d
tags: update
notify: reload nginx
- name: 检查nginx语法
shell: /usr/sbin/nginx -t
register: nginxsyntax
tags: update
- name: 返回值
debug:
var: nginxsyntax
tags: update
handlers:
- name: reload nginx
when:
- nginxsyntax.rc == 0
systemd: name=nginx state=reloaded
角色:创建role目录
# ansible-galaxy init webserves
# tree webserves/
webserves/
├── defaults
│ └── main.yml
├── files
├── handlers
│ └── main.yml
├── meta
│ └── main.yml
├── README.md
├── tasks
│ └── main.yml
├── templates
├── tests
│ ├── inventory
│ └── test.yml
└── vars
tasks -包含角色要执行的任务的主要列表。
handlers -包含处理程序,此角色甚至该角色之外的任何地方都可以使用这些处理程序。
defaults -角色的默认变量。
vars -角色的其他变量。
files -包含可以通过此角色部署的文件。
templates -包含可以通过此角色部署的模板。
meta -为此角色定义一些元数据。
*************
把./nginx-auto/ngimx-auto.yaml 内的内容及ngin-auto文件内的文件 按上述分类拷贝到webserves里,例如:
templates 文件夹存放模板
存放 nginx.conf.j2 模板
vars 文件夹中的 main.yml 文件
main: nginx.conf.j2
sub: default.conf
使用方法:
新建文件:deploy-nginx.yml #文件需和webserves目录同级目录
- name: use role
hosts: webservers
roles:
- webservers
执行:
ansible-playbook deploy-nginx.yml