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
如果清单文件位于其他位置,请指定整个路径而不仅仅是文件名。
我有一台安装了 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
如果清单文件位于其他位置,请指定整个路径而不仅仅是文件名。