Ansible:从字符串构建一个 Mac 地址
Ansible: build a Mac Adresse from a string
这里是 Ansible 菜鸟。
我有一个字符串,我需要构建一个特定的 MAC format
。
我得到的字符串:1a2b3c4e5f6g
我需要的字符串:1a:2b:3c:4e:5f:6g
我有一个有效的方法,但也许还有更简单的方法。
我将字符串写入 tempfile
并启动 python
脚本并将输出保存在变量中。
python 我的脚本中构建格式的代码。
mac="%s:%s:%s:%s:%s:%s" %(mac\[0:2\],mac\[2:4\],mac\[4:6\],mac\[6:8\],mac\[8:10\],mac\[10:12\])
有没有一种方法可以让我在剧本中做到这一点,而不是使用 tempfile
和 python
脚本?
您可以在 Ansible 剧本中做几乎相同的事情。因为jinja模板中没有tuple
过滤器,所以使用字符串.format(...)
方法比%
样式格式化更容易:
---
- hosts: localhost
gather_facts: false
vars:
macaddr: "5281a421770f"
tasks:
- set_fact:
modified_macaddr: "{{ '{}{}:{}{}:{}{}:{}{}:{}{}:{}{}'.format(*macaddr) }}"
- debug:
var: modified_macaddr
这将输出:
TASK [debug] *************************************************************************
ok: [localhost] => {
"modified_macaddr": "52:81:a4:21:77:0f"
}
使用hwaddr过滤器。例如
vars:
macaddress: '1a2b3c4d5e6f'
tasks:
- debug:
msg: "{{ macaddress|hwaddr('unix') }}"
给予
msg: 1a:2b:3c:4d:5e:6f
这里是 Ansible 菜鸟。
我有一个字符串,我需要构建一个特定的 MAC format
。
我得到的字符串:
1a2b3c4e5f6g
我需要的字符串:
1a:2b:3c:4e:5f:6g
我有一个有效的方法,但也许还有更简单的方法。
我将字符串写入 tempfile
并启动 python
脚本并将输出保存在变量中。
python 我的脚本中构建格式的代码。
mac="%s:%s:%s:%s:%s:%s" %(mac\[0:2\],mac\[2:4\],mac\[4:6\],mac\[6:8\],mac\[8:10\],mac\[10:12\])
有没有一种方法可以让我在剧本中做到这一点,而不是使用 tempfile
和 python
脚本?
您可以在 Ansible 剧本中做几乎相同的事情。因为jinja模板中没有tuple
过滤器,所以使用字符串.format(...)
方法比%
样式格式化更容易:
---
- hosts: localhost
gather_facts: false
vars:
macaddr: "5281a421770f"
tasks:
- set_fact:
modified_macaddr: "{{ '{}{}:{}{}:{}{}:{}{}:{}{}:{}{}'.format(*macaddr) }}"
- debug:
var: modified_macaddr
这将输出:
TASK [debug] *************************************************************************
ok: [localhost] => {
"modified_macaddr": "52:81:a4:21:77:0f"
}
使用hwaddr过滤器。例如
vars:
macaddress: '1a2b3c4d5e6f'
tasks:
- debug:
msg: "{{ macaddress|hwaddr('unix') }}"
给予
msg: 1a:2b:3c:4d:5e:6f