用ansible批量安装nginx,ansiblenginx
用ansible批量安装nginx,ansiblenginx
本文利用ansible在centos7.5上同时安装3台nginx,请事先准备好4台服务器或虚拟机!
下面为4台服务器对应的IP地址:
ansible: 192.168.122.113
web1: 192.168.122.121
web2: 192.168.122.128
web3: 192.168.122.55
一、环境部署:
1.在4台机器上关闭防火墙和selinux:
systemctl stop firewalld
systemctl disable firewalld
setselinux 0
2.在ansible 机器上安装ansible:
[root@ansible ~]yum -y install ansible
3.在4台服务器上做hosts解析:
[root@ansible ~]#vim /etc/hosts
192.168.122.113 ansible
192.168.122.121 web1
192.168.122.128 web2
192.168.122.55 web3
[root@web1 ~]#vim /etc/hosts
192.168.122.113 ansible
192.168.122.121 web1
192.168.122.128 web2
192.168.122.55 web3
[root@web2 ~]#vim /etc/hosts
192.168.122.113 ansible
192.168.122.121 web1
192.168.122.128 web2
192.168.122.55 web3
[root@web3 ~]#vim /etc/hosts
192.168.122.113 ansible
192.168.122.121 web1
192.168.122.128 web2
192.168.122.55 web3
4.在ansible上推送公钥:
[root@ansible ~]#ssh-keygen [一路回车就OK]
[root@ansible ~]#scp -r .ssh/id_rsa web1
[root@ansible ~]#scp -r .ssh/id_rsa web2
[root@ansible ~]#scp -r .ssh/id_rsa web3
5.设置ansible解析:
[root@ansible ~]#vim /etc/ansible/hosts
[web]
web1
web2
web3
6.ansible环境测试:
做好以上4步,最好做个测试:
[root@ansible ~]# ansible web -m ping
web3 | SUCCESS => {
"changed": false,
"ping": "pong"
}
web2 | SUCCESS => {
"changed": false,
"ping": "pong"
}
web1 | SUCCESS => {
"changed": false,
"ping": "pong"
}
二、
1.创建所需要的目录和文件:
[root@ansible ~]# yum -y install tree [看目录结构]
[root@ansible ~]# mkdir -p /ansible/roles/nginx/{files,handlers,tasks,templates,vars}
[root@ansible ~]# touch /ansible/roles/nginx/files/index.html
[root@ansible ~]# touch /ansible/roles/nginx/handlers/main.yaml
[root@ansible ~]# touch /ansible/roles/nginx/tasks/main.yaml
[root@ansible ~]# touch /ansible/roles/nginx/templates/nginx.conf.j2
[root@ansible ~]# touch /ansible/roles/nginx/vars/main.yaml
[root@ansible ~]# tree /ansible/
/ansible/
└── roles
├── nginx
│ ├── files
│ │ └── index.html
│ ├── handlers
│ │ └── main.yaml
│ ├── tasks
│ │ └── main.yaml
│ ├── templates
│ │ └── nginx.conf.j2
│ └── vars
│ └── main.yaml
└── site.yaml
7 directories, 6 files
index.html nginx 主页面显示内容
handlers/main.yaml
tasks/main.yaml
2.在ansible服务器上安装nginx并修改nginx的配置文件:
2.1安装nginx:
[root@ansible ~]# yum -y install epel-release
[root@ansible ~]# yum -y install nginx
[root@ansible ~]# systemctl start nginx
[root@ansible ~]# systemctl enable nginx
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
[root@ansible ~]# systemctl start nginx
2.2修改nginx主页内容:
[root@ansible ~]# echo "use ansible install nginx" > /usr/share/nginx/html/index.html
2.3修改nginx配置文件:
找到匹配的项,只用修改这2处就行
[root@ansible ~]# vim /etc/nginx/nginx.conf
worker_processes {{ansible_processor_cores }};
events {
worker_connections {{ worker_connections }};
}
3.编辑各个文件内容:
[root@ansible ~]# vim /ansible/roles/site.yaml
---
- hosts: web
roles:
- nginx
[root@ansible ~]# vim /ansible/roles/nginx/tasks/main.yaml
---
- name: install nginx packages
yum: name={{ item }} state=latest
with_items:
- epel-release
- nginx
- name: copy nginx.conf template
template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf
notify: restart nginx
- name: copy index.html
copy: src=index.html dest=/usr/share/nginx/html/index.html
- name: make sure nginx service running
service: name=nginx state=started
[root@ansible ~]# vim /ansible/roles/nginx/handlers/main.yaml
---
- name: restart nginx
service: name=nginx state=restarted
[root@ansible ~]# vim /ansible/roles/nginx/vars/main.yaml
worker_connections: 10240
评论暂时关闭