manala.apt
#######################################################################################################
:exclamation: DEPRECATION :exclamation:
This repository and the related role are no longer maintained. Please use the Manala Ansible Collection instead.
You can find information on how to use it in the collection repository.
#######################################################################################################
Ansible Role: Apt 
:exclamation: Please report issues and send Pull Requests to the main Ansible Role repository :exclamation:
This role adds third-party sources to the package manager by:
- Adding the source URL as a new repository
- Adding the specified secure key
- Managing package preference files (also known as pinning)
- Installing packages
It is part of the Manala Ansible stack but can also be used independently.
Requirements
None.
Dependencies
None.
Installation
Ansible 2+
To install using the ansible galaxy command line:
ansible-galaxy install manala.apt
Or, using an ansible galaxy requirements file:
- src: manala.apt
Role Handlers
None
Role Variables
Definition
| Name | Default | Type | Description | 
|---|---|---|---|
| manala_apt_configs_exclusive | false | Boolean | Whether configurations are exclusive | 
| manala_apt_configs_dir | '/etc/apt/apt.conf.d' | String | Directory for configurations | 
| manala_apt_configs_defaults | {} | Array | Default configurations | 
| manala_apt_configs | [] | Array | Configurations | 
| manala_apt_install_packages | ~ | Array | Packages to install | 
| manala_apt_install_packages_default | ['apt-transport-https', 'openssl', 'ca-certificates'] | Array | Default packages to install | 
| manala_apt_components | ['main'] | Array | Components collection | 
| manala_apt_sources_list_file | '/etc/apt/sources.list' | String | Path for sources list file | 
| manala_apt_sources_list_template | ~ | String | Path for sources list template | 
| manala_apt_sources_list | ~ | String/Array | Sources list | 
| manala_apt_repositories_exclusive | false | Boolean | Whether repositories are exclusive | 
| manala_apt_repositories | [] | Array | Repositories | 
| manala_apt_preferences_exclusive | false | Boolean | Whether preferences are exclusive | 
| manala_apt_preferences_dir | '/etc/apt/preferences.d' | String | Directory for preferences | 
| manala_apt_preferences_defaults | {} | Array | Default preferences | 
| manala_apt_preferences | [] | Array | Preferences | 
| manala_apt_holds_exclusive | false | Array | Holds exclusivity | 
| manala_apt_holds | [] | Array | Holds collection | 
| manala_apt_packages | [] | Array | Package collection | 
| manala_apt_cache_valid_time | 3600 | Integer | Cache age of apt in seconds | 
| manala_apt.update | false | Boolean | Update packages | 
Example
- hosts: all
  vars:
    manala_apt_repositories:
      - contrib
    manala_apt_preferences:
      - git@backports
      - dotdeb:100
      - php@dotdeb_php56:300
      - nginx@nginx
    manala_apt_packages:
      - xfonts-75dpi
      - http://download.gna.org/wkhtmltopdf/0.12/0.12.2.1/wkhtmltox-0.12.2.1_linux-{{ ansible_distribution_release }}-amd64.deb
  roles:
    - role: manala.apt
Configs
manala_apt_configs lets you define apt configuration files using either templates or raw content.
You can specify a state (present|absent|ignore).
manala_apt_configs:
  # Template based (file name based on template)
  - template: configs/check_valid_until_false.j2
  # Template based (enforce file name)
  - file: check
    template: configs/check_valid_until_false.j2
  # Content based
  - file: foo_content
    config: |
      APT::Install-Recommends "false";
  # Dictionaries array config (deprecated)
  - file: foo
    config:
      - Acquire::Check-Valid-Until: true
  # Ensure config is absent
  - file: absent
    state: absent # Default is "present"
  # Ignore config
  - file: ignore
    state: ignore
  # Use custom configs
  - "{{ my_custom_configs_array }}"
manala_apt_configs_exclusive allows you to clean up existing apt configuration files in the specified directory to ensure no old or manually created files interfere with the current config.
manala_apt_configs_exclusive: true
Components
Specify apt components:
manala_apt_components:
  - main
  - contrib
  - non-free
  # Use custom components
  - "{{ my_custom_components_array }}"
Sources list
Use a template:
manala_apt_sources_list_template: my/sources.list.j2
manala_apt_sources_list:
  foo: bar
Use raw content:
manala_apt_sources_list: |
  deb http://deb.debian.org/debian {{ ansible_distribution_release }} main
  deb http://security.debian.org/debian-security {{ ansible_distribution_release }}/updates main
  deb http://deb.debian.org/debian {{ ansible_distribution_release }}-updates main
Repositories
Simple, pattern-based
manala_apt_repositories:
  - security
  - updates
  - partner
  - backports
Detailed, pattern-based
manala_apt_repositories:
  - pattern: backports
    state: absent
Detailed
manala_apt_repositories:
  - source: deb http://pkg.jenkins-ci.org/debian binary/
    key:
      url: http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key
      id:  D50582E6
  # Ignore repository
  - source: deb https://example.com foo
    state: ignore
  # Use custom repositories
  - "{{ my_custom_repositories_array }}"
Exclusivity (removes all other repositories not defined by the role):
manala_apt_repositories_exclusive: true
Preferences
Simple, pattern-based
Format: [preference pattern]@[repository pattern]:[pin priority]
manala_apt_preferences:
  - git@backports
  - dotdeb:100
  - php@dotdeb
Detailed
manala_apt_preferences:
  - package:  '*'
    pin:      release o=Debian,a=stable
    priority: 600
    file:     dotdeb
  # Ignore preference
  - file: foo
  # Use custom preferences
  - "{{ my_custom_preferences_array }}"
Holds
Manage packages you want to keep from upgrading:
manala_apt_holds:
  - foo # Prevent "foo" from upgrading
  - package: bar # Same for "bar"
  # Ignore hold
  - package: qux
  # Deprecated
  - package: quux
    hold: true # or false :)
  # Use custom holds
  - "{{ my_custom_holds_array }}"
Exclusivity mode ensures only your specified packages are upgradeable.
manala_apt_holds_exclusive: true
Packages
Simple
manala_apt_packages:
  - vim # Package name
Detailed
manala_apt_packages:
  - package:  bzip2  # Package name, required
    state: absent # Optional state, default "present"
    force: true   # Optional force installation
  # Ignore package
  - package: foo
    state: ignore
  # Use custom packages
  - "{{ my_custom_packages_array }}"
Flags
To update packages:
manala_apt:
  update: true
# Can also be set for all manala roles
manala:
  update: true
Licence
MIT
Author information
Manala (http://www.manala.io/)
ansible-galaxy install manala.apt