Ansible Installation and Configuration on Ubuntu — Automate Your Server Management

작성자

카테고리:

← 피드로
DEV Community · Wade Thomas · 2026-07-10 개발(SW)
Cover image for Ansible Installation and Configuration on Ubuntu — Automate Your Server Management

Wade Thomas

Introduction

What is Ansible?

Ansible is an automation language that can describe any IT environment, whether homelab or large-scale infrastructure. It is easy to learn and reads like clear documentation.

If you manage multiple servers and find yourself doing the same configuration over and over — setting up SSH keys, disabling root users, configuring firewalls — Ansible can automate the entire process and dramatically increase your productivity.

It only requires Ansible on the Control Node and Python 3 on the Managed Node.

What is the Control Node?

The system that Ansible is installed on — it controls the remote machines.

What is the Managed Node?

The remote system or host that Ansible controls. Ansible is agentless, meaning you don’t need to install Ansible on managed nodes — just Python 3.

Installing Ansible on Ubuntu (Control Node)

sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository --yes --update ppa:ansible/ansible
sudo apt install ansible

Enter fullscreen mode Exit fullscreen mode

Note: Ensure Python 3 is installed on your remote server. Ubuntu 24.04 LTS ships with Python 3 by default.

Create the Inventory Folder and Hosts File

The hosts file maps the remote machines you want to control.

Folder structure:

Ansible/
├── inventory/
│ └── hosts
└── playbooks/
└── apt-update.yml

inventory/hosts

[servers]
vpsServer ansible_host=10.10.100.45
work-ToRule
10.10.45.62

Enter fullscreen mode Exit fullscreen mode

You can give hosts an alias by pairing a name with an IP address. In the example above, vpsServer is an alias for 10.10.100.45.

Your First Playbook — Update Ubuntu and Set Timezone

Create playbooks/apt-update.yml:

- hosts: '*'
  become: true
  serial: 1
  tasks:
    - name: Set system timezone to Trinidad and Tobago time
      community.general.timezone:
        name: America/Port_of_Spain

    - name: Update apt cache
      apt:
        update_cache: yes
        cache_valid_time: 3600

    - name: Upgrade all packages to the latest version
      apt:
        upgrade: dist

    - name: Check if reboot is required
      stat:
        path: /var/run/reboot-required
      register: reboot_required_file

    - name: Reboot the server
      reboot:
        msg: 'Reboot initiated by Ansible due to package upgrades'
        connect_timeout: 5
        reboot_timeout: 300
        pre_reboot_delay: 0
        post_reboot_delay: 30
      when: reboot_required_file.stat.exists

Enter fullscreen mode Exit fullscreen mode

Breaking Down the Playbook

Key Description hosts: '*' Target all hosts in inventory. Use an alias, DNS name, or IP to target a single host. become: true Grants Ansible sudo privileges. serial: 1 Processes servers one at a time instead of all at once. tasks A list of individual actions to run on the target hosts.

Each task has four parts:

  • name — a plain-text description of what the task does
  • Collection (community.general) — the Ansible content bundle the module belongs to
  • Module (timezone, apt, reboot) — the tool that executes the action
  • Parameters (name: America/Port_of_Spain) — the specific options passed to the module

📚 Browse all available modules and collections at docs.ansible.com

Running the Playbook

Step 1 — Test connectivity with a ping

ANSIBLE_HOST_KEY_CHECKING=FALSE ansible -i ./inventory/hosts vpsServer -m ping --user root --ask-pass

Enter fullscreen mode Exit fullscreen mode

Flag Description ANSIBLE_HOST_KEY_CHECKING=FALSE Skips SSH host key verification — useful for fresh servers -i ./inventory/hosts Points to your inventory file vpsServer The target host alias -m ping Runs the ping module to check connectivity and Python availability --ask-pass Prompts for SSH password

Once you get a green pong response, you’re ready to run the playbook.

Step 2 — Run the playbook

ansible-playbook ./playbooks/apt-update.yml --user root -e "ansible_port=22" --ask-pass --ask-become-pass -i ./inventory/hosts

Enter fullscreen mode Exit fullscreen mode

Flag Description ansible-playbook Runs a full automation script instead of a single ad-hoc task ./playbooks/apt-update.yml Path to your playbook file --user root SSH connection username -e "ansible_port=22" Injects extra variable to force port 22 --ask-pass Prompts for SSH login password --ask-become-pass Prompts for sudo password (redundant when logging in as root) -i ./inventory/hosts Points to your inventory file

Execution Flow

  1. Ansible reads ./inventory/hosts to find the target server’s IP
  2. Prompts for SSH password
  3. Prompts for sudo password
  4. Connects to port 22 as root
  5. Opens apt-update.yml and executes each task in order

Conclusion

A big shout-out to Aldo @aldo_cve for recommending Ansible in a previous post — it’s been a great addition to my server management workflow.

I hope you found this walkthrough useful. Stay tuned for more posts where I share playbooks I find useful in my day-to-day infrastructure work.

Looking for developer templates built on TanStack, Directus, and Tailwind CSS? Check out my store 👇
🛒 northernrangedigital.lemonsqueezy.com

원문에서 계속 ↗

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다