geerlingguy.docker
Ansible角色:Docker
一个在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_state
为present
、absent
或latest
,可以控制软件包的安装、卸载或保持最新版本。注意,如果更新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_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)。如果您想启用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