【问题标题】:Ansible - ERROR! the field 'hosts' is required but was not setAnsible - 错误! “主机”字段是必需的,但未设置
【发布时间】:2018-10-31 13:00:11
【问题描述】:

我在启动 playbook 时出错,但我没有找到原因....

错误! “主机”字段是必需的,但未设置

这是我的 main.yml :

---
- hosts: hosts
- vars: 
  - elasticsearch_java_home: /usr/lib/jmv/jre-1.7.0
  - elasticsearch_http_port: 8443

- tasks: 
  - include: tasks/main.yml

- handlers:
  - include: handlers/main.yml

还有我的 /etc/ansible/hosts :

[hosts]
10.23.108.182
10.23.108.183
10.23.108.184
10.23.108.185

当我测试 ping 时,一切都很好:

[root@poste08-08-00 elasticsearch]# ansible hosts -m ping
10.23.108.183 | SUCCESS => {
    "changed": false, 
    "ping": "pong" }
10.23.108.182 | SUCCESS => {
    "changed": false, 
    "ping": "pong" }
10.23.108.185 | SUCCESS => {
    "changed": false, 
    "ping": "pong" }
10.23.108.184 | SUCCESS => {
    "changed": false, 
    "ping": "pong" }

请帮帮我:) 问候,

【问题讨论】:

  • 如果您将hosts 组的名称更改为instances,会发生什么情况?

标签: ansible


【解决方案1】:

您的剧本中有语法错误。

---
- hosts: webservers
  vars:
    http_port: 80
    max_clients: 200

见:https://docs.ansible.com/ansible/playbooks_intro.html

【讨论】:

  • 换一种说法,所有的东西都需要在“hosts”下缩进,而不是在同一层级。
  • 谢谢,这是我的剧本中的一个错误。
  • 不客气。如果您可以将其标记为解决方案,那就太好了。
【解决方案2】:
---
- hosts: all

  remote_user: root

  tasks:

【讨论】:

  • 语法不正确。连字符和后面的任何声明之间应该有一个空格。例如- 主机:所有
【解决方案3】:

删除任务前的连字符,因为这是单人游戏的一部分:

---
hosts: hosts
- vars: 
  - elasticsearch_java_home: /usr/lib/jmv/jre-1.7.0
  - elasticsearch_http_port: 8443

- tasks: 
  - include: tasks/main.yml

- handlers:
  - include: handlers/main.yml

根据YAML spec

块序列用破折号(“-”)表示每个成员。块映射使用冒号来标记每个(键:值)对。

【讨论】:

    猜你喜欢
    • 2021-08-13
    • 2019-12-28
    • 2019-07-31
    • 2014-10-15
    • 2020-06-12
    • 1970-01-01
    • 1970-01-01
    • 2016-04-29
    • 2020-06-02
    相关资源
    最近更新 更多