How Do You Get an Ansible Variable to Not Add Single Quotes or Brackets when the Variable Is Substituted?

Problem scenario
You are using an Ansible-supported method of a variable in a playbook. This variable will substitute a string or line number that the playbook is run on with the IP address of the host. You notice that this substitution includes an opening-and-closing single quote mark “‘” and a pair of opening-and-closing brackets “[]”. That is, single quotes and brackets are being introduced into the string you want to build with the Ansible playbook.

How Do You Troubleshoot This Ansible Message “module_stderr…Shared connection to server closed. [Errno 13] Permission denied…MODULE FAILURE”?

Problem scenario
You try to run an Ansible playbook, but you get this problem:

“module_stderr…Shared connection to server closed. [Errno 13] Permission denied…MODULE FAILURE”

How do you fix it?

Solution
Is the Ansible playbook configuring the mode settings to not allow other users to execute the file? It could be that lower in the Ansible playbook, after the file is protected from other users executing it,

How Do You Write an Ansible Playbook to Retrieve Files from a Directory Relative to where the .YAML File Is?

Problem scenario
You want to refer to files in a subdirectory of the parent directory that houses your Ansible playbook. You have Git repositories with .yaml files and subdirectories. You want the Git repo to be transferred to a variety of different servers. The absolute path to the directory where the files are will vary. How do you have a variable or relative path reference in the playbook so as long as the directory structure is in place,

How Do You Troubleshoot the Ansible Playbook Error Associated with “[Errno 2] No such file or directory”?

Problem scenario
When running an Ansible playbook using the java_cert module you receive an message “[Errno 2] No such file or directory”. How do you fix this?
(If you were using a file linking step in the playbook and not the java_cert module, see this posting.)

Solution
Use the “executable” attribute of the java_certs module (https://docs.ansible.com/ansible/latest/modules/java_cert_module.html) to specify the full path of the keytool file.

How Do You Troubleshoot the Ansible Error “directory was skipped as it does not seem to be a valid directory or it cannot be accessed”?

Problem scenario
You are using Ansible’s find module.  You want it to find the destination of a symbolic link.  When you run the playbook you have a way of finding what the find module returns.  It is saying something about “directory was skipped as it does not seem to be a valid directory or it cannot be accessed.”  What should you do?

Solution
Use the stat module. 

How Do You Find the Data Type of a Variable in an Ansible Playbook?

Problem scenario
Through the register keyword you assign a variable.  You want to know what variable type it is (e.g., a string, a dictionary or a JSON).  You know the data type is not a Boolean.  What do you do?

Solution
If you have a variable (e.g., foobar) and you want to know what data type it is, do this:

debug:
  msg:
when:  foobar.stdout == “”

The playbook will tell you if foobar is a dictionary with an error. 

How Do You Troubleshoot an Ansible Error about a User Not Being Able to Authenticate when the Module is Supposed to Interact with a Database?

Problem scenario
You have an Ansible module that uses a database module.  When you run the playbook, you get an error about a user being unable to authenticate when this database module is run.  What could be wrong?

Solution
Is the user in the error message a user that is created via the playbook?  If it is, does that user get assigned a password? 

How Do You Get an Ansible Command to Issue a Long-Running Bash Command and Keep Processing?

Problem scenario
You have a playbook that runs a shell command.  But this command never completes.  If you cancel the playbook, you find the processes started from the playbook cancel from the cancellation of the playbook too.  You want the process to keep running while Ansible moves to the next command.  You want processes to run in a detached way that is independent of the playbook execution itself. 

How Do You Install Ansible on a Debian Linux Server Running in GCP?

Problem scenario
You are using Google Cloud Platform, and you have a Debian server.  You do not want to configure any PPAs for your system.*  How do you install and configure Ansible on a Debian Linux system?

Solution
Prerequisite

We strongly recommend having 2.5 GB of memory (either in RAM or with a combination of RAM and swap space).  

How Do You Troubleshoot the Ansible Error “Syntax Error while loading YAML expected <block end>, but found ‘-‘”?

Problem scenario
You are trying to run an Ansible playbook with the “become: yes” stanza.  You get this error after your ansible-playbook command:

“ERROR! Syntax Error while loading YAML.
  expected <block end>, but found ‘-‘

The error appears to have been in ‘/home/cooluser/good.yaml’: line 4, column 3, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be: