SteffenRitschel / packages-formula

A simple 'packages manager' formula, to install/remove packages without further ado.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

packages-formula

A simple 'packages manager' formula, to install/remove packages without further ado.

https://travis-ci.org/saltstack-formulas/packages-formula.svg?branch=master

What this formula can do

Many times, in the process of setting up a host/vm, you need to install/remove packages with no extra configuration or setup. This formula tries to help with that. It can get a list of packages from a pillar, and it will try to install them.

It provides a few states to install/remove system packages (currently Debian/Redhat families), Python packages (using pip states) and Ruby gems (using gem states).

It can also provide basic dependency management on certain other states/packages.

What this formula can't do

This formula is not intended to configure packages, nor setup services or daemons. When you need to do that for a package, you should probably be using another formula.

Available states

Runs all the other states in the formula.

Allows you to manage system's packages. You can specify:

  • held: either a list of packages or a dict of package: version, which will be installed and pinned to the installed version using SaltStack's hold/unhold capability.

    When upgrading a version, the package will be temporarily unheld, upgraded and then held again.

    In the RedHat family, helding packages depend on a yum plugin that you need to install. In order to do this, you can add it using this formula, adding to your pkgs.required.pkgs one of the following packages:

    • CentOS

    ``` packages:

    pkgs:
    required:
    pkgs:
    • yum-plugin-versionlock

    ```

    • Fedora > 26 with Python3:

    ``` packages:

    pkgs:
    required:
    pkgs:
    • python3-dnf-plugin-versionlock

    ```

    • Fedora > 26 with Python2:

    ``` packages:

    pkgs:
    required:
    pkgs:
    • python2-dnf-plugin-versionlock

    ```

  • wanted: a list of packages which will be installed. Packages in this list will be automatically unheld so, if you want to permanently unheld a package you were previously helding to a version, just move it from the held dict to this list.

  • unwanted system packages, which will be uninstalled.

  • required system packages on which any of the wanted packages depend for their correct installation.

  • required states on which any of the wanted packages depend for their correct installation.

You can specify:

  • wanted python packages, which will be installed using pip. Requires you specify the correct python-pip package for your distro, as a dependency (see the pillar.example)
  • unwanted python packages, which will be uninstalled using pip.
  • required system packages on which any of the wanted python packages depend for their correct installation. Usually, a python-pip package and/or some other compiler packages are required.
  • required states on which any of the wanted packages depend for their correct installation (ie, epel for RedHat families).

You can specify:

  • wanted ruby packages, which will be installed using gem. Requires you specify the correct ruby package for your distro, as a dependency (see the pillar.example)
  • unwanted ruby packages, which will be uninstalled using gem.
  • required system packages on which any of the wanted ruby packages depend for their correct installation. Usually, a ruby package and/or some other compiler packages are required.
  • required states on which any of the wanted packages depend for their correct installation (ie, epel for RedHat families).

'Archive file` handler for common 'download' and 'checksum' states; extraction state based on format value.

  • wanted archive package software, which will be installed by extraction.
  • unwanted archive package software, which are uninstalled by directory removal.
  • required archive packages on which any of the wanted items depend on. Optional.

Note

Supports tar formats that salt.states.archive.extracted understands (tar, rar, zip, etc). The packages.archives state can be extended.

You can specify:

  • wanted snapd packages, which will be installed using snap.
  • classic snapd packages, chich will be installed using snap with classic confinement.
  • unwanted snapd packages, which will be uninstalled using snap.
  • required system packages on which any of the wanted snapd packages depend for their correct installation.
  • required states on which any of the wanted packages depend for their correct installation (ie, epel for RedHat families).

Note

Centos has no native snapd package at this time.

You can specify a dictionary of remote system packages (deb/rpm) that you want to install, in the format:

name: url

Testing

Testing is done with Test Kitchen for machine setup and inspec for integration tests.

Tested on

  • Debian/9
  • Centos/7
  • Fedora/27
  • Ubuntu/18.04

About

A simple 'packages manager' formula, to install/remove packages without further ado.

License:Apache License 2.0


Languages

Language:SaltStack 70.7%Language:Ruby 25.4%Language:HTML 3.9%