liunx通过两个文件pd与yml文件实现过滤器功能,pd文件自定义过滤器与变量姓名学号,在字符串变量后方拼接你的姓名学号;注意!如果不是字符串,则返回原始变量,在yml文件上输入学号与姓名调用自定义过滤器并通过ansible运行出结果
时间: 2024-11-03 20:13:40 浏览: 14
在Linux环境中,通过`pd`(Python脚本)和`yml`(YAML配置文件)配合Ansible来实现过滤器功能,是一种常见的自动化运维方式。以下是步骤的概述:
1. **Python脚本(pd文件)**:
- Python脚本`pd.py`通常是一个自定义过滤器模块,使用Python编写,如:
```python
def custom_filter(value):
if isinstance(value, str): # 检查是否为字符串
return value + " (Your Name: Your ID)" # 后面拼接姓名和学号
else:
return value # 如果不是字符串,直接返回原始值
# 将这个函数注册为Ansible的过滤器
from ansible import filters
filters.register('custom_filter', custom_filter)
```
这里假设你的姓名和学号已预先定义并在该脚本中。
2. **YAML配置文件(例如.yml)**:
- YAML文件中用于调用自定义过滤器的部分看起来像这样:
```yaml
- name: Apply custom filter
debug:
msg: "{{ item | custom_filter }}"
tasks:
- set_fact:
student_info: "John Doe" # 学员姓名
student_id: "123456" # 学员学号
- items:
- "{{ student_info }}"
- "{{ student_id }}"
```
这部分将学号和姓名作为变量,并在`debug`任务中应用`custom_filter`。
3. **运行Ansible**:
- 使用Ansible Playbook运行`yml`文件,会根据`pd.py`中的过滤器处理变量,输出包含姓名和学号的信息。
当你运行Ansible Playbook时,它会读取YAML文件中的配置,调用Python脚本中的过滤器并显示结果。如果遇到非字符串类型的值,过滤器会原样保留。
阅读全文