用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

 

相关内容

    暂无相关文章