geerlingguy.docker

Ansible角色:Docker

CI

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

要求

无。

角色变量

可用的变量如下所列,并带有默认值(见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: 红帽/CentOS: docker-{{ docker_edition }}-<VERSION>(注意:您需要在所有软件包中添加它); Debian/Ubuntu: docker-{{ docker_edition }}=<VERSION>(注意:您需要在所有软件包中添加它)。

通过设置docker_packages_statepresentabsentlatest,可以控制软件包的安装、卸载或保持最新版本。注意,如果更新Docker软件包,Docker守护进程会自动重启。这是因为触发了所有通知的处理器(任何在这之前被此角色及其他角色通知的处理器都会执行)。

docker_obsolete_packages:
  - docker
  - docker.io
  - docker-engine
  - podman-docker
  - containerd
  - runc

在运行此角色之前要卸载的软件包列表。请参见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: true
docker_compose_package: docker-compose-plugin
docker_compose_package_state: present

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

docker_install_compose: false
docker_compose_version: "2.11.1"
docker_compose_arch: "{{ ansible_architecture }}"
docker_compose_url: "https://github.com/docker/compose/releases/download/{{ docker_compose_version }}/docker-compose-linux-{{ docker_compose_arch }}"
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)。如果您想启用Nightly或测试仓库,请将相应变量设置为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

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

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

- hosts: all

  vars:
    pip_install_packages:
      - name: docker

  roles:
    - geerlingguy.pip
    - geerlingguy.docker

依赖关系

无。

示例剧本

- hosts: all
  roles:
    - geerlingguy.docker

许可

MIT / BSD

赞助

  • We Manage:帮助初创公司和成熟公司以可持续的方式扩展其基础设施。

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

作者信息

该角色由Jeff Geerling于2017年创建,是《Ansible for DevOps》的作者。

安装
ansible-galaxy install geerlingguy.docker
许可证
mit
下载
22.2M
拥有者
Father, author, developer, maker. Sometimes called "an inflammatory enigma". #stl #drupal #ansible #k8s #raspberrypi #crohns