Ansible运维自动化实战——批量部署Nginx

Ansible运维自动化实战——批量部署Nginx

实战目标:通过role远程部署nginx并配置。

roles则是在ansible中,playbooks的目录组织结构。而模块化之后,成为roles的组织结构,易读,代码可重用,层次清晰。


1、配置本地域名解析
[root@ansible-server ~]# vim /etc/hosts
192.168.88.128 ansible-server
192.168.88.129 ansible-web1
192.168.88.145 ansible-web2
2、编写Ansible的主机清单
[root@ansible-server ~]# vim /etc/ansible/hosts
[slb]
ansible-server
[hosts]
ansible-web1
ansible-web2

3、了解/etc/ansible/roles的目录结构
[root@ansible-server roles]# tree
.
├── nginx
│   ├── files
│   │   └── index.html
│   ├── handlers
│   │   └── main.yml
│   ├── tasks
│   │   └── main.yml
│   ├── templates
│   │   └── nginx.conf.j2
│   └── vars
│       └── main.yml
└── site.yml

6 directories, 6 files
============================================================================================================
详解:
role_name/     ---角色名称=目录
    files/:存储一些可以用copy调用的静态文件。
    tasks/: 存储任务的目录,此目录中至少应该有一个名为main.yml的文件,用于定义各task;其它的文件需要由main.yml进行“包含”调用; 
    handlers/:此目录中至少应该有一个名为main.yml的文件,用于定义各handler;其它的文件需要由(与notify:名字相同,方便notify通知执行下一条命令)通过main.yml进行“包含”调用; 
    vars/:此目录中至少应该有一个名为main.yml的文件,用于定义各variable;其它的文件需要由main.yml进行“包含”调用; 
    templates/:存储由template模块调用的模板文本; (也可以调用变量)
    site.yml:定义哪个主机应用哪个角色
4、准备目录、文件
[root@ansible-server roles]# mkdir nginx/{files,handlers,tasks,templates,vars} -p
[root@ansible-server roles]# touch site.yml nginx/{handlers,tasks,vars}/main.yml
创建nginx的测试文件
[root@ansible-server roles]# echo 1234 > nginx/files/index.html
安装nginx并配置模板
[root@ansible-server roles]# yum install -y nginx && cp /etc/nginx/nginx.conf nginx/templates/nginx.conf.j2
5、编写任务
[root@ansible-server roles]# vim nginx/tasks/main.yml
---
  - name: intall epel
    yum: name=epel-release state=latest
  - name: install nginx
    yum: name=nginx state=latest
  - name: copy nginx.conf  templte
    template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf
  - name: copy index.html
    copy: src=/etc/ansible/roles/nginx/files/index.html dest=/usr/share/nginx/html/index.html
    notify: start nginx
6、编写handlers
[root@ansible-server roles]# vim nginx/handlers/main.yml #编写如下内容
---
- name: start nginx  #和notify的名字必须一样
  service: name=nginx state=started
7、准备配置文件
编写变量
[root@ansible-server roles]# vim nginx/vars/main.yml  #添加如下内容
worker_connections: 2
[root@ansible-server roles]# vim nginx/templates/nginx.conf.j2
worker_processes  {{ worker_connections }};
8、编写playbook
[root@ansible-server roles]# vim site.yml
---
- hosts: webservers1
  roles:
   - nginx
9、检测语法、执行
[root@ansible-server roles]# ansible-playbook site.yml --syntax-check
playbook: site.yml

[root@ansible-server roles]# ansible-playbook site.yml
10、查看管理节点ansible-web1的nginx服务
[root@ansible-server ~]# ansible ansible-web1 -m shell -a "netstat -lntp"
[root@ansible-server ~]# ansible ansible-web1 -m shell -a "systemctl status nginx"

在这里插入图片描述

在这里插入图片描述

浏览器访问:

在这里插入图片描述

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值