Troubleshooting
Ansible can be configured to log its output to log files through the log_path parameter in the default section of the ansible.cfg configuration file.
Debug Module
The debug module provides insight into what is happening in the play.
Example:
- name: Display free memory
debug:
msg: "Free memory for this system is {{ ansible_facts['memfree_mb'] }}"
Managing Errors
It is a good practice to run the --syntax-check option, which checks the YAML syntax for the playbook.
Use the --step option to step through a playbook one task at a time.
Use the --start-at-task option allows you to start execution of a playbook from a specific task.
Debugging
You can increase the verbosity of the output from ansible-playbook by adding one or more -v options.
| Verbosity | Description |
|---|---|
| -v | The output data is displayed. |
| -vv | The output and input data are displayed. |
| -vvv | Includes information about connections to managed hosts. |
| -vvvv | Includes additional information such scripts that are executed on each remote host. |
Recommended Practices for Playbooks
- Use a concise description of the play's or task's purpose to name plays and tasks.
- Include comments to add additional inline documentation about tasks.
- Make effective use of vertical white space.
- Consistent horizontal indentation is critical using spaces, not tabs.
- Try to keep the playbook as simple as possible.
Troubleshoot Managed Hosts
Use the ansible-playbook --check command to run smoke tests on a playbook, changes that would have been made to the managed hosts are displayed but not performed.
You can control whether individual tasks run in check mode with the check_mode setting. If a task has check_mode: yes set, it always runs in check mode, whether or not you passed the --check option to ansible-playbook. If a task has check_mode: no set, it always runs normally, even if you pass --check to ansible-playbook.
If you have older playbooks that use always_run: yes to force tasks to run normally even in check mode, you will have to replace that code with check_mode: no in Ansible 2.6 and later.
The ansible-playbook command also provides a --diff option. This option reports the changes made to the template files on managed hosts. If used with the --check option, those changes are displayed in the command's output but not actually made.
Example:
Testing with Modules
Use uri, script, stat and assert for additional information about the status of a managed host.
**Troubleshooting Connections
Many common problems when using Ansible to manage hosts are associated with connections to the host and with configuration problems around the remote user and privilege escalation.
Make sure that:
remote_userset correctly in your configuration file or play- The
becomeis set properly, and the correctbecome_user(rootby default) - The
sudopassword is correct and thatsudoon the managed host is configured correctly.
Using Ad Hoc Commands
You have used the ping module to test whether you can connect to managed hosts.
You can use various commands to check info:
Examples: