功能讲解
关闭防火墙
使用systemd模块关闭防火墙,为下载http服务做准备
判断http服务是否安装
使用shell模块来判断http服务是否安装,并创建注册变量来接收命令输出结果,为了防止脚本因错误停止,添加ignore_errors选项来避免
更新http为最新版本
使用systemd模块来对已经下载的http版本进行更新
安装http服务
使用yum模块进行http服务的安装
开启http服务并配置为开机自启动
使用systemd模块对http服务进行配置
更改web服务文件
使用template模块来传输welcome.j2的模版,可以是内容因为变量的不同产生不一样的结果。
使用notify选项,在web页面配置产生变化时,可以使用handlers中的重启服务来实现页面的刷新
更改主配置文件
使用template来传输conf.j2文件产生特定的配置,使用notify选项,在主配置文件发生变化时,可以进行http服务的重载
内容展示
- name: httpd conf
gather_facts: no
become: yes
hosts: all
tasks:
- name: "关闭防火墙服务,并关闭开机自启功能"
systemd:
name: firewalld
state: stopped
enabled: no
- name: "判断http服务的安装情况,若安装则继续进行配置,未安装则进行安装"
shell: "systemctl status httpd"
register: httpd
ignore_errors: yes
- name: "更新httpd版本为最新"
yum:
name: httpd
state: latest
when: httpd.rc == 0
- name: "安装httpd服务"
yum:
name: httpd
state: latest
when: httpd.rc != 0
- name: "开启http服务,并将其设置为开机自启动"
systemd:
name: httpd
state: started
enabled: yes
- name: "将准备的http访问页面复制到httpd服务对应位置,使用户可以访问到"
template:
src: /root/welcome.j2
dest: /var/www/html/index.html
backup: no
owner: root
mode: 644
#配置notify,在模版发生变化时,可以执行handlers任务
notify: web reload
tags: web
- name: "将http的主配置文件发送到对应主机"
template:
src: /root/httpd.j2
dest: /etc/httpd/conf/httpd.conf
owner: root
mode: 644
notify: httpd reload
handlers:
- name: httpd reload
systemd:
name: httpd
state: reloaded
- name: web restarted
systemd:
name: httpd
state: restarted
功能演示
安装服务
事先删除节点1的http服务,运行脚本

可以看到,节点1进行了http的安装,节点2未进行
查看web文件

查看http服务的状态

配置更新时重启
修改模版welcome.j2文件

由于web模版更新,因此handler任务中的web restart任务得以执行,使得http服务重启
并且将web模板的内容进行更新

Ansible实现http服务安装与配置
2034

被折叠的 条评论
为什么被折叠?



