请将上次实验的安装httpd的playbook改写为role,并调用它完成httpd安装。 要求,调用时不传任何参数,则默认端口8080,默认主页显示姓名、学号;也可以传递这三个参数,显示传递的参数。 传参与不传参的情况都要
时间: 2024-10-20 13:06:01 浏览: 14
Linux系统实现ansible自动化安装配置httpd的方法
在Ansible中,你可以将HTTPD安装的Playbook转换成Role以便更好地组织和复用代码。首先,你需要创建一个新的Role,包含必要的任务来安装并配置Apache(httpd)。在这个Role里,可以定义一些默认值以及可变变量供外部调用时使用。下面是一个简单的示例:
**roles/apache/tasks/main.yml**
```yaml
---
- name: Install and configure Apache HTTPD
become: true
vars:
httpd_default_port: 8080
default_homepage_content: "欢迎,我的名字是{{ ansible_user }},学号是{{ ansible_user_id }}"
tasks:
- name: Ensure Apache is installed
apt:
name: apache2
state: present
- name: Configure virtual host for default homepage
template:
src: index.html.j2
dest: /var/www/html/index.html
owner: root
group: root
mode: '0644'
when: not params.custom_homepage or params.custom_homepage == ''
- name: Custom homepage (if provided)
file:
path: /var/www/html/index.html
content: "{{ params.custom_homepage | default(default_homepage_content) }}"
when: params.custom_homepage
- name: Start Apache service
service:
name: apache2
state: started
```
在这个Role中,我们使用了`vars`块来存储默认值,`template`任务用于动态生成主页,而`file`任务则可以根据`params.custom_homepage`是否提供来处理定制内容。
接下来,为了调用这个Role,你可以在其他Playbook中像这样使用:
```yaml
- hosts: servers
roles:
- role: apache
# 如果要自定义端口和主页内容,传递参数
params:
httpd_port: 80
custom_homepage: "Hello, {{ some_variable }}!"
```
如果不需要传参,只需简单地引用Role即可:
```yaml
- hosts: servers
roles:
- role: apache
```
阅读全文