Ansible 执行 playbook 时只运行 gather_facts 任务,不执行角色任务的解决方案

38次阅读
没有评论

问题描述

在学习 Ansible 过程中遇到一个问题,当运行 playbook 时,只执行 gather_facts 任务,而没有执行其他角色任务。然而,当使用 ansible 命令运行单个模块或在本地运行 playbook 时,角色任务可以正常执行。用户在 Google 群组上发布了这个问题,但目前还没有得到答案。请问如何解决这个问题?

解决方案

请注意以下操作注意版本差异及修改前做好备份。

问题的原因可能与您在运行 playbook 时指定的命令行参数有关。您提到的两种运行方式是:
1. 使用以下命令行运行 playbook,并指定了特定的 SSH 密钥和主机清单文件:
shell
ansible-playbook -u root --private-key ~/.ssh/id_rsa centos7.yml -i xxx.xxx.xxx.xxx

2. 使用以下命令行运行 playbook,但没有指定特定的 SSH 密钥和主机清单文件:
shell
ansible-playbook -u root centos7.yml -i xxx.xxx.xxx.xxx

根据您的描述,第二种方式可以正常运行角色任务,而第一种方式只执行 gather_facts 任务。这可能是因为第一种方式指定了私钥和主机清单文件,可能导致 Ansible 在连接到主机时出现了某种问题。

建议您尝试以下步骤来解决问题:

  1. 确认 SSH 密钥路径和主机清单文件是否正确: 确保在第一种方式中指定的 SSH 密钥文件路径 ~/.ssh/id_rsa 和主机清单文件 -i xxx.xxx.xxx.xxx 是正确的。检查文件路径是否存在,并且确保密钥文件和主机清单文件的权限设置正确。

  2. 尝试不指定私钥和主机清单文件: 如果可能的话,您可以尝试使用第二种方式运行 playbook,即不指定私钥和主机清单文件。这样,看看是否可以正常执行角色任务。如果可以,那么问题可能与私钥和主机清单文件的指定有关。

  3. 检查主机连接配置: 检查您的主机连接配置,包括主机名、用户名、密码等。确保您在 playbook 中正确配置了这些信息,以便 Ansible 可以连接到目标主机。

  4. 查看 Ansible 输出日志: 运行 playbook 时,使用 -vvv 参数来增加详细的输出日志,以便查看是否有任何连接或执行任务时的错误信息。这些日志可能会提供有关问题的更多线索。

根据您的情况和测试结果,您可以根据上述建议来调整运行 playbook 的方式以及配置。如果问题仍然存在,可以将详细的错误信息和 playbook 配置文件的内容分享出来,以便更好地帮助您解决问题。

正文完