Published: 12.04.2021 | Edited: 09.05.2021 | Tags: 100daystooffload

Using pacman with Ansible

To use ansible on the Arch based system, either for a local provision or on the VPS such as Linode or Contabo to name the ones that I have tested, these steps are required:

  • Install Community General Collection:
ansible-galaxy collection install community.general

Optionally check the community.general.pacman plugin is available:

ansible-doc -l | grep pacman

To clean above output, consider disabling deprecation warnings in your ansible.cfg:

deprecation_warnings = False
  • Create an inventory file with an extension you prefer, i.e. inventory.cfg:
[arch]
example.com			ansible_user=sudouser

[arch:vars]
ansible_python_interpreter=/usr/bin/python3

Specifying the Python interpreter in Arch based distributions reduces warnings.

  • Create a playbook, the convention is to name it main.yml:
---
- hosts: arch
  tasks:
  - name: Install a package
    community.general.pacman:
      name: neofetch
      state: present
  • Run, provide sudo password for the sudouser, installing neofetch:
ansible-playbook -i inventory.cfg main.yml --become --ask-become-pass

The playbook is equivalent of running the following on the system:

sudo pacman -S --needed neofetch

Note that since --needed argument is passed in, the packages would not be re-installed. I could not find this in documentation, but it is quite clear from the source comments.

Look at more examples in the official docs.

This is a 33th post of #100daystooffload.