运行 使用本地主机的 ansible-playbook 出错
Error by running an ansible-playbook with localhost
我使用虚拟机和 Intershop 7.8 到 运行 ansible-playbook(使用 this tutorial) .安装Ansible后,复制仓库内容并配置(如“快速安装指南”所示),我尝试运行 ansible-playbook "setupci.yml" 使用命令 ansible-playbook setupci.yml
。第一次发生错误 provided hosts list is empty, only localhost available
时对此进行测试。通过创建一个 "hosts.yml" 文件来解决这个问题,我在其中声明了一个主机名并使用其他命令 运行 剧本,发生了两个新错误。
我在 ci-set-ansible-playbook
目录中尝试了以下命令:
$ --limit @[…]/ci-setup-ansible-playbook/setupci
我也试过:
$ ansible-playbook setupci.yml –connection=local
但两者都导致了错误:
fatal: [127.0.0.1]: FAILED! => {“changed”: false, “connection”: “close”, “content”: “\n \n 404 – Not Found
fatal: [127.0.0.1]: FAILED! => {“failed”: true, “msg”: “the field ‘args’ has an invalid value, which appears to include a variable that is undefined.
我猜 ansible 无法为您的主机加载主机变量,因为您在 hosts.yml 中定义的主机名与 /etc/ansible/host_vars/ 目录中的文件名不匹配。也许您没有重命名 sample.yml 文件,它需要与主机名匹配。
见
http://docs.ansible.com/ansible/latest/intro_inventory.html
[更新]
我在 docker centos 7 图像上试用了这个 ansible 剧本。我在正确获取它 运行 方面也遇到了一些问题。但是,我确实有联系。确保将 git 存储库的内容复制到 /etc/ansible
/etc/ansible
-rw-r--r--. 1 root root 9191 Sep 7 12:22 LICENSE.md
-rw-r--r--. 1 root root 5672 Sep 7 12:22 README.asciidoc
-rw-r--r--. 1 root root 555 Sep 7 12:22 Vagrantfile
-rw-r--r--. 1 root root 18066 Jun 1 21:49 ansible.cfg
drwxr-xr-x. 2 root root 42 Sep 7 12:26 group_vars
-rw-r--r--. 1 root root 1050 Sep 7 12:31 hosts
-rw-r--r--. 1 root root 97 Sep 7 12:22 ishsystem.yml
-rw-r--r--. 1 root root 9191 Sep 7 12:22 license-2.0.txt
drwxr-xr-x. 9 root root 4096 Sep 7 12:22 roles
-rw-r--r--. 1 root root 138 Sep 7 12:39 setupci.ym
编辑主机文件
##content of hosts
ciserver ansible_connection=local
检查ansible是否可以连接到主机
ansible all -m ping
ciserver | SUCCESS => {
"changed": false,
"ping": "pong"
}
将group_var中的sample.yml复制到ciserver.yml(与hosts同名)文件中并编辑。
/etc/ansible/group_vars
-rw-r--r--. 1 root root 1882 Sep 7 12:26 ciserver.yml
-rw-r--r--. 1 root root 1873 Sep 7 12:22 sample.yml
运行剧本
ansible-playbook setupci.yml
我的脚本在尝试 start/stop 防火墙时停止。该服务在 centos 上不存在,因此失败。看看你能不能走到这一步。
fatal: [ciserver]: FAILED! => {"changed": false, "failed": true, "msg": "Could not find the requested service firewalld.service: host"}
我使用虚拟机和 Intershop 7.8 到 运行 ansible-playbook(使用 this tutorial) .安装Ansible后,复制仓库内容并配置(如“快速安装指南”所示),我尝试运行 ansible-playbook "setupci.yml" 使用命令 ansible-playbook setupci.yml
。第一次发生错误 provided hosts list is empty, only localhost available
时对此进行测试。通过创建一个 "hosts.yml" 文件来解决这个问题,我在其中声明了一个主机名并使用其他命令 运行 剧本,发生了两个新错误。
我在 ci-set-ansible-playbook
目录中尝试了以下命令:
$ --limit @[…]/ci-setup-ansible-playbook/setupci
我也试过:
$ ansible-playbook setupci.yml –connection=local
但两者都导致了错误:
fatal: [127.0.0.1]: FAILED! => {“changed”: false, “connection”: “close”, “content”: “\n \n 404 – Not Found
fatal: [127.0.0.1]: FAILED! => {“failed”: true, “msg”: “the field ‘args’ has an invalid value, which appears to include a variable that is undefined.
我猜 ansible 无法为您的主机加载主机变量,因为您在 hosts.yml 中定义的主机名与 /etc/ansible/host_vars/ 目录中的文件名不匹配。也许您没有重命名 sample.yml 文件,它需要与主机名匹配。
见 http://docs.ansible.com/ansible/latest/intro_inventory.html
[更新]
我在 docker centos 7 图像上试用了这个 ansible 剧本。我在正确获取它 运行 方面也遇到了一些问题。但是,我确实有联系。确保将 git 存储库的内容复制到 /etc/ansible
/etc/ansible
-rw-r--r--. 1 root root 9191 Sep 7 12:22 LICENSE.md
-rw-r--r--. 1 root root 5672 Sep 7 12:22 README.asciidoc
-rw-r--r--. 1 root root 555 Sep 7 12:22 Vagrantfile
-rw-r--r--. 1 root root 18066 Jun 1 21:49 ansible.cfg
drwxr-xr-x. 2 root root 42 Sep 7 12:26 group_vars
-rw-r--r--. 1 root root 1050 Sep 7 12:31 hosts
-rw-r--r--. 1 root root 97 Sep 7 12:22 ishsystem.yml
-rw-r--r--. 1 root root 9191 Sep 7 12:22 license-2.0.txt
drwxr-xr-x. 9 root root 4096 Sep 7 12:22 roles
-rw-r--r--. 1 root root 138 Sep 7 12:39 setupci.ym
编辑主机文件
##content of hosts
ciserver ansible_connection=local
检查ansible是否可以连接到主机
ansible all -m ping
ciserver | SUCCESS => {
"changed": false,
"ping": "pong"
}
将group_var中的sample.yml复制到ciserver.yml(与hosts同名)文件中并编辑。
/etc/ansible/group_vars
-rw-r--r--. 1 root root 1882 Sep 7 12:26 ciserver.yml
-rw-r--r--. 1 root root 1873 Sep 7 12:22 sample.yml
运行剧本
ansible-playbook setupci.yml
我的脚本在尝试 start/stop 防火墙时停止。该服务在 centos 上不存在,因此失败。看看你能不能走到这一步。
fatal: [ciserver]: FAILED! => {"changed": false, "failed": true, "msg": "Could not find the requested service firewalld.service: host"}