This guide provides a full Ansible playbook to install FPM (Effing Package Management) on Linux systems.
Note: FPM is a Ruby gem and is typically installed via gem install, not distro packages.
- name: Install FPM (Effing Package Management)
hosts: fpm
become: true
vars:
fpm_version: "1.17.0" # Optional: pin specific version
tasks:
- name: Install Ruby and build tools (Debian/Ubuntu)
apt:
name:
- ruby
- ruby-dev
- build-essential
- rpm
- rpm-common
state: present
update_cache: true
when: ansible_os_family == "Debian"
- name: Install Ruby and build tools (RHEL family)
dnf:
name:
- ruby
- ruby-devel
- gcc
- gcc-c++
- make
- rpm-build
state: present
when: ansible_os_family == "RedHat"
- name: Install FPM gem
gem:
name: fpm
version: "{{ fpm_version | default(omit) }}"
state: present
user_install: false
- name: Verify FPM is available
command: "fpm --version"
register: fpm_version_check
changed_when: false
failed_when: false
- name: Show detected FPM version
debug:
var: fpm_version_check.stdout
If Ruby is already installed on your target hosts:
- name: Install FPM gem
hosts: fpm
become: true
tasks:
- name: Install FPM
gem:
name: fpm
state: present
user_install: false
rpm and rpm-build are installed.- name: Test FPM installation
hosts: fpm
become: true
tasks:
- name: Create test directory
tempfile:
state: directory
prefix: fpm-test-
register: test_dir
- name: Create test file
copy:
content: "Hello from FPM test"
dest: "{{ test_dir.path }}/test.txt"
- name: Build test package
command: >
fpm -s dir -t deb -n test-package -v 1.0.0
-C {{ test_dir.path }}
-p /tmp/test-package.deb
test.txt
register: fpm_test
changed_when: fpm_test.rc == 0
- name: Verify test package was created
stat:
path: /tmp/test-package.deb
register: deb_file
- name: Show test result
debug:
msg: "FPM test package created successfully"
when: deb_file.stat.exists
- name: Cleanup test files
file:
path: "{{ item }}"
state: absent
loop:
- "{{ test_dir.path }}"
- /tmp/test-package.deb
We develop tailored automation solutions for:
Let’s discuss your requirements: office@linux-server-admin.com | Contact
References: