规划
角色:webser
任务: 111为ansible主节点,112,113为被控节点。在ansible主节点远程一键安装部署httpd,要求运行端口为99,根目录为/var/www
,域名为其节点的IP地址,运行者身份是apache,部署测试页面(index.html),并检查是否部署成功要求有返回信息。
一、安装ansible并配置各节点互信
Ansible简单介绍及安装部署详解已讲解,有详细步骤这里不再演示。
二、创建并配置角色
- 创建工作目录
[root@ser1 ~]# mkdir /project/{roles,inventory} -pv
[root@ser1 ~]# mkdir /project/roles/webser/{tasks,files,templates,vars} -pv
[root@ser1 /]# tree /project/
/project/
├── inventory
└── roles
└── webser
├── files
├── tasks
├── templates
└── vars
7 directories, 0 files
- 准备模板文件,即apache的配置文件
[root@ser1 ~]# cp /etc/httpd/conf/httpd.conf /project/roles/templates/httpd.conf.j2
# 修改配置文件的内容
[root@ser1 ~]# vim /project/roles/webser/templates/httpd.conf.j2
Listen {{ port }}
User {{ user }}
Group {{ user }}
ServerName {{ ansible_eth0.ipv4.address }}
[root@ser1 ~]# grep "^[a-zA-Z]" /project/roles/webser/templates/httpd.conf.j2
ServerRoot "/etc/httpd"
Listen {{ port }}
Include conf.modules.d/*.conf
User {{ user }}
Group {{ user }}
ServerAdmin root@localhost
ServerName {{ ansible_eth0.ipv4.address }}
DocumentRoot "{{ root }}"
ErrorLog "logs/error_log"
LogLevel warn
AddDefaultCharset UTF-8
EnableSendfile on
IncludeOptional conf.d/*.conf
- 创建web页面测试文件
[root@ser1 ~]# echo "<h1> test page</h1>">/project/roles/webser/files/index.html
- 编写用于做健康检查的脚本
[root@ser1 ~]# cd /project/roles/webser/files/
[root@ser1 files]# vim check.sh
#!/bin/bash
URL=$1
PORT=$2
curl -I http://$1:$2/index.html |grep "200 OK" &>/dev/null
if [ $? -eq 0 ];then
echo "$1 status is ok"
else
echo "$1 status is error"
fi
- 创建job
[root@ser1 files]# cd /project/roles/webser/tasks/
[root@ser1 tasks]# vim main.yaml
---
- name: install https
yum: name=httpd state=present
- name: make configrantion file
template: src=httpd.conf.j2 dest=/etc/httpd/conf/httpd.conf
- name: start httpd
service: name=httpd state=restarted
- name: install test page
copy: src=index.html dest={{ root }}
- name: make health check
shell: sh roles/webser/files/check.sh {{ ansible_eth0.ipv4.address }} {{ port }}
delegate_to: localhost
register: health_status
- debug: msg="{{ health_status }}"
- 创建主机清单列表
[root@ser1 tasks]# cd /project/inventory/
[root@ser1 inventory]# vim webser
[webser]
10.220.5.112
10.220.5.113
- 创建入口文件
[root@ser1 inventory]# cd /project/
[root@ser1 project]# vim webser.yaml <<<该文件需要和roles目录同级
---
- host: all
remote_user: root
roles:
- webser
三、运行palybook
[root@ser1 files]# cd /project/
[root@ser1 project]# ansible-playbook -i ./inventory/webser ./webser.yaml -e port=99 -e user=apache -e root=/var/www
运行结果是成功的,并且到112,113节点查看也看到httpd安装部署成功,从浏览器访问后端节点也是能够访问到测试页面的,至此通过ansible使用角色一键部署静态网站就大功告成了。
------做运维之前很矫情的小年轻-----