salt.modules.debbuild

Debian Package builder system

New in version 2015.8.0.

This system allows for all of the components to build debs safely in chrooted environments. This also provides a function to generate debian repositories

This module implements the pkgbuild interface

salt.modules.debbuild.build(runas, tgt, dest_dir, spec, sources, deps, env, template, saltenv='base', log_dir='/var/log/salt/pkgbuild')

Given the package destination directory, the tarball containing debian files (e.g. control) and package sources, use pbuilder to safely build the platform package

CLI Example:

Debian

salt '*' pkgbuild.make_src_pkg deb-8-x86_64 /var/www/html https://raw.githubusercontent.com/saltstack/libnacl/master/pkg/deb/python-libnacl.control https://pypi.python.org/packages/source/l/libnacl/libnacl-1.3.5.tar.gz

This example command should build the libnacl package for Debian using pbuilder and place it in /var/www/html/ on the minion

salt.modules.debbuild.make_repo(repodir, keyid=None, env=None, use_passphrase=False, gnupghome='/etc/salt/gpgkeys', runas='root')

Given the repodir (directory to create repository in), create a Debian repository and optionally sign it and packages present. This state is best used with onchanges linked to your package building states

CLI Example:

salt '*' pkgbuild.make_repo /var/www/html
repodir
The directory to find packages that will be in the repository
keyid

Changed in version 2016.3.0.

Optional Key ID to use in signing packages and repository. Utilizes Public and Private keys associated with keyid which have been loaded into the minion's Pillar Data. Leverages gpg-agent and gpg-preset-passphrase for caching keys, etc.

For example, contents from a pillar data file with named Public and Private keys as follows:

gpg_pkg_priv_key: |

-----BEGIN PGP PRIVATE KEY BLOCK----- Version: GnuPG v1

lQO+BFciIfQBCADAPCtzx7I5Rl32escCMZsPzaEKWe7bIX1em4KCKkBoX47IG54b w82PCE8Y1jF/9Uk2m3RKVWp3YcLlc7Ap3gj6VO4ysvVz28UbnhPxsIkOlf2cq8qc . . Ebe+8JCQTwqSXPRTzXmy/b5WXDeM79CkLWvuGpXFor76D+ECMRPv/rawukEcNptn R5OmgHqvydEnO4pWbn8JzQO9YX/Us0SMHBVzLC8eIi5ZIopzalvX =JvW8 -----END PGP PRIVATE KEY BLOCK-----

gpg_pkg_priv_keyname: gpg_pkg_key.pem

gpg_pkg_pub_key: |

-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1

mQENBFciIfQBCADAPCtzx7I5Rl32escCMZsPzaEKWe7bIX1em4KCKkBoX47IG54b w82PCE8Y1jF/9Uk2m3RKVWp3YcLlc7Ap3gj6VO4ysvVz28UbnhPxsIkOlf2cq8qc . . bYP7t5iwJmQzRMyFInYRt77wkJBPCpJc9FPNebL9vlZcN4zv0KQta+4alcWivvoP 4QIxE+/+trC6QRw2m2dHk6aAeq/J0Sc7ilZufwnNA71hf9SzRIwcFXMsLx4iLlki inNqW9c= =s1CX -----END PGP PUBLIC KEY BLOCK-----

gpg_pkg_pub_keyname: gpg_pkg_key.pub

env

Optional dictionary of environment variables to be utlilized in creating the repository.

New in version 2016.3.0.

use_passphrase

Use a passphrase with the signing key presented in 'keyid'. Passphrase is received from pillar data which has been passed on the command line. For example:

pillar='{ "gpg_passphrase" : "my_passphrase" }'

gnupghome
Location where GPG related files are stored, used with 'keyid'
runas

User to create the repository as, and optionally sign packages.

Note: Ensure User has correct rights to any files and directories which
are to be utilized.
salt.modules.debbuild.make_src_pkg(dest_dir, spec, sources, env=None, template=None, saltenv='base')

Create a platform specific source package from the given platform spec/control file and sources

CLI Example:

Debian

salt '*' pkgbuild.make_src_pkg /var/www/html/ https://raw.githubusercontent.com/saltstack/libnacl/master/pkg/deb/python-libnacl.control.tar.xz https://pypi.python.org/packages/source/l/libnacl/libnacl-1.3.5.tar.gz

This example command should build the libnacl SOURCE package and place it in /var/www/html/ on the minion