根据下列要求,在/home/student/ansible/roles 中创建名为 apache的角色
按照下方所述,创建一个使用此角色的 playbook /home/student/ansible/newrole.yml:
该playbook 在webservers 主机组中的主机上运行
任务要求
httpd 软件包已安装,设为在系统启动时启用并启动
防火墙已启用并正在运行,并使用允许访问Web 服务器的规则
模板文件 index.html.j2 已存在,用于创建具有以下输出的文件/var/www/html/index.html: Welcome to HOSTNAME on IPADDRESS
其中,HOSTNAME 是受管节点的完全限定域名,IPADDRESS 则是受管节点的 IP 地址。
[student@workstation ansible]$ cd roles/
[student@workstation roles]$ ansible-galaxy init apache
[student@workstation roles]$ vim apache/tasks/main.yml
---
# tasks file for apache
- name: install apache
yum:
name: httpd
state: present
- service:
name: "{{ item }}"
state: started
enabled: yes
loop: ## 定义变量列表,注意缩进
- httpd
- firewalld
## 定义防火墙策略,可以通过帮助去找呀ansible-doc -l | grep firewalld
- name: firewalld service ## 按题要求,设置防火墙策略
firewalld:
service: http
permanent: yes
immediate: yes ## 用来重新加载防火墙的,如果不重新加载则不生效啊
state: enabled
- name: user templates ## 按题要求,使用模板模块拷贝文件
template:
src: index.html.j2
dest: /var/www/html/index.html
owner: apache
group: apache
mode: '0644'
[student@workstation roles]$ vim /home/student/ansible/roles/apache/templates/index.html.j2
Welcome to {{ ansible_facts.fqdn }} on {{ ansible_facts.default_ipv4.address }}
[student@workstation roles]$ vim /home/student/ansible/newrole.yml
---
- name: use http role
hosts: webservers
roles:
- apache
[student@workstation ansible]$ ansible-playbook /home/student/ansible/newrole.yml ## 记得回到ansible目录下执行playbook
验证一下
[student@workstation ansible]$ curl http://serverc
Welcome to serverc.lab.example.com on 172.25.250.12
[student@workstation ansible]$ curl http://serverd
Welcome to serverd.lab.example.com on 172.25.250.13