cookbook 'aptly', '= 2.3.0'
aptly
(37) Versions
2.3.0
-
Follow7
Installs/Configures aptly
cookbook 'aptly', '= 2.3.0', :supermarket
knife supermarket install aptly
knife supermarket download aptly
aptly Cookbook
This cookbook installs and configures aptly http://www.aptly.info
Maintainers
This cookbook is maintained by the Sous Chefs. The Sous Chefs are a community of Chef cookbook maintainers working together to maintain important cookbooks. If you’d like to know more please visit sous-chefs.org or come chat with us on the Chef Community Slack in #sous-chefs.
Requirements
Platform
- Debian 9
- Debian 10
- Ubuntu 16.04
- Ubuntu 18.04
Attributes
Repository attributes
default['aptly']['repository']['uri'] = 'http://repo.aptly.info/'
default['aptly']['repository']['dist'] = 'squeeze'
default['aptly']['repository']['components'] = 'main'
default['aptly']['repository']['key'] = 'https://www.aptly.info/pubkey.txt'
Global repository attributes
default['aptly']['user'] = 'aptly'
default['aptly']['group'] = 'aptly'
default['aptly']['rootDir'] = '/opt/aptly'
default['aptly']['downloadConcurrency'] = 4
default['aptly']['downloadSpeedLimit'] = 0
default['aptly']['architectures'] = []
default['aptly']['dependencyFollowSuggests'] = false
default['aptly']['dependencyFollowRecommends'] = false
default['aptly']['dependencyFollowAllVariants'] = false
default['aptly']['dependencyFollowSource'] = false
default['aptly']['gpgDisableSign'] = false
default['aptly']['gpgDisableVerify'] = false
default['aptly']['gpgProvider'] = 'gpg'
default['aptly']['downloadSourcePackages'] = false
default['aptly']['skipLegacyPool'] = true
default['aptly']['ppaDistributorID'] = 'ubuntu'
default['aptly']['ppaCodename'] = ''
default['aptly']['FileSystemPublishEndpoints'] = {}
default['aptly']['S3PublishEndpoints'] = {}
default['aptly']['SwiftPublishEndpoints'] = {}
GPG attributes
default['aptly']['gpg']['key-type'] = 'RSA'
default['aptly']['gpg']['key-length'] = 4096
default['aptly']['gpg']['subkey-type'] = 'RSA'
default['aptly']['gpg']['subkey-length'] = 4096
default['aptly']['gpg']['name-real'] = 'Aptly'
default['aptly']['gpg']['name-comment'] = 'Aptly Key'
default['aptly']['gpg']['name-email'] = 'organisation@example.org'
default['aptly']['gpg']['expire-date'] = 0
default['aptly']['gpg']['passphrase'] = 'GreatPassPhrase'
Recipes
default
Install and configure aptly
Resources
'aptly_repo'
Manage local repositories
Actions
-
create
- (default) Create a repo -
drop
- Drop an existed repository -
add
- Add packages to a repository -
remove
- remove a package from a repository
Properties
Name | Types | Description | Default | Used with... |
---|---|---|---|---|
repo_name |
String | Name of the repository | <resource_name> | all |
component |
String | Repository component | '' | :create |
comment |
String | Repository's comment | '' | :create |
distribution |
String | Name of distribution repository | '' | :create |
remove_files |
[true, false] | Remove files that have been imported successfully into repository | false | :add |
force_replace |
[true, false] | Remove/override existing package when exists | false | :add |
directory |
String | Look in this directory to add multiple packages | '' | :add |
file |
String | Specify a package file to add to the repository | '' | :add |
package_query |
String | Package name to remove from repository | '' | :remove |
Examples
aptly_repo 'my_repo' do comment 'A repository of packages' component 'main' distribution 'bionic' action :create end
aptly_repo 'repo_with_no_comment' do action :create end
aptly_repo 'my_repo' do action :drop end
aptly_repo 'my_repo' do file '/path/to/package-1.0.1.deb' action :add end
aptly_repo 'my_repo' do directory '/path/to/packages' action :add end
aptly_repo 'my_repo' do package_query 'package-1.0.1.deb' action :remove end
'aptly_mirror'
Manage external mirror
Actions
-
create
- (default) Create a mirror from external repository -
drop
- Drop created mirror -
update
- Update/Sync your mirror
Properties
Name | Types | Description | Default | Used with... |
---|---|---|---|---|
mirror_name |
String | Mirror name | <resource_name> | all |
component |
String | Repository component | '' | :create |
distribution |
String | Name of distribution repository | '' | :create |
uri |
String | Uri of remote repository | '' | :create |
keyid |
String | Remote repository key ID | '' | :create |
keyserver |
String | Keys server | 'keys.gnupg.net' | :create |
cookbook |
String | Cookbook name where you've store the keyfile | '' | :create |
keyfile |
String | Key file name | '' | :create |
filter |
String | Mirror filter | '' | :create |
filter_with_deps |
[true, false] | Include dependencies of filtered packages | false | :create |
dep_follow_all_variants |
[true, false] | When processing dependencies, follow a & b if dependency is '`a | b`' | false |
dep_follow_recommends |
[true, false] | When processing dependencies, follow Recommends | false | :create, :update |
dep_follow_source |
[true, false] | When processing dependencies, follow from binary to Source packages | false | :create, :update |
dep_follow_suggests |
[true, false] | When processing dependencies, follow Suggests | false | :create, :update |
dep_verbose_resolve |
[true, false] | When processing dependencies, print detailed logs | false | :create, :update |
ignore_checksums |
[true, false] | Ignore checksum mismatches while downloading package files and metadata | false | :update |
ignore_signatures |
[true, false] | Disable verification of Release file signatures (WARNING: Not Recommended) | false | :create, :update |
architectures |
Array | List of architectures | [] | :create |
with_installer |
[true, false] | Whether to download installer files | false | :create |
with_udebs |
[true, false] | Whether or not to download .udeb packages | false | :create |
download_limit |
Integer | Limit download speed (kbytes/sec) | 0 | :update |
max_tries |
Integer | Max download tries till process fails with download error | 1 | :update |
skip_existing_packages |
[true, false] | Do not check file existence for packages listed in the internal database of the mirror | false | :update |
timeout |
Integer | Timeout in seconds | 3600 | :update |
Note: The "architectures" property will use the global configuration (settable via node['aptly']['architectures']) if you do not provide it for a particular repository here. If you do not provide either of them, it will default to all available architectures for that particular mirror. Note also that you need to publish
with the architectures as well!
Examples
aptly_mirror 'nginx-bionic' do distribution 'bionic' component 'nginx' keyid '7BD9BF62' keyserver 'keyserver.ubuntu.com' uri 'http://nginx.org/packages/ubuntu/' end
aptly_mirror 'nginx-bionic' do action :update end
aptly_mirror 'nginx-bionic' do action :drop end
'aptly_snapshot'
Manage aptly snapshots
Actions
-
create
- (default) Create a snapshot from an internal repository or mirror -
drop
- Drop created snapshot -
verify
- Verifies dependencies between packages in snapshot -
pull
- Pulls new packages to snapshot from source snapshot -
merge
- Merges several source snapshots into new destination snapshot
Properties
Name | Types | Description | Default | Used with... |
---|---|---|---|---|
snapshot_name |
String | Snapshot name | <resource_name> | all |
from |
String | Name of mirror or repo to snapshot | '' | :create |
type |
String | Type of snapshot source (repo, mirror or snapshot) | '' | :create |
empty |
[true, false] | Create an empty snapshot | false | :create |
source |
String | Snapshot name where packages would be searched | '' | :pull |
destination |
String | Name of the snapshot that would be created | '' | :pull |
package_query |
String | Query/package name to be pulled from | '' | :pull |
no_deps |
[true, false] | Don’t process dependencies | false | :pull |
no_remove |
[true, false] | Don’t remove other package versions when pulling package | false | :pull, :merge |
merge_sources |
Array | Array of snapshot names to merge | '' | :merge |
latest |
[true, false] | Use only the latest version of each package | false | :merge |
Examples
aptly_snapshot 'my_snapshot' do from 'my_repo' type 'repo' end
aptly_snapshot 'my_snapshot' do action :drop end
aptly_snapshot 'merged_snapshot' do merge_sources %w(snapshot1 snapshot2) action :merge end
aptly_snapshot 'merged_snapshot' do action :verify end
aptly_snapshot 'merged_snapshot' do package_query 'curl_7.26.0-1+wheezy25+deb7u1_amd64.deb' source 'my_snapshot' destination 'new_my_snapshot' action :pull end
'aptly_publish'
Publish, remove or update a repo or a snapshot
Actions
-
create
- (default) Publish a repo or a snapshot -
drop
- Drop a publication -
update
- Update publication
Properties
Name | Types | Description | Default | Used with... |
---|---|---|---|---|
publish_name |
String | Publication name | <resource_name> | all |
type |
String | Publish type (snapshot or repo) | '' | :create |
component |
String | Component name to publish | [] | :create |
distribution |
String | Distribution name to publish | '' | :create |
architectures |
Array | Only mentioned architectures would be published | [] | :create |
endpoint |
String | An optional endpoint reference | '' | :create, :update |
prefix |
String | An optional prefix for publishing | '' | :create, :update |
timeout |
Integer | Timeout in seconds | 3600 | all |
Note: The "architectures" property will use the global configuration (settable via node['aptly']['architectures']) if you do not provide it for a particular repository here.
Examples
aptly_publish 'my_repo' do type 'repo' component %w(main contrib) prefix 'my_company' end
aptly_publish 'my_snapshot' do type 'snapshot' endpoint 's3' prefix 'snap' action :create end
aptly_publish 'my_snapshot' do prefix 'snap' action :update end
aptly_publish 'my_snapshot' do prefix 'snap' action :drop end
'aptly_serve'
Serve an HTTP Service
Actions
-
run
- (default) Run the service
Properties
Name | Types | Description | Default | Used with... |
---|---|---|---|---|
listen |
String | Specify IP address about HTTP listening | '' (all interfaces) | :run |
port |
[Integer, String] | Publish type (snapshot or repo) | 8080 | :run |
user |
String | Run command as user | 'aptly' | :run |
group |
String | Run command as group | 'aptly' | :run |
Examples
aptly_serve 'Serve Aptly HTTP Service' do port 8090 end
'aptly_api_serve'
Serve an API Service
Actions
-
run
- (default) Run the service
Properties
Name | Types | Description | Default | Used with... |
---|---|---|---|---|
listen |
String | Specify IP address about HTTP listening | '' (all interfaces) | :run |
port |
[Integer, String] | Publish type (snapshot or repo) | 8080 | :run |
user |
String | Run command as user | 'aptly' | :run |
group |
String | Run command as group | 'aptly' | :run |
no_lock |
[true, false] | Don’t lock the database | false | :run |
Examples
aptly_api_serve 'Serve Aptly API Service' do port 8091 no_lock true end
'aptly_db'
Manage internal Aptly DB
Actions
-
cleanup
- (default) Database cleanup removes information about unreferenced packages and deletes files in the package pool that aren’t used by packages anymore. -
recover
- Database recover does its best to recover database after crash.
Properties
None
Examples
aptly_db 'cleanup' do action :cleanup end
aptly_db 'recover' do action :recover end
Usage
include recipe in a wrapper cookbook and call resources if needed
include_recipe 'aptly' aptly_repo 'my_repo' do comment 'A repository of packages' component 'main' distribution 'bionic' end aptly_snapshot 'my_snapshot' do from 'my_repo' type 'repo' end aptly_publish 'my_repo' do type 'repo' prefix 'ubuntu' end aptly_serve 'Aptly HTTP Service'
Testing
Please contribute to keep unit and functional tests up to date.
After modifications, please run the following commands to check if you break something:
- chef exec rspec
- kitchen test default-ubuntu-1804
NOTE: Available distro tests: default-debian-8
, default-debian-9
, default-ubuntu-1604
and default-ubuntu-1804
NOTE2: if you want to use Policyfile, rename Policyfile.rb.dist
to Policyfile.rb
in root and test directories, then execute chef update
in each folder. Look inside .kitchen.yml
and spec/spec_helper.rb
too.
Contributors
This project exists thanks to all the people who contribute.
Backers
Thank you to all our backers!
Sponsors
Support this project by becoming a sponsor. Your logo will show up here with a link to your website.
Dependent cookbooks
This cookbook has no specified dependencies.
Contingent cookbooks
There are no cookbooks that are contingent upon this one.
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
2.3.0 (2020-08-26)
Added
- Ability to edit existing mirror configuration
- Added missing properties to aptly_mirror resource
- Changed
aptly_mirror
resource's propertyarchitectures
to usenode['aptly']['architectures']
rather than an empty list which was needed for idempotent mirror edits
2.2.0 (2020-08-20)
Fixed
- Changed the
node['aptly']['gpg']['key-tpye']
attribute tonode['aptly']['gpg']['key-type']
. WARNING: This change may break existing cookbooks! Please adjust as needed.
2.1.2 (2020-06-18)
- Fixed Debian platform version in the spec tests
2.1.1 2020-05-05
Fixed
- resolved cookstyle error: libraries/helpers.rb:51:14 warning:
Lint/SendWithMixinArgument
- resolved cookstyle error: libraries/helpers.rb:52:16 warning:
Lint/SendWithMixinArgument
- Use
true
andfalse
in resources
Added
- Migrate to Github Actions for testing
2.1.0 2020-02-17
Added
- Extended Batch file and associated attributes
Fixed
- Batch file is deleted from /tmp after successful application
- Publish resource :update has been extended with "sensetive true" parameters. So that the output of the assphrase during the chef-client run will be suppressed
Deprecated
Removed
2.0.2 2020-02-14
Added
- Migrate to Github Actions for testing
Fixed
- Changed usage of getent <user> passwd to getent passwd <user>
- Use
true
andfalse
in resources
Deprecated
Removed
2.0.1 2019-10-19
Added
Fixed
- Latest Cookstyle changes in cookstyle 5.6.2
Deprecated
Removed
[2.0.0] - 2019-09-04
Added
- Add a
with_installer
parameter to the mirror resource
Fixed
- Change
architectures
argument in both the mirror and publish resources for consistency
Deprecated
Removed
[1.1.0] - 2019-08-03
Added
- Add timeout argument for some time consuming resources
- Add support for aptly mirror
-filter-with-deps
argument - Add support for aptly mirror
-with-udebs
and-architectures
arguments
Fixed
- Fix "can't modify frozen String" error caused by aptly_snapshot
- Fix broken
not_if
for in aptly_mirror resource - Migrate to circleci for testing
Deprecated
Removed
v1.0.0 (24-10-2018)
- Big refactoring
- Update resource with latest usage of aptly
- Create aptly_serve and aptly_api_serve resource
- Create unit tests
- Enhance integration test
- Use Circle CI
0.3.0
- Require at least Chef 11 and remove Chef 10 compatibility code
- Resolve idempotency in the DB ownership resource
- Enable the configuration of the publishing endpoints
- Remove the Librarian Cheffile
- Add a chefignore file to reduce the number of files pulled down to each node
- Add chef_version, issues_url, and source_url metadata to metadata.rb
- Resolve all cookstyle warnings
- Remove test deps from the Gemfile and instead rely on ChefDK for testing
- Swap local testing with Rake for Delivery Local Mode
- Resolve all Foodcritic warnings
0.2.8
- Update GPG Key for aptly repository
0.2.6
- Support for multi-component publishing #16
- Add filter attribute in mirror provider #17
0.2.4
- use exact matches in provider for not_if checks
- Add chefspec matchers
0.2.3
- Support for cookbook file to distribute gpg key
- Initializing gpg config for default user
0.2.2
- Helper to define proper environment
- Add repo attribute to repo resource
- Fix group owner attribute
- Correction for aptly user seed action 0.2.1
- bug fix for writing files to the system as the wrong user
0.2.0
- add providers for all aptly functionality
0.1.0
- Initial release of aptly
Check the Markdown Syntax Guide for help with Markdown.
The Github Flavored Markdown page describes the differences between markdown on github and standard markdown.
Collaborator Number Metric
2.3.0 passed this metric
Contributing File Metric
2.3.0 passed this metric
Foodcritic Metric
2.3.0 passed this metric
No Binaries Metric
2.3.0 passed this metric
Testing File Metric
2.3.0 passed this metric
Version Tag Metric
2.3.0 passed this metric
2.3.0 passed this metric
2.3.0 passed this metric
Foodcritic Metric
2.3.0 passed this metric
No Binaries Metric
2.3.0 passed this metric
Testing File Metric
2.3.0 passed this metric
Version Tag Metric
2.3.0 passed this metric
2.3.0 passed this metric
2.3.0 passed this metric
Testing File Metric
2.3.0 passed this metric
Version Tag Metric
2.3.0 passed this metric
2.3.0 passed this metric
2.3.0 passed this metric