Modules are used to do something on your managed nodes (e.g. the target systems), such as creating, removing or editing a file, installing or uninstalling packages, starting or stopping services, and so on.
Refer to run tasks on the control node if you want to run a module on your control node (your Ansible server).
In this example, the file module is used to create the /tmp/foo.txt file on your managed nodes.
--- - hosts: all tasks: - name: create /tmp/foo.txt file: path: /tmp/foo.txt state: touch ...
ansible-doc --type module copy
Modules are part of collections. For example, the file module is part of the ansible.builtin collection and the firewalld module is part of the ansible.posix collection. You can either use just the basename of the module, such as "file" and "firewalld", or you could also include the collection, which would be "ansible.builtin.file" and "ansible.posix.firewalld" in this example.
--- - hosts: all tasks: - name: create /tmp/foo.txt ansible.builtin.file: path: /tmp/foo.txt state: touch - name: Bind interface eth0 to the default zone ansible.posix.firewalld: interface: eth0 state: enabled ...
Let's say the ansible-playbook command returns couldn't resolve module.
~]$ ansible-playbook testing.yml ERROR! couldn't resolve module/action 'firewalld'. This often indicates a misspelling, missing collection, or incorrect module path. The error appears to be in '/home/jeremy.canfield/testing.yml': line 21, column 5, but may be elsewhere in the file depending on the exact syntax problem. The offending line appears to be: - name: allow SSH in firewalld ^ here
This implies that a collection that contains the module (firewalld in this example) is not installed on your control node (your Ansible server). The ansible-galaxy install collection command can be used to install the collection. In this example, the ansible.posix collection is installed.
~]$ ansible-galaxy collection install ansible.posix Starting galaxy collection install process Process install dependency map Starting collection install process Installing 'ansible.posix:1.2.0' to '/home/john.doe/.ansible/collections/ansible_collections/ansible/posix' Downloading https://galaxy.ansible.com/download/ansible-posix-1.2.0.tar.gz to /home/john.doe/.ansible/tmp/ansible-local-15258q2alfwvq/tmpdesamf4k ansible.posix (1.2.0) was installed successfully
Library contains the directories that will be searched for modules. For example, if Ansible was installed on a Red Hat system using pip, library should contain the following directories. Refer to Ansible - Understanding Library for more on library.
/home/john.doe/.ansible/plugins/modules /usr/share/ansible/plugins/modules /usr/local/lib/python3.6/site-packages/ansible/modules
--- - hosts: all tasks: - name: create /tmp/foo.txt file: path: /tmp/foo.txt state: touch owner: john.doe group: admins mode: "0770" ...