sorrowless.docker

Ansible 角色: Docker

CI

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

需要

没有。

角色变量

可用变量列在下面,并附有默认值(见 defaults/main.yml):

# 版本可以是:'ce'(社区版)或 'ee'(企业版)。
# 你可以通过变量docker_version定义docker版本,例如: '=5:23.0.2-1~ubuntu.20.04~focal'
docker_edition: 'ce'
docker_version: ''
docker_packages:
  - "docker-{{ docker_edition }}{{ docker_version }}"
  - "docker-{{ docker_edition }}-cli{{ docker_version}}"
  - "docker-{{ docker_edition }}-rootless-extras{{ docker_version}}"
  - "containerd.io"
docker_packages_state: present

docker_edition 可以是 ce(社区版)或 ee(企业版)。你也可以使用变量 "docker_version" 指定要安装的特定版本: docker_version: '=5:23.0.2-1ubuntu.20.04focal'

你可以通过将 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

如果你在防火墙后面,或者提供了一个可信的镜像,可以更改 docker_apt_gpg_key 的url。通常与更改docker_apt_repository一起使用。docker_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 来启用夜间或测试库。

如果你在防火墙后面,或者提供了一个可信的镜像,可以更改 docker_yum_gpg_key 的url。通常与更改 docker_yum_repository 一起使用。

docker_users:
  - user1
  - user2

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

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

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

要登录到注册表,需要定义以下变量:

  • docker_registry_url
  • docker_registry_user
  • docker_registry_password

与Ansible (和docker Python库)一起使用

许多使用此角色的用户希望使用Ansible来构建Docker镜像和管理安装有Docker的服务器上的Docker容器。在这种情况下,你可以使用 geerlingguy.pip 角色轻松添加 docker Python库:

- hosts: all

  vars:
    pip_install_packages:
      - name: docker

  roles:
    - geerlingguy.pip
    - geerlingguy.docker

要配置swarm,应为所有节点添加变量 docker_swarm_configure: true,并将管理节点设置为 docker_swarm_manager: trueinventory_hostname 必须等于主机名(ansible_hostname),以便正确移除节点。

依赖

无。

示例剧本

- hosts: all
  roles:
    - geerlingguy.docker

许可证

MIT / BSD

赞助商

  • We Manage: 帮助初创企业和成长型企业以可持续的方式扩展其基础设施。

以上赞助商支持Jeff Geerling在GitHub Sponsors上的工作。你也可以赞助Jeff的工作,帮助他继续改进这些Ansible开源项目!

作者信息

此角色由Jeff Geerling于2017年创建,他是Ansible for DevOps的作者。 由Stan Bogatkin根据自己的需要进行调整。

安装
ansible-galaxy install sorrowless.docker
许可证
mit
下载
4.6k
拥有者
Barocco-style deployment engineer