我们必须安装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
我曾尝试搞乱空白并重新安排事情,但我仍然收到这个错误。我确信这里有一些我想念的小东西,但它让我无所事事!任何帮助,将不胜感激!非常感谢。
答案 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
您必须提供完整路径。