首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Linux工具解析Ansible输出

使用Linux工具解析Ansible输出
EN

Stack Overflow用户
提问于 2016-08-19 18:43:51
回答 2查看 4.4K关注 0票数 3

我有一个愚蠢的剧本,它只是运行一个命令,以获得在每个主机上的网络服务器组的vhost列表。由于所有vhost都位于/var/www中,因此很容易获得webs列表。

问题是Ansible返回信息的方式。例如:

代码语言:javascript
复制
ok: [host1] => {
    "var": {
        "out.stdout_lines": [
            "",
            "host1.com"
        ]
    }
}
ok: [host2] => {
    "var": {
        "out.stdout_lines": [
            "",
            "host2.com"
        ]
    }
}

你知道一种简单的方法可以直接得到vhost的名字吗?使用grep awk或类似的东西?

EN

回答 2

Stack Overflow用户

发布于 2016-08-19 18:54:05

肮脏的方式:在打印之前,在stdout_lines中的每一行都加上一些标记(例如ANSBLMRK_),这样你就有了一个列表,如果是"ANSBLMRK_host2.com",那么就是grepcut

好方法:设置ANSIBLE_STDOUT_CALLBACK=json并通过管道将其发送到jq

票数 8
EN

Stack Overflow用户

发布于 2016-08-20 00:28:05

也许只需要在你的剧本中写一个包含主机名称的文件,然后在以后使用它:

代码语言:javascript
复制
tasks:

- name: make output file
  file: name=./list_of_hosts state=touch

- name: show my hostname
  lineinfile: dest=./list_of_hosts line="{{ item }}"
  with_items:
    "{{ out.stdout_lines[1] }}"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39037046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档