Ansible 从输出中删除 \ 和括号

Ansible remove \ and brackets from output

我正在尝试使用 Ansible 打印出 kubernetes 版本和客户端版本,但是输出带有斜线,我如何删除括号以获得更清晰的输出?

- name: Kubernetes version
  run_once: true
  changed_when: False
  shell: |
    kubectl version
  delegate_to: localhost
  register: kubernetes_version

输出:

 name: Output
  run_once: true
  delegate_to: localhost
  debug:
    msg: "{{ kubernetes_version.stdout_lines }}"

输出:

ok: [localhost] => {

    "msg": [

        "Client Version: version.Info{Major:\"1\", Minor:\"18\", GitVersion:\"v1.18.4\", GitCommit:\"e0fccafd69541e3750d460ba0f9743\", GitTreeState:\"clean\", BuildDate:\"2020-04-16T11:44:03Z\", GoVersion:\"

go1.13.9\", Compiler:\"gc\", Platform:\"linux/amd64\"}",

        "Server Version: version.Info{Major:\"1\", Minor:\"18\", GitVersion:\"v1.18.4\", GitCommit:\"e0fccafd69541e3750d460ba0f9743\", GitTreeState:\"clean\", BuildDate:\"2020-04-16T11:35:47Z\", GoVersion:\"

go1.13.9\", Compiler:\"gc\", Platform:\"linux/amd64\"}"

    ]

}

我正在替换原来的答案,因为我忘记了 kubectl version 可以为我们产生 JSON 输出,这使得这个 容易多了。

通过获取 kubectl version -o json 的输出并将其传递 通过 from_json 过滤器,我们可以创建一个 Ansible 字典 结果的变量。

然后我们可以使用 debug 任务从这个变量中打印出键, 我想你会得到更接近你想要的东西。

本剧本:

- hosts: localhost
  gather_facts: false
  tasks:
    - name: run kubectl version
      command: kubectl version -o json
      register: kv_raw

    - set_fact:
        kv: "{{ kv_raw.stdout | from_json }}"

    - debug:
        msg:
          - "{{ kv.clientVersion }}"
          - "{{ kv.serverVersion }}"

将产生这样的输出:

PLAY [localhost] ********************************************************************************************

TASK [run kubectl version] **********************************************************************************
changed: [localhost]

TASK [set_fact] *********************************************************************************************
ok: [localhost]

TASK [debug] ************************************************************************************************
ok: [localhost] => {
    "msg": [
        {
            "buildDate": "2020-11-14T01:08:04Z",
            "compiler": "gc",
            "gitCommit": "6082e941e6d62f3a0c6ca8ba52927100948b1d0d",
            "gitTreeState": "clean",
            "gitVersion": "v1.18.2-0-g52c56ce",
            "goVersion": "go1.13.15",
            "major": "1",
            "minor": "18",
            "platform": "linux/amd64"
        },
        {
            "buildDate": "2020-10-25T05:12:54Z",
            "compiler": "gc",
            "gitCommit": "45b9524",
            "gitTreeState": "clean",
            "gitVersion": "v1.18.3+45b9524",
            "goVersion": "go1.13.4",
            "major": "1",
            "minor": "18+",
            "platform": "linux/amd64"
        }
    ]
}

PLAY RECAP **************************************************************************************************
localhost                  : ok=3    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0