manala.apt

#######################################################################################################

:exclamation: 废弃通知 :exclamation:

本仓库及相关角色已被废弃,建议使用 Manala Ansible Collection

使用信息请参见 集合仓库

#######################################################################################################

Ansible 角色:Apt 构建状态

:exclamation: 在 主要 Ansible 角色仓库报告问题发送拉取请求 :exclamation:

该角色将通过以下方式向包管理器添加第三方源:

  • 添加源 URL 作为新仓库
  • 添加指定的安全密钥
  • 管理包的优先级文件(即固定优先级)
  • 安装包

它是 Manala Ansible 堆栈 的一部分,但也可以作为独立组件使用。

要求

无。

依赖

无。

安装

Ansible 2+

使用 ansible galaxy CLI:

ansible-galaxy install manala.apt

使用 ansible galaxy 需求文件:

- src: manala.apt

角色处理程序

角色变量

定义

名称 默认值 类型 描述
manala_apt_configs_exclusive false Boolean 配置的排他性
manala_apt_configs_dir '/etc/apt/apt.conf.d' String 配置目录路径
manala_apt_configs_defaults {} Array 配置默认值
manala_apt_configs [] Array 配置
manala_apt_install_packages ~ Array 要安装的依赖包
manala_apt_install_packages_default ['apt-transport-https', 'openssl', 'ca-certificates'] Array 默认依赖包
manala_apt_components ['main'] Array 组件集合
manala_apt_sources_list_file '/etc/apt/sources.list' String 源列表文件路径
manala_apt_sources_list_template ~ String 源列表模板路径
manala_apt_sources_list ~ String/Array 源列表
manala_apt_repositories_exclusive false Boolean 仓库的排他性
manala_apt_repositories [] Array 仓库
manala_apt_preferences_exclusive false Boolean 优先级的排他性
manala_apt_preferences_dir '/etc/apt/preferences.d' String 优先级目录路径
manala_apt_preferences_defaults {} Array 优先级默认值
manala_apt_preferences [] Array 优先级
manala_apt_holds_exclusive false Array 保持包的排他性
manala_apt_holds [] Array 保持包集合
manala_apt_packages [] Array 包集合
manala_apt_cache_valid_time 3600 Integer 允许的 apt 缓存时间(秒)
manala_apt.update false Boolean 更新包

示例

- 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

配置

manala_apt_configs 允许您使用模板和配置或原始内容定义 apt 配置文件。

可以提供状态(present|absent|ignore)。

manala_apt_configs:
  # 基于模板(文件名基于模板)
  - template: configs/check_valid_until_false.j2
  # 基于模板(强制文件名)
  - file: check
    template: configs/check_valid_until_false.j2
  # 基于内容
  - file: foo_content
    config: |
      APT::Install-Recommends "false";
  # 基于字典数组的配置(已废弃)
  - file: foo
    config:
      - Acquire::Check-Valid-Until: true
  # 确保配置不存在
  - file: absent
    state: absent # 默认是“present”
  # 忽略配置
  - file: ignore
    state: ignore
  # 扁平配置
  - "{{ my_custom_configs_array }}"

manala_apt_configs_exclusive 允许您清理在 manala_apt_configs_dir 关键字定义的目录中现有的 apt 配置文件。确保没有旧文件或手动创建的文件会改变当前配置。

manala_apt_configs_exclusive: true

组件

指定 apt 组件

manala_apt_components:
  - main
  - contrib
  - non-free
  # 扁平组件
  - "{{ my_custom_components_array }}"

源列表

使用模板:

manala_apt_sources_list_template: my/sources.list.j2
manala_apt_sources_list:
  foo: bar

使用原始内容:

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

使用字典数组(已废弃):

manala_apt_sources_list:
  - deb: http://deb.debian.org/debian {{ ansible_distribution_release }} main
  - deb http://deb.debian.org/debian {{ ansible_distribution_release }} contrib

仓库

简洁,基于模式

manala_apt_repositories:
  - security
  - updates
  - partner
  - backports
  - backports_sloppy
  - dotdeb
  - nginx

详细,基于模式

manala_apt_repositories:
  - pattern: backports
    state: absent

详细

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
  - source: deb https://enterprise.proxmox.com/debian {{ ansible_distribution_release }} pve-enterprise
    state: absent
  # 忽略仓库
  - source: deb https://example.com foo
    state: ignore
  # 扁平化仓库
  - "{{ my_custom_repositories_array }}"

排他性(所有未由角色定义的仓库将被删除)

manala_apt_repositories_exclusive: true

优先级

简洁,基于模式

格式:[优先级模式]@[仓库模式]:[优先级值]

请注意,引用的仓库将自动通过“manala_apt_repositories”过程包含为现有。

manala_apt_preferences:
  - git@backports         # “git*”来自debian backports仓库,高优先级
  - dotdeb:100            # “*”来自dotdeb仓库,低优先级
  - php@dotdeb            # “php*”来自dotdeb仓库,高优先级
  # 模式语法
  - preference: ansible@ansible
    file: foo

详细

manala_apt_preferences:
  - package:  '*'
    pin:      release o=Debian,a=stable
    priority: 600
    file:     dotdeb
  # 忽略优先级
  - file: foo
    state: ignore
  # 扁平化优先级
  - "{{ my_custom_preferences_array }}"

保持

处理您不希望升级的包(即保持包):

manala_apt_holds:
  - foo # 确保“foo”包不会被升级
  - package: bar # 与“bar”包相同,使用详细语法
    state: present
  # 忽略保持
  - package: qux
    state: ignore
  # 扁平化保持
  - "{{ my_custom_holds_array }}"

也提供了排他模式,以确保除您设置的包以外的所有包都可以升级。

manala_apt_holds_exclusive: true

简洁

manala_apt_packages:
  - vim # 包名称

详细

manala_apt_packages:
  - package:  bzip2  # 包名称,必填
    state: absent # 包状态,可选,默认“present”
  # 忽略包
  - package: foo
    state: ignore # 包状态,可选,默认'present'
  # 扁平化包
  - "{{ my_custom_packages_array }}"

标志

更新包

manala_apt:
  update: true

# 也可以通过 manala 角色跨越设置
manala:
  update: true

许可证

MIT

作者信息

Manala (http://www.manala.io/)

关于项目

Handle apt

安装
ansible-galaxy install manala.apt
许可证
Unknown
下载
73k
拥有者
Manala is an open source project supported by the french web agency ELAO providing advanced ansible roles for website's infrastructures and far more.