ANSIBLE “错误!字段 'hosts' 是必需的但未设置”

ANSIBLE “ERROR! the field 'hosts' is required but was not set”

我有一台安装了 ansible 的 CENTOS 7 虚拟机,我正在尝试在 RED HAT 8 上安装带有 ansible 的 HTTPD 服务。

文件内容:

“主机”

[ubuntuserver]
192.168.1.51
[redhat]
192.168.56.102

"playbook.yaml"

[root @ centos7 ansible] # cat playbook.yaml
---
- hosts: redhat
- remote_user: root
   tasks:
      - name: install apache
        yum: name = httpd
[root @ centos7 ansible] #

我得到的错误:

error

首先,缩进同一级别的所有内容:

- hosts: redhat
  remote_user: root
   tasks:
      - name: install apache
        yum: name = httpd

请注意,只有一个 - 正在使用。

其次,您创建的 hosts 文件称为 inventory。 通过执行 ansible-playbook playbook.yaml,它将使用位于 /etc/ansible/hosts 的默认清单文件,该文件甚至可能在您的计算机上不存在。

所以你所要做的就是告诉 ansible 使用 -i option:

加载你的库存文件
ansible-playbook -i hosts plabook.yaml

您的剧本中的 YAML 不正确。像下面这样重组它,注意我删除的 - 。这也是 always define the state 参数的最佳实践。

---

- hosts: redhat
  remote_user: root
  tasks:
    - name: Install apache
      yum:
        name: httpd
        state: present

您还必须指定 Ansible 应从中获取主机的清单文件。如果该剧本与您的 hosts 文件位于同一文件夹中,您可以使用以下命令 运行 该剧本。

$ ansible-playbook playbook.yml -i hosts

如果清单文件位于其他位置,请指定整个路径而不仅仅是文件名。