- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用 ansible-playbook 使用 ps、dstat 等命令快速监控一些主机。 ansible 命令本身完美地满足了我的需求,例如我会使用:
ansible -m shell -a "ps -eo pcpu,user,args | sort -r -k1 | head -n5"
它很好地打印了每个主机的所有 std 输出,如下所示:
localhost | success | rc=0 >>
0.0 root /sbin/init
0.0 root [kthreadd]
0.0 root [ksoftirqd/0]
0.0 root [migration/0]
otherhost | success | rc=0 >>
0.0 root /sbin/init
0.0 root [kthreadd]
0.0 root [ksoftirqd/0]
0.0 root [migration/0]
但是,这需要我为每个任务保留一堆 shell 脚本,这不是很“可靠”,所以我将其放入剧本中:
---
-
hosts: all
gather_facts: no
tasks:
- shell: ps -eo pcpu,user,args | sort -r -k1 | head -n5
并使用-vv
运行它,但输出基本显示字典内容并且换行符不会这样打印,因此这会导致像这样的不可读的困惑:
changed: [localhost] => {"changed": true, "cmd": "ps -eo pcpu,user,args | sort -r -k1
head -n5 ", "delta": "0:00:00.015337", "end": "2013-12-13 10:57:25.680708", "rc": 0,
"start": "2013-12-13 10:57:25.665371", "stderr": "", "stdout": "47.3 xxx Xvnc4 :24
-desktop xxx:24 (xxx) -auth /home/xxx/.Xauthority -geometry 1920x1200\n
....
我还尝试添加 register: var
和“调试”任务来显示 {{ var.stdout }}
但结果当然是相同的。
当通过剧本运行时,有没有办法从命令的 stdout/stderr 获得格式良好的输出?我可以想到多种可能的方法(使用 sed 格式化输出?将输出重定向到主机上的文件,然后取回该文件并将其回显到屏幕上?),但由于我对 shell/ansible 的了解有限,这需要我有一天尝试一下。
最佳答案
debug
模块确实需要一些爱,但目前你能做的最好的就是使用这个:
- hosts: all
gather_facts: no
tasks:
- shell: ps -eo pcpu,user,args | sort -r -k1 | head -n5
register: ps
- debug: var=ps.stdout_lines
它给出这样的输出:
ok: [host1] => {
"ps.stdout_lines": [
"%CPU USER COMMAND",
" 1.0 root /usr/bin/python",
" 0.6 root sshd: root@notty ",
" 0.2 root java",
" 0.0 root sort -r -k1"
]
}
ok: [host2] => {
"ps.stdout_lines": [
"%CPU USER COMMAND",
" 4.0 root /usr/bin/python",
" 0.6 root sshd: root@notty ",
" 0.1 root java",
" 0.0 root sort -r -k1"
]
}
关于shell - Ansible playbook shell 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20563639/
我有一个包含 3 个剧本的 ansible 剧本 YAML 文件。 第一个播放和第三个播放在本地主机上运行,但第二个播放在远程计算机上运行,如下例所示: - name: Play1 hos
我有一本蓝绿色的部署手册。它依赖于某些变量来确定应用底层角色的主机。以下是示例角色之一: - name: Remove current server from load balancer host
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 9年前关闭。 Improve this q
我正在尝试使用 USB 电缆和终端线路命令 blackberry-deploy -installApp... 我收到一个错误,指的是应用程序和调试 token 之间的作者不匹配 result::fai
我正在尝试使用 ansible-pull 方法在 playbook 的运行时运行带有额外变量的 playbook。 这是我需要如何使用 vars 运行我的剧本。 ansible-playbook de
我在我看不到的远程机器(客户端)上使用 ansible-pull 运行一个 ansible 脚本。 我想确保: ansible playbook 执行成功然后应该发送摘要 ansible playbo
在我的剧本中,我有一个条件包含语句来包含一个任务: tasks: # Install Java if not present - name: Execute Java shel
我一直在尝试按照 BlackBerry 文档在命令行上签署 WebWorks SDK 应用程序并上传到 App World。 这是一个chart showing the high level pict
我们使用 ansible-playbook 来创建/更新 cloudformation 堆栈。如果我们使用 create_changeset=yes 运行 playbook,那么 ansible 会创
有没有人提出使用 eclipse 插件和命令行脚本在运行 Playbook OS 2.0 的 Blackberry Playbook 上快速调试和运行 android 应用程序的策略? 最佳答案 当然
我正在使用以下剧本来检查从目标主机 192.168.153.31 到 8.8.8.8 的连接 --- - hosts: 192.168.153.31 gather_facts: no task
我是 ansible 的新手。我想用 ansible 简化我的网络任务。我想做的一件事是登录到所有网络 (Cisco) 交换机并显示带有包含某个字符串的描述的接口(interface)。我打算使用 c
如果系统安装了 Oracle Linux,我如何检查已安装的操作系统并继续下载文件。 这就是我要做的 - hosts: all become: true gather_facts: true
我不明白或看到我做错了什么,但似乎我无法让我的 ansible playbook 在 ubuntu 服务器上启动 rng-tools 服务。 environment: remote serve
我想一个接一个地在 4 个服务器上运行一些 ansible 任务,即以串行方式。但中间会有停顿。所以,我最后在剧本中添加了暂停,但我希望在最后一个服务器上跳过它。否则它会无缘无故地等待。请让我知道如何
我正在尝试运行 ansible-plabook,但它在设置时挂起。我的剧本做了很多工作,比如调用不同的角色和模块,它还收集事实。它以前工作正常,但现在我不确定出了什么问题,感谢任何帮助 主机操作系统为
这是我目前正在使用的 Ansible playbook 的一个示例: --- - hosts: all collections: - mynamespace.my_collection
我需要知道是否可以从目标机器调用/执行 ansible 剧本。我想我看到供应商这样做或至少类似的事情。他们下载了一个脚本,它确实运行了剧本。 如果可能的话,如何实现? 我的目标是在 aws 中将 an
我已在安全中心创建了一个 Playbook,并且可以通过转到安全警报并单击 Playbook 上的“运行”来手动触发该 Playbook。 现在,我希望每当出现新的安全警报时自动触发此 Playboo
已关闭。这个问题是 not reproducible or was caused by typos 。目前不接受答案。 这个问题是由拼写错误或无法再重现的问题引起的。虽然类似的问题可能是 on-top
我是一名优秀的程序员,十分优秀!