Interview Infrastructure as Code (Terraform, Ansible)

What is the difference between state: present and state: latest, and the risk of latest?

Infrastructure as Code (Terraform, Ansible) · Advanced level

Answer

state: present ensures a package or object exists, usually without upgrading if it is already installed. state: latest upgrades to the newest available version. latest is risky in production because repository changes can create unplanned upgrades and inconsistent versions across batches.

Technical explanation

latest couples deployment to repository state at execution time.

present is more stable, especially when package versions are pinned.

Use explicit versions or staged repositories for controlled upgrades.

Prefer idempotent modules over shell so repeated runs are safe and change reporting is meaningful.

Separate reusable role logic from inventory-specific variables so the same automation works across environments.

Run lint, syntax checks, check mode where useful, and staged rollouts before production-wide changes.

Hands-on example

1. Add Ansible safety checks for: What is the difference between state: present and state: latest, and the risk of latest?

2. CI commands:

ansible-playbook --syntax-check site.yml

ansible-lint .

yamllint .

ansible-playbook -i inventory/stage site.yml --check --diff

3. Avoid state: latest in production unless the rollout is explicitly an upgrade window. Prefer pinned versions or approved repositories:

- name: Install approved app version

ansible.builtin.package:

name: myapp-1.8.4

state: present

4. For mixed fleets, drive differences through group_vars, host_vars, and facts rather than copied playbooks.

5. Gate production runs behind review and record playbook version, inventory, operator, and output artifact.

Preparing for an interview?

Check how well your resume matches the role with our free resume checker— match score, ATS check, and the skills you're missing.

More Infrastructure as Code (Terraform, Ansible) interview questions

← All Infrastructure as Code (Terraform, Ansible) questions