Ansible Playbook - 安装/配置Apache错误

时间:2016-12-06 00:28:52

标签: apache ansible ansible-playbook

我们必须安装Apache,复制配置文件,然后启动并配置它以运行。

这是迄今为止写的剧本:

---
- hosts: example

tasks:
- name:Install Apache
  command: yum install --quiet -y httpd httpd-devel
- name:Copy configuration files
  command:>
  cp httpd.conf /etc/httpd/conf/httpd.conf
- command:>
  cp httpd-vshosts.conf /etc/httpd/conf/httpd-vshosts.conf
- name:Start Apache and configure it to run
  command: service httpd start
- command: chkconfig httpd on

但是,当我运行命令ansible-playbook playbook.yml时,我收到了这个:

error: ERROR! Syntax Error while loading YAML.  
The error appears to have been in '/etc/ansible/playbook.yml': line 3, column 1, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:

- hosts: example
tasks:
^ here

我曾尝试搞乱空白并重新安排事情,但我仍然收到这个错误。我确信这里有一些我想念的小东西,但它让我无所事事!任何帮助,将不胜感激!非常感谢。

1 个答案:

答案 0 :(得分:2)

关于您的错误消息,您需要注意缩进。这就是它应该是这样的:

---
- hosts: example

  tasks:
    - name: Install Apache
      command: yum install --quiet -y httpd httpd-devel
    - name: Copy configuration files
      command: cp httpd.conf /etc/httpd/conf/httpd.conf
    - command: cp httpd-vshosts.conf /etc/httpd/conf/httpd-vshosts.conf
    - name: Start Apache and configure it to run
      command: service httpd start
    - command: chkconfig httpd on

但这只是不使用 Ansible的一个例子。

我假设您刚刚开始使用Ansible并希望验证内容,但您应该使用yum或{{3}等本机模块,而不是使用command模块运行所有内容。 }。请查看链接文档页面中的示例。

另请注意,在您的示例中,某些任务的名称有些没有。例如,这是两个不同的任务(第一个具有名称,第二个没有):

- name: Copy configuration files
  command: cp httpd.conf /etc/httpd/conf/httpd.conf
- command: cp httpd-vshosts.conf /etc/httpd/conf/httpd-vshosts.conf

更合适的命名应该是:

- name: Copy one configuration file
  command: cp httpd.conf /etc/httpd/conf/httpd.conf
- name: Copy another configuration file
  command: cp httpd-vshosts.conf /etc/httpd/conf/httpd-vshosts.conf

另一个问题:此命令将失败,因为目标计算机上的当前目录中不应该有httpd-vshosts.conf

- command: cp httpd-vshosts.conf /etc/httpd/conf/httpd-vshosts.conf

您必须提供完整路径。