Ansible:从字符串构建一个 Mac 地址

Ansible: build a Mac Adresse from a string

这里是 Ansible 菜鸟。

我有一个字符串,我需要构建一个特定的 MAC format

我有一个有效的方法,但也许还有更简单的方法。
我将字符串写入 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\])

有没有一种方法可以让我在剧本中做到这一点,而不是使用 tempfilepython 脚本?

您可以在 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