Ansible之使用角色一键部署httpd并检查部署结果

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cx55887/article/details/85132443

规划

角色:webser
任务: 111为ansible主节点,112,113为被控节点。在ansible主节点远程一键安装部署httpd,要求运行端口为99,根目录为/var/www,域名为其节点的IP地址,运行者身份是apache,部署测试页面(index.html),并检查是否部署成功要求有返回信息。

一、安装ansible并配置各节点互信

Ansible简单介绍及安装部署详解已讲解,有详细步骤这里不再演示。

二、创建并配置角色

  1. 创建工作目录
[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

  1. 准备模板文件,即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
  1. 创建web页面测试文件
[root@ser1 ~]# echo "<h1> test page</h1>">/project/roles/webser/files/index.html
  1. 编写用于做健康检查的脚本
[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
  1. 创建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 }}"
  1. 创建主机清单列表
[root@ser1 tasks]# cd /project/inventory/
[root@ser1 inventory]# vim webser
[webser]
10.220.5.112
10.220.5.113
  1. 创建入口文件
[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使用角色一键部署静态网站就大功告成了。

------做运维之前很矫情的小年轻-----

猜你喜欢

转载自blog.csdn.net/cx55887/article/details/85132443
今日推荐