Ansible报错:Failed to parse /etc/ansible/hosts with yaml plugin
早上接到同事反馈说Grafana某个监控图表点击后反应很慢,其他的图表都正常,只有这一张图表很慢。经过和大数据部门同事的沟通,发现应该是从大数据系统推送出来的数据有点问题,需要联合Grafana机器进行调试,询问我Grafana部署在哪台机器上。
由于公司不同区域都有一套Prometheus+Grafana,我也并不记得具体在那台机器上,所以我决定用Ansible批量查询Grafana进程。
但在执行时出现以下错误:
[root@vm09 ~]# ansible -m shell -a "ps -ef|grep 'grafana'" all [WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details [WARNING]: * Failed to parse /etc/ansible/hosts with yaml plugin: We were unable to read either as JSON nor YAML, these are the errors we got from each: JSON: No JSON object could be decoded Syntax Error while loading YAML. did not find expected <document start> The error appears to be in '/etc/ansible/hosts': line 2, column 1, but may be elsewhere in the file depending on the exact syntax problem. The offending line appears to be: [app] app01 ^ here [WARNING]: * Failed to parse /etc/ansible/hosts with constructed plugin: We were unable to read either as JSON nor YAML, these are the errors we got from each: JSON: No JSON object could be decoded Syntax Error while loading YAML. did not find expected <document start> The error appears to be in '/etc/ansible/hosts': line 2, column 1, but may be elsewhere in the file depending on the exact syntax problem. The offending line appears to be: [app] app01 ^ here [WARNING]: * Failed to parse /etc/ansible/hosts with ini plugin: host range must be begin:end or begin:end:step [WARNING]: Unable to parse /etc/ansible/hosts as an inventory source [WARNING]: No inventory was parsed, only implicit localhost is available [WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'
通过以下命令查询也是0个机器。
ansible all --list-hosts
但是ansible -m shell -a "ps -ef|grep 'grafana'" 某组名
是可以执行的,这就让我很奇怪。
经过一个小时左右的排查,发现有人将/etc/ansible/hosts修改错误。
原因
应该是分号切割,不知道是谁修改错了 导致all无法使用。
将 'ydy-gz[01-35]' 改为 'ydy-gz[01:35]' 即可恢复正常。
一个人花在影响自己未来命运的工作选择上的精力,竟比花在购买穿了一年就会扔掉的衣服上的心思要少得多,这是一件多么奇怪的事情,尤其是当他未来的幸福和富足要全部依赖于这份工作时。