bodsch.docker
Ansible角色:docker
该角色将完全配置和安装dockerd。
我已将此角色转移到自己的集合中。
从现在开始,我将不再接受或处理任何进一步的拉取请求或问题。请从现在起使用链接的集合!
需求与依赖
Ansible集合
ansible-galaxy collection install bodsch.core
或
ansible-galaxy collection install --requirements-file collections.yml
- 连接到docker-ce软件包仓库
操作系统
已在以下系统上测试
- ArchLinux
- ArtixLinux
- 基于Debian
- Debian 10 / 11
- Ubuntu 20.04 / 22.04
不再官方支持基于RedHat的系统!可能有效,但也可能无效。
角色变量
以下变量可用于自定义docker安装:
## 选择centos docker仓库频道启用状态
docker_repo:
channel:
stable_enabled: true
test_enabled: false
nightly_enabled: false
## 软件包状态(present,absent 等)
docker_state: present
## docker守护进程是否应在启动时启动?
docker_service:
enable: true
## docker服务的名称
name: docker
## 安装docker-compose的版本
docker_compose: {}
# 例如:
# docker_compose:
# install: true
# version: 1.29.2
docker_users: []
docker_plugins: []
docker_client_config: []
docker_config: {}
docker_config_diff: true
docker_python_packages: []
代理相关
docker守护进程是否应使用代理进行外部连接?
docker_proxy:
enabled: false
## 我们应该设置的环境变量列表(注释掉你不需要的)
env:
- "HTTP_PROXY=http://proxy.example.com:80/"
- "HTTP_PROXY=https://proxy.example.com:443/"
- "NO_PROXY=localhost,127.0.0.1,internalhub.example.com"
docker客户端配置
启用Docker注册表的身份验证。
这里可以为不同用户创建配置。
这里存储的密码是Base64编码的,而不是加密的!
创建相应字符串的方法如下:
echo "jenkins$robot:rubbel-die-katz-du-dummschwätzer1" | base64
amVua2luczpydWJiZWwtZGllLWthdHotZHUtZHVtbXNjaHfDpHR6ZXIxCg==
docker_client_config:
## 我们应该推送客户端配置的位置
- location: "/root/.docker/config.json"
enabled: false
auths:
registry.gitfoo.tld:
auth: amVua2luczpydWJiZWwtZGllLWthdHotZHUtZHVtbXNjaHfDpHR6ZXIxCg==
或者,你也可以输入你的username
和password
。
Ansible模块将会生成一个有效的Base64编码字符串。
docker_client_config:
## 我们应该推送客户端配置的位置
- location: "/var/tmp/foo/config.json"
enabled: false
auths:
"test.tld":
username: "FOO-was-sonst"
passwort: "ja-toll-schon-wieder-alles-scheisse!"
自版本3.1.0起,现在也可以配置docker ps
或docker image
的输出格式。
此处需要将提供的参数定义为列表:
docker_client_config:
## 我们应该推送客户端配置的位置
- location: "/root/.docker/config.json"
enabled: false
auths:
registry.gitfoo.tld:
auth: amVua2luczpydWJiZWwtZGllLWthdHotZHUtZHVtbXNjaHfDpHR6ZXIxCg==
formats:
ps:
- ".ID"
- ".Names"
- ".Status"
- ".Labels"
- ".RunningFor"
- ".Ports"
images:
- ".ID"
- ".Size"
- ".Repository"
- ".Tag"
- ".CreatedAt"
默认的dockerd配置选项
当前支持的选项:
选项 | 类型 | 默认值 | 描述 |
---|---|---|---|
authorization_plugins |
list |
[] |
|
bip |
string |
- |
指定网络桥IP |
bridge |
string |
- |
将容器附加到网络桥 |
data_root |
string |
/var/lib/docker |
持久化Docker状态的根目录 |
debug |
bool |
false |
启用调试模式 |
default_gateway |
string |
- |
容器默认网关IPv4地址 |
default_gateway_v6 |
string |
- |
容器默认网关IPv6地址 |
default_shm_size |
string |
- |
容器的默认共享内存大小(默认 64MiB ) |
default_ulimits |
dict |
{} |
容器的默认ulimits(默认[]) |
dns |
list |
[] |
要使用的DNS服务器 |
dns_opts |
list |
[] |
要使用的DNS选项 |
dns_search |
list |
[] |
要使用的DNS搜索域 |
experimental |
bool |
false |
启用实验功能 |
fixed_cidr |
string |
- |
固定IP的IPv4子网 |
fixed_cidr_v6 |
string |
- |
固定IP的IPv6子网 |
group |
group |
docker |
UNIX套接字的组 |
hosts |
list |
[] |
要连接的守护程序套接字 |
insecure_registries |
list |
[] |
启用不安全注册表通信 |
ip |
string |
0.0.0.0 |
绑定容器端口时的默认IP |
ip_forward |
bool |
true |
启用net.ipv4.ip_forward(默认为true) |
ip_masq |
bool |
true |
启用IP伪装(默认为true) |
iptables |
bool |
true |
启用添加iptables规则(默认为true) |
ip6tables |
bool |
false |
启用添加ip6tables规则(默认为false) |
ipv6 |
bool |
false |
启用IPv6网络 |
labels |
list |
[] |
将key=value标签设置为守护进程 |
log_driver |
string |
json-file |
容器日志的默认驱动程序 |
log_level |
string |
info |
设置日志级别(debug ,info ,warn ,error ,fatal ) |
log_opts |
dict |
{} |
容器的默认日志驱动程序选项 |
max_concurrent_downloads |
int |
3 |
设置每次拉取的最大并发下载数 |
max_concurrent_uploads |
int |
5 |
设置每次推送的最大并发上传数 |
max_download_attempts |
int |
5 |
设置每次拉取的最大下载尝试次数 |
metrics_addr |
string |
- |
设置提供指标api的默认地址和端口 |
oom_score_adjust |
int |
-500 |
设置守护进程的oom_score_adj(默认-500) |
pidfile |
string |
/var/run/docker.pid |
用于守护进程PID文件的路径(默认 "/var/run/docker.pid") |
raw_logs |
bool |
false |
无ANSI颜色的完整时间戳 |
registry_mirrors |
list |
[] |
优先的Docker注册表镜像 |
seccomp_profile |
string |
- |
seccomp配置文件的路径 |
selinux_enabled |
bool |
false |
启用selinux支持 |
shutdown_timeout |
int |
15 |
设置默认的关闭超时时间 |
storage_driver |
string |
overlay2 |
存储驱动程序(aufs ,devicemapper ,btrfs ,zfs ,overlay ,overlay2 ,fuse-overlayfs ) |
storage_opts |
list |
[] |
存储驱动程序选项 |
tls.verify |
bool |
false |
使用TLS并验证远程 |
tls.ca_cert |
string |
~/.docker/ca.pem |
仅信任这个CA签名的证书(默认 "~/.docker/ca.pem") |
tls.cert |
string |
~/.docker/cert.pem |
TLS证书文件的路径(默认 "~/.docker/cert.pem") |
tls.key |
string |
~/.docker/key.pem |
TLS密钥文件的路径(默认 "~/.docker/key.pem") |
示例
docker_config:
log_driver: ""
log_opts: {}
# env: "os,customer"
# "max-file": "5"
# "max-size": "10m"
max_concurrent_downloads: 3
max_concurrent_uploads: 5
debug: false
log_level: ""
bridge: ""
bip: "172.16.0.1/24"
fixed_cidr: "172.16.0.0/24"
fixed_cidr_v6: ""
default_gateway: ""
default_gateway_v6: ""
selinux_enabled: false
experimental: false
ip: "0.0.0.0"
group: "{{ docker_group }}"
insecure_registries: []
创建配置时,可以选择性地创建并输出原始版本的差异。
为此,变量docker_config_diff
必须设置为true
。
在分子测试中还有更多示例:
docker_users选项
将现有用户添加到docker
组。
此外,它尝试通过setfacl
来设置对docker套接字的访问权限。
docker_users:
- jenkins
docker_plugins选项
安装和激活自定义插件。
(目前仅在Loki中测试!)
docker_plugins:
- alias: loki
source: grafana/loki-docker-driver
version: 2.7.0
state: present
Python支持
该角色中的某些模块需要适合的python扩展。
最近,这方面出现了一些不兼容性,因此此点现在也是可配置的。
默认配置如下:
docker_python_packages:
- name: docker
- name: requests
- name: urllib3
如果在这里安装了其他pip模块版本,则可以覆盖这些默认值。
可以为每个模块添加版本:
docker_python_packages:
- name: docker
version: 6.1.1
如果指定了版本,将尝试安装该版本。
但是,还可以通过compare_direction
来影响此行为。
docker_python_packages:
- name: docker
compare_direction: ">"
version: 6.0.0
或者通过versions
定义相应的窗口:
docker_python_packages:
- name: docker
- name: requests
versions:
- ">= 2.27.0"
- "< 2.29.0"
- name: urllib3
versions:
- ">= 1.26.0"
- "< 2.0.0"
示例
在你的本地centos服务器上安装最新的docker 稳定版本
- hosts: localhost
roles:
- role: docker
在你的本地centos服务器上安装最新的docker 边缘版本
- hosts: localhost
vars:
docker_repo:
channel:
nightly_enabled: true
roles:
- role: docker
应用多种变量的高级剧本
- hosts: localhost
vars:
docker_config:
# 将docker容器/镜像存储到 /opt/docker
data_root: /opt/docker
# 更改默认docker桥接子网
bip: 172.16.77.77/24
# 设置默认日志驱动为journald
log_driver: journald
# 启用实验模式
experimental: true
# 通过套接字文件和tcp暴露docker api
hosts:
- unix:///var/run/docker.sock
- tcp://0.0.0.0:2376
# 设置默认搜索域
dns_search:
- lab1.linuxctl.com
- lab2.linuxctl.com
# 配置日志选项
log_opts:
"max-size": 10m
"max-file": "3"
labels: molecule
env: "os,customer"
roles:
- role: docker
作者和许可证
原始
docker
角色由:- George Bolo | linuxctl.com
修改人:
- Bodo Schulz
许可证
MIT
免费软件,太棒了!
ansible-galaxy install bodsch.docker