您现在的位置是:亿华云 > IT科技类资讯

Ansible剧本的6个排查技巧

亿华云2025-10-04 03:21:59【IT科技类资讯】8人已围观

简介【.com快译】Ansible是一种功能很强大的工具,可以跨服务器、云、网络和容器等更多系统自动化管理各种平台。您常常只需重用现有的角色和集合,就可以自动执行想要完成的操作。还有许多模块可供选择,可以

【.com快译】Ansible是个排一种功能很强大的工具,可以跨服务器、查技云、个排网络和容器等更多系统自动化管理各种平台。查技

您常常只需重用现有的个排角色和集合,就可以自动执行想要完成的查技操作。还有许多模块可供选择,个排可以在剧本中使用它们。查技

但是个排当您开始开发和测试更复杂的剧本时,最终需要一些故障排查方法。查技比如检查Ansible任务流、个排确认变量的查技数据类型,甚至在某个特定点暂停以检查它们的个排值。

本文讨论的查技一些技巧仅适用于通过命令行执行Ansible。其他技巧从Ansible Tower运行时也适用。个排

1. 你的Ansible环境和参数

如果您需要分析为什么某内容在剧本中没有按预期运行,最好先检查您的Ansible环境。

您在运行Ansible二进制文件和Python的亿华云计算哪些版本和路径?

如果您添加了剧本所需的操作系统包或Python模块,Ansible解释器会“看到”它们吗?

可以通过多种不同的方式获取这些基本信息。从命令行运行ansible --version命令。

> ansible --version ansible 2.9.10   config file = /etc/ansible/ansible.cfg   configured module search path = [/home/admin/.ansible/plugins/modules, /usr/share/ansible/plugins/modules]  ansible python module location = /usr/lib/python3.6/site-packages/ansible   executable location = /usr/bin/ansible   python version = 3.6.8 (default, Mar 18 2021, 08:58:41) [GCC 8.4.1 20200928 (Red Hat 8.4.1-1)] 

可以通过运行其他Ansible命令来获取同样的信息,比如使用--version选项的ansible-playbook或ansible-config。

在Ansible Tower中,如果使用VERBOSITY 2(更详细)或更高版本执行作业模板,可显示该信息。

除了Ansible和Python二进制文件的版本和位置之外,仔细检查用于模块的路径总是好事,包括执行是否使用了不是默认的ansible.cfg文件(即不是/etc/ansible /ansible.cfg)。

要调查来自自定义ansible.cfg文件的选项,可以从命令行执行以下操作:

> ansible-config dump --only-changed DEFAULT_BECOME(/home/admin/ansible/ansible.cfg) = True DEFAULT_BECOME_USER(/home/admin/ansible/ansible.cfg) = root DEFAULT_FORKS(/home/admin/ansible/ansible.cfg) = 10 DEFAULT_HOST_LIST(/home/admin/ansible/ansible.cfg) = [/home/admin/ansible/inventory] DEFAULT_ROLES_PATH(/home/admin/ansible/ansible.cfg) = [/home/admin/ansible/roles] HOST_KEY_CHECKING(/home/admin/ansible/ansible.cfg) = False 

顾名思义,这将列出与默认参数不同的参数。

2. 以详细模式运行

下一步是亿华云在调试模式下运行剧本,以获取有关任务和变量中所发生情况的更多详细信息。

您可以从命令行添加-v(或-vv、-vvv、-vvvv、-vvvvv)。最高的详细级别有时可能含有太多信息,因此最好在多次执行中逐渐增加详细级别,直至获得所需信息。

排查连接问题时级别4有所帮助,级别5适用于排查WinRM问题。

在Tower中,您可以从作业模板定义中选择VERBOSITY级别。

注意:记得在解决问题后禁用调试模式,因为详细信息仅对排查故障有用。

此外,在调试模式下,除非您在任务中使用no_log选项,否则会显示某些变量(比如密码)的值,因此完成后删除输出。

3.使用调试来显示变量

如果您很清楚问题可能出在哪里,可以使用更精准的方法:仅显示您需要查看的变量。

 (...)   - name: Display the value of the counter      debug:       msg: "Counter={ {  counter }} / Data type={ {  counter | type_debug }}" (...) TASK [Display the value of the counter]  香港云服务器

很赞哦!(8)

相关文章