The pkgbuild state is the front of Salt package building backend. It automatically builds DEB and RPM packages from specified sources
New in version 2015.8.0.
salt_2015.5.2:
pkgbuild.built:
- runas: thatch
- results:
- salt-2015.5.2-2.el7.centos.noarch.rpm
- salt-api-2015.5.2-2.el7.centos.noarch.rpm
- salt-cloud-2015.5.2-2.el7.centos.noarch.rpm
- salt-master-2015.5.2-2.el7.centos.noarch.rpm
- salt-minion-2015.5.2-2.el7.centos.noarch.rpm
- salt-ssh-2015.5.2-2.el7.centos.noarch.rpm
- salt-syndic-2015.5.2-2.el7.centos.noarch.rpm
- dest_dir: /tmp/pkg
- spec: salt://pkg/salt/spec/salt.spec
- template: jinja
- deps:
- salt://pkg/salt/sources/required_dependency.rpm
- tgt: epel-7-x86_64
- sources:
- salt://pkg/salt/sources/logrotate.salt
- salt://pkg/salt/sources/README.fedora
- salt://pkg/salt/sources/salt-2015.5.2.tar.gz
- salt://pkg/salt/sources/salt-2015.5.2-tests.patch
- salt://pkg/salt/sources/salt-api
- salt://pkg/salt/sources/salt-api.service
- salt://pkg/salt/sources/salt-master
- salt://pkg/salt/sources/salt-master.service
- salt://pkg/salt/sources/salt-minion
- salt://pkg/salt/sources/salt-minion.service
- salt://pkg/salt/sources/saltpkg.sls
- salt://pkg/salt/sources/salt-syndic
- salt://pkg/salt/sources/salt-syndic.service
- salt://pkg/salt/sources/SaltTesting-2015.5.8.tar.gz
/tmp/pkg:
pkgbuild.repo
Ensure that the named package is built and exists in the named directory
The name to track the build, the name value is otherwise unused
The user to run the build process as
The directory on the minion to place the built package(s)
The location of the spec file (used for rpms)
The list of package sources
The target platform to run the build on
Run the spec file through a templating engine
Changed in version 2015.8.2: This argument is now optional, allowing for no templating engine to be used if none is desired.
Packages required to ensure that the named package is built can be hosted on either the salt master server or on an HTTP or FTP server. Both HTTPS and HTTP are supported as well as downloading directly from Amazon S3 compatible URLs with both pre-configured and automatic IAM credentials
A dictionary of environment variables to be set prior to execution. Example:
- env:
DEB_BUILD_OPTIONS: 'nocheck'
Warning
The above illustrates a common PyYAML pitfall, that yes,
no, on, off, true, and false are all loaded as
boolean True
and False
values, and must be enclosed in
quotes to be used as strings. More info on this (and other) PyYAML
idiosyncrasies can be found here.
The names of the expected rpms that will be built
If True
, packages will be built even if they already exist in the
dest_dir
. This is useful when building a package for continuous or
nightly package builds.
New in version 2015.8.2.
The saltenv to use for files downloaded from the salt filesever
Root directory for log files created from the build. Logs will be organized by package name, version, OS release, and CPU architecture under this directory.
New in version 2015.8.2.
Make a package repository and optionally sign it and packages present
The name is directory to turn into a repo. This state is best used with onchanges linked to your package building states.
The directory to find packages that will be in the repository
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.
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
Changed in version 2016.3.0.
A dictionary of environment variables to be utilized in creating the repository. Example:
- env:
OPTIONS: 'ask-passphrase'
Warning
The above illustrates a common PyYAML
pitfall, that yes,
no, on, off, true, and false are all loaded as
boolean True
and False
values, and must be enclosed in
quotes to be used as strings. More info on this (and other)
PyYAML
idiosyncrasies can be found here.
Use of OPTIONS
on some platforms, for example:
ask-passphrase
, will require gpg-agent
or similar to cache
passphrases.
Note
This parameter is not used for making yum
repositories.
New in version 2016.3.0.
Use a passphrase with the signing key presented in keyid
.
Passphrase is received from Pillar data which could be passed on the
command line with pillar
parameter. For example:
pillar='{ "gpg_passphrase" : "my_passphrase" }'
New in version 2016.3.0.
Location where GPG related files are stored, used with 'keyid'
New in version 2016.3.0.
User to create the repository as, and optionally sign packages.
Note
Ensure the user has correct permissions to any files and directories which are to be utilized.
New in version 2016.3.4.
Timeout in seconds to wait for the prompt for inputting the passphrase.