我是 ansible 的新手,我试图在 playbook.yml 文件中使用 vars.yml 文件中的变量。
变量名
---
- firstvar:
id: 1
name: One
- secondvar:
id: 2
name: two
Run Code Online (Sandbox Code Playgroud)
剧本.yml
---
- hosts: localhost
tasks:
- name: Import vars
include_vars:
file: ./vars.yml
name: vardata
- name: Use FirstVar
iso_vlan:
vlan_id: "{{ vardata.firstvar.id }}"
name: "{{ vardata.firstvar.name }}"
state: present
- name: Use Secondvar
iso_vlan:
vlan_id: "{{ vardata.secondvar.id }}"
name: "{{ vardata.secondvar.name }}"
state: present
Run Code Online (Sandbox Code Playgroud)
所以你可以在这里看到我将存储在 vardata 中的导入变量数据视为对象,并尝试在其他任务中调用它们中的每一个。我很确定这些在第一个任务中导入的变量只在那个任务中可用。我如何在其他任务中使用它?它将输出为每个任务未定义的变量。任何输入表示赞赏。
我们如何将日志记录级别作为参数传递?
例如:
level1 = 'DEBUG'
level1lower = level1.lower()
logger.setLevel(logging.level1)
logger.level1lower('Some messages passed for logging's)
Run Code Online (Sandbox Code Playgroud)
这是我的问题最接近的表示,因为我想编写一个将日志记录级别作为参数的函数。
在一个函数的单元测试中,该函数输出时间戳并说出主机名以及其他值。在单元测试中,如果我在预期输出中添加一些时间戳和主机名,它将失败,因为每次调用函数时函数的时间戳都会更改,并且每次在不同的计算机中运行时主机名都会更改。解决这个问题的方法是什么?我很感激您的意见。
函数的输出:
{'datetime': '09-10-2018 23:23:23', 'hostname': 'abc.xyz.com',...}
# and it can change every time we run it
Run Code Online (Sandbox Code Playgroud)
但是这个日期时间和主机名当然会根据时间和机器而变化
我想我将在单元测试中使用assertEqual或assertDictEqual的预期输出:
{'datetime': '09-10-2018 23:23:23', 'hostname': 'abc.xyz.com',...}
Run Code Online (Sandbox Code Playgroud)
其他断言检查是否更适合这种情况?
我有一个这样的数据框:
col1 col2 col3 col4 col5
0 False False True True False
1 False True True False False
Run Code Online (Sandbox Code Playgroud)
我想过滤它并获得一个包含至少一个True值的列的数据框。
col2 col3 col4
0 False True True
1 True True False
Run Code Online (Sandbox Code Playgroud)