FPM is an open source tool that can package applications and dependencies into native packages that can be installed and managed by the system's native package manager. It wraps directories, gems, Python modules, and Node packages into deb, rpm, or other package formats. This allows applications and their dependencies to be deployed and managed using the system's native packaging tools rather than requiring alternative installation methods. FPM handles common tasks like packaging runtime dependencies or application code so that the packaged application can be deployed and managed through the system's native package manager.
4. When operating a production environment, one of your
best friends is your configuration management
software.
Puppet is a well known open source configuration
management tool.
5. What Puppet typically handles for you:
Network, Email and system tools
System user accounts
Monitoring agent
Web server
Database server
Ruby runtime
All your configuration files
6. All you have to do now is deploy your app and maybe
some Gems.
Puppet knows how to install (and uninstall) native
packages.
Wanna build one for your app?
7. Native packaging is great
Native packaging is hard
Distribution policies are here for good reasons...
...but you don't care about policies if you are not a
maintainer!
8. FPM to the rescue
"Effing Package Management"
https://github.com/jordansissel/fpm
by @jordansissel
9. FPM puts a native package blanket on top of:
directories
gems
Python modules
Node packages
10. It'll make it deployable by your system packages
manager but won't fool a maintainer.