bsmeding.docker

Ansible 角色:Docker

一个用于在 Linux 上安装 Docker 的 Ansible 角色。

请仅在 CI 测试通过时安装版本!

测试状态 该角色在 Ubuntu、Debian 和 Rocky(类似 RedHat)Linux 发行版上进行了测试。

下载: Ansible 角色

原始来自 geerlingguy.docker 附加内容:

  • 从 RedHat Linux 中移除 PodMan
  • 添加用户和组 docker:docker
  • 将当前 Ansible 提升用户添加到 docker 组
  • docker_uiddocker_gui 设置为 docker 用户和组的 ID。这可用于我其他的 Ansible 角色,它们都使用 Docker。这将创建一个无缝的安装体验。

需求

无。

角色变量

可用的变量如下所示,以及默认值(见 defaults/main.yml):

# 版本可以是:'ce'(社区版)或 'ee'(企业版)。
docker_edition: 'ce'
docker_packages:
    - "docker-{{ docker_edition }}"
    - "docker-{{ docker_edition }}-cli"
    - "docker-{{ docker_edition }}-rootless-extras"
docker_packages_state: present

docker_edition 应为 ce(社区版)或 ee(企业版)。 您也可以使用特定于发行版的格式指定要安装的 Docker 的特定版本: Red Hat/CentOS: docker-{{ docker_edition }}-<VERSION>(注意:您必须在所有包中添加此内容); Debian/Ubuntu: docker-{{ docker_edition }}=<VERSION>(注意:您必须在所有包中添加此内容)。

您可以通过将 docker_packages_state 设置为 presentabsentlatest 来控制包的安装、卸载或更新到最新版本。请注意,如果 Docker 包被更新,Docker 守护进程将自动重启。这是刷新所有处理程序的副作用(运行此角色以及之前任何其他角色通知的处理程序)。

docker_service_manage: true
docker_service_state: started
docker_service_enabled: true
docker_restart_handler_state: restarted

用于控制 docker 服务状态的变量,以及是否应在启动时启动。如果您在没有 systemd 或 sysvinit 的 Docker 容器内安装 Docker,则应将 docker_service_manage 设置为 false

docker_install_compose_plugin: false
docker_compose_package: docker-compose-plugin
docker_compose_package_state: present

Docker Compose 插件安装选项。与以下选项不同的是,docker-compose 被作为 Docker 插件安装(并与 docker compose 一起使用),而不是独立的二进制文件。

docker_install_compose: true
docker_compose_version: "1.26.0"
docker_compose_arch: "{{ ansible_architecture }}"
docker_compose_path: /usr/local/bin/docker-compose

Docker Compose 安装选项。

docker_add_repo: true

控制此角色是否会添加官方 Docker 仓库。如果您希望使用系统的默认 Docker 包或自己管理软件包仓库,请将其设置为 false

docker_repo_url: https://download.docker.com/linux

Docker 主要仓库 URL,在 Debian 和 RHEL 系统中通用。

docker_apt_release_channel: stable
docker_apt_arch: "{{ 'arm64' if ansible_architecture == 'aarch64' else 'amd64' }}"
docker_apt_repository: "deb [arch={{ docker_apt_arch }}] {{ docker_repo_url }}/{{ ansible_distribution | lower }} {{ ansible_distribution_release }} {{ docker_apt_release_channel }}"
docker_apt_ignore_key_error: True
docker_apt_gpg_key: "{{ docker_repo_url }}/{{ ansible_distribution | lower }}/gpg"
docker_apt_filename: "docker"

(仅用于 Debian/Ubuntu。)如果您希望使用 Nightly 版本,可以将频道切换为 nightly

如果您在防火墙后面,可以更改 docker_apt_gpg_key 为另一个 URL,或提供一个可靠的镜像。通常还要更改 docker_apt_repositorydocker_apt_filename 控制在 sources.list.d 中创建的源列表文件的名称。如果您从更旧的(<7.0.0)版本升级此角色,则应将其更改为现有文件的名称(例如在 Debian 上为 download_docker_com_linux_debian),以避免冲突的列表。

docker_yum_repo_url: "{{ docker_repo_url }}/{{ (ansible_distribution == 'Fedora') | ternary('fedora','centos') }}/docker-{{ docker_edition }}.repo"
docker_yum_repo_enable_nightly: '0'
docker_yum_repo_enable_test: '0'
docker_yum_gpg_key: "{{ docker_repo_url }}/centos/gpg"

(仅用于 RedHat/CentOS。)您可以通过将各自的变量设置为 1 来启用 Nightly 或测试仓库。

如果您在防火墙后面,可以更改 docker_yum_gpg_key 为另一个 URL,或提供一个可靠的镜像。通常也需要更改 docker_yum_repository

docker_users:
  - user1
  - user2

要添加到 docker 组的系统用户列表(以便他们可以在服务器上使用 Docker)。当前的 Ansible 用户也将被添加。

docker_daemon_options:
  storage-driver: "devicemapper"
  log-opts:
    max-size: "100m"

可以通过此字典配置自定义 dockerd 选项,该字典表示 JSON 文件 /etc/docker/daemon.json

作者信息

此角色由 Jeff Geerling 在 2017 年创建,他是 Ansible for DevOps 的作者。

由我(Bart Smeding)进行了一些附加设置的更改,以便集成到我其他的 Ansible 容器应用程序角色中。

信息\

如果您收到错误信息 "Error connecting: Error while fetching server API version: Not supported URL scheme http+docker"} ,请升级 Ansible 集合: (或将请求的 Python 库版本设置为 < 2.32.0 )

  - name: community.general
  - name: community.docker
关于项目

Docker for Linux, Forked from geerlingguy.docker.

安装
ansible-galaxy install bsmeding.docker
许可证
mit
下载
7.3k
拥有者
Network Automation Consultant | NetDevOps | DevNetOps | AI in networking | Home Automation