Comprehensive toolkit for validating, linting, testing, and automating Ansible playbooks, roles, and collections. Use this skill when working with Ansible files (.yml, .yaml playbooks, roles, inventories), validating automation code, debugging playbook execution, performing dry-run testing with check mode, or working with custom modules and collections.
Overall
score
100%
Does it follow best practices?
Validation for skill structure
This guide provides replacement alternatives for deprecated or legacy Ansible modules. Use this reference when ansible-lint reports deprecated module warnings or when updating older playbooks to modern best practices.
Use the FQCN checker script to automatically detect non-FQCN module usage:
# Scan a playbook
bash scripts/check_fqcn.sh playbook.yml
# Scan a role
bash scripts/check_fqcn.sh roles/webserver/
# Scan entire directory
bash scripts/check_fqcn.sh .The script identifies modules using short names and provides specific FQCN migration recommendations.
| Deprecated Module | Replacement | Notes |
|---|---|---|
apt (short name) | ansible.builtin.apt | Use FQCN for clarity |
yum (short name) | ansible.builtin.yum or ansible.builtin.dnf | dnf preferred for RHEL 8+ |
pip (short name) | ansible.builtin.pip | Use FQCN |
easy_install | ansible.builtin.pip | easy_install is deprecated in Python |
homebrew | community.general.homebrew | Moved to community.general |
zypper | community.general.zypper | Moved to community.general |
apk | community.general.apk | Moved to community.general |
| Deprecated Module | Replacement | Notes |
|---|---|---|
copy (short name) | ansible.builtin.copy | Use FQCN |
file (short name) | ansible.builtin.file | Use FQCN |
template (short name) | ansible.builtin.template | Use FQCN |
lineinfile (short name) | ansible.builtin.lineinfile | Use FQCN |
blockinfile (short name) | ansible.builtin.blockinfile | Use FQCN |
synchronize | ansible.posix.synchronize | Moved to ansible.posix |
acl | ansible.posix.acl | Moved to ansible.posix |
| Deprecated Module | Replacement | Notes |
|---|---|---|
service (short name) | ansible.builtin.service or ansible.builtin.systemd | Use systemd for systemd-based systems |
systemd (short name) | ansible.builtin.systemd | Use FQCN |
sysvinit | ansible.builtin.service | service module handles sysvinit |
| Deprecated Module | Replacement | Notes |
|---|---|---|
user (short name) | ansible.builtin.user | Use FQCN |
group (short name) | ansible.builtin.group | Use FQCN |
authorized_key (short name) | ansible.posix.authorized_key | Moved to ansible.posix |
| Deprecated Module | Replacement | Notes |
|---|---|---|
get_url (short name) | ansible.builtin.get_url | Use FQCN |
uri (short name) | ansible.builtin.uri | Use FQCN |
iptables | ansible.builtin.iptables | Use FQCN |
ufw | community.general.ufw | Moved to community.general |
firewalld | ansible.posix.firewalld | Moved to ansible.posix |
| Deprecated Module | Replacement | Notes |
|---|---|---|
command (short name) | ansible.builtin.command | Use FQCN; prefer specific modules |
shell (short name) | ansible.builtin.shell | Use FQCN; prefer specific modules |
raw (short name) | ansible.builtin.raw | Use FQCN; use only when necessary |
script (short name) | ansible.builtin.script | Use FQCN |
| Deprecated Module | Replacement | Notes |
|---|---|---|
ec2 | amazon.aws.ec2_instance | Use amazon.aws collection |
ec2_ami | amazon.aws.ec2_ami | Use amazon.aws collection |
ec2_vpc | amazon.aws.ec2_vpc_net | Use amazon.aws collection |
azure_rm_* | azure.azcollection.* | Use azure.azcollection |
gcp_* | google.cloud.* | Use google.cloud collection |
docker_container | community.docker.docker_container | Use community.docker collection |
docker_image | community.docker.docker_image | Use community.docker collection |
| Deprecated Module | Replacement | Notes |
|---|---|---|
mysql_db | community.mysql.mysql_db | Use community.mysql collection |
mysql_user | community.mysql.mysql_user | Use community.mysql collection |
postgresql_db | community.postgresql.postgresql_db | Use community.postgresql collection |
postgresql_user | community.postgresql.postgresql_user | Use community.postgresql collection |
mongodb_* | community.mongodb.* | Use community.mongodb collection |
| Deprecated Module | Replacement | Notes |
|---|---|---|
nagios | community.general.nagios | Use community.general collection |
zabbix_* | community.zabbix.* | Use community.zabbix collection |
# Old style (deprecated)
- name: Install nginx
apt:
name: nginx
state: present
# New style (recommended)
- name: Install nginx
ansible.builtin.apt:
name: nginx
state: present# Old style (deprecated)
- name: Configure firewall
ufw:
rule: allow
port: '443'
# New style (recommended)
- name: Configure firewall
community.general.ufw:
rule: allow
port: '443'When migrating to FQCN modules, ensure the required collections are installed:
# Install common collections
ansible-galaxy collection install ansible.posix
ansible-galaxy collection install community.general
ansible-galaxy collection install community.docker
ansible-galaxy collection install community.mysql
ansible-galaxy collection install community.postgresql
ansible-galaxy collection install amazon.aws
ansible-galaxy collection install azure.azcollection
ansible-galaxy collection install google.cloudOr create a requirements.yml:
---
collections:
- name: ansible.posix
version: ">=1.5.0"
- name: community.general
version: ">=6.0.0"
- name: community.docker
version: ">=3.0.0"
- name: community.mysql
version: ">=3.0.0"
- name: community.postgresql
version: ">=2.0.0"Then install with:
ansible-galaxy collection install -r requirements.ymlUse ansible-lint to identify deprecated modules in your playbooks:
# Check for deprecated module usage
ansible-lint --profile production playbook.yml
# Show rule documentation for deprecated modules
ansible-lint -L | grep deprecated