Playbook for Checking and Installing Python on Nodes:
---
- name: Check and Install Python
hosts: nodes
become: true
tasks:
- name: Check if Python is installed
command: python --version
register: python_check
ignore_errors: yes
- name: Install Python
package:
name: python
state: present
when: python_check.rc != 0
```
In this playbook:
- The `hosts` section specifies the target hosts where the playbook will be executed (`nodes` in this example).
- The `become: true` statement ensures that the tasks are executed with escalated privileges (e.g., using sudo).
- The first task, "Check if Python is installed," uses the `command` module to run the `python --version` command on the remote node. The output and return code of the command are registered in the `python_check` variable. The `ignore_errors: yes` option is set to handle the scenario when Python is not installed, which would result in a non-zero return code.
- The second task, "Install Python," uses the `package` module to install the `python` package if the `python_check` variable's return code (`rc`) is not equal to `0`, indicating that Python is not installed on the node.
By using the `when` statement in the "Install Python" task, we conditionally install Python only if it is not already present on the node.
You can run this playbook using the `ansible-playbook` command and specifying the playbook file. Ansible will connect to the target hosts, check for the presence of Python, and install it if necessary.
Note: Make sure the remote hosts have the necessary package management tools configured and accessible to install Python using the package module. The package name (`python`) might vary depending on the target system's package manager (e.g., `python3` for some systems).