arillso.traefik
Ansible角色:traefik
描述
Traefik 是一个用Go语言编写的反向代理。它可以用于多种场景,并支持多种提供商(如Kubernetes、Swarm等)。版本2还支持TCP路由。
此角色在主机上设置traefik作为反向代理和负载均衡器。这样,你可以使用一台服务器作为多个容器化应用程序的主机。
注意: 此角色允许你使用一台(1)服务器作为多个应用程序的主机。根据你的使用案例,这可能不是你想要的。对于需要高可用性的服务,考虑使用Kubernetes或其他系统,并在其中设置traefik。
安装
ansible-galaxy install arillso.traefik
要求
- Docker
角色变量
Traefik v2.0及更高版本支持yaml配置。此角色利用此功能直接从给定的ansible变量生成配置。有一些快速设置变量,可以帮助你设置一个简单的实例,但也可以选择完全配置每一个关键选项。快速设置让你可以:
- 设置基于lets-encrypt的证书解析器
- 设置标准入口点
- 设置标准Docker提供商
快速设置变量以traefik_qs_
为前缀。
名称 | 默认值 | 描述 |
---|---|---|
traefik_dir |
/etc/traefik |
traefik数据存储位置 |
traefik_hostname |
"{{ inventory_hostname }}" |
此实例的主机名 |
traefik_network |
traefik_proxy |
生成的网络名称 |
traefik_qs_send_anonymous_usage |
false |
是否发送匿名使用统计 |
traefik_qs_https |
false |
是否设置https端点 |
traefik_qs_https_redirect |
false |
是否设置重定向到https |
traefik_qs_https_le |
false |
是否使用tls设置letsencrypt(仅在启用https时) |
traefik_qs_https_le_mail |
未定义 | 用于letsencrypt的邮箱(必填) |
traefik_qs_log_level |
ERROR |
要应用的日志级别 |
traefik_container_name |
'traefik' |
容器名称 |
traefik_network_name |
'traefik_proxy' |
网络名称 |
traefik_network_ipam_subnet |
'172.16.1.0/24' |
子网 |
traefik_network_ipam_gateway |
'172.16.1.1' |
网关 |
traefik_network_ipam_iprange |
'172.16.1.0/24' |
IP范围 |
traefik_image |
'traefik' |
使用的镜像 |
traefik_add_volumes |
[] |
要挂载的附加卷 |
traefik_ports |
['80:80', '443:443'] |
共享的端口 |
traefik_labels |
{} |
要设置在traefik容器上的标签。 |
生成配置的默认名称为:
- 入口点:
http
https
- 提供商:
docker
- 证书解析器:
letsencrypt
深入配置
如前所述,此角色还允许你通过使用traefik yaml配置进行深入配置。可以使用以下变量:
名称 | 默认值 | 描述 |
---|---|---|
traefik_confkey_global |
未定义 | 查看文档 📑 |
traefik_confkey_serversTransport |
未定义 | 查看文档 📑 |
traefik_confkey_entryPoints |
未定义 | 查看文档 📑 |
traefik_confkey_providers |
未定义 | 查看文档 📑 |
traefik_confkey_api |
未定义 | 查看文档 📑 |
traefik_confkey_metrics |
未定义 | 查看文档 📑 |
traefik_confkey_ping |
未定义 | 查看文档 📑 |
traefik_confkey_log |
未定义 | 查看文档 📑 |
traefik_confkey_accessLog |
未定义 | 查看文档 📑 |
traefik_confkey_tracing |
未定义 | 查看文档 📑 |
traefik_confkey_hostResolver |
未定义 | 查看文档 📑 |
traefik_confkey_certificatesResolvers |
未定义 | 查看文档 📑 |
这些键在快速设置配置之后通过combine()
过滤器以非递归模式合并到配置中。这允许您根据需要添加配置选项。如果你想覆盖快速设置项,请使用它们的键(如上所示)。
与sbaerlocher/ansible.traefik的兼容性
此角色旨在继续sbaerlocher/ansible.traefik角色以支持traefik v2。为该角色设置的大多数变量在此角色中仍然有效,除了三个特殊情况,你必须使用_confkey_
变量重新创建自定义配置。这些情况在以下部分中进行了解释。
需要手动操作的变量
traefik_configuration_file
使用traefik_configuration_file
对你的安装没有影响。Traefik的配置在v2引入时发生了变化,且不向后兼容。请使用Traefik文档根据_confkey_
变量重新创建你的自定义配置。
traefik_api
Traefik v2中定义API的方式允许你使用多种不同的配置。为了简化,我们放弃了自动生成API配置,因为它与自定义配置无法简单合并,可能导致不可预见的副作用。
要在容器端口8080
上设置一个简单的不安全API,请使用以下配置(注意:这个例子是不安全的,请考虑在生产环境中保护你的API):
traefik_confkey_api:
insecure: true
dashboard: true # 使用此项启用仪表板
traefik_ports:
- '80:80'
- '443:443'
- '8080:8080'
这将自动在端口8080
上配置一个入口点。
traefik_ping
与API定义类似,ping定义通过多个不同的配置键允许自定义配置,使得自动生成配置变得不可行。
请查看有关ping的Traefik配置文档,查找你想要应用的配置。作为例子,看看以下配置,它将在端口8082
上暴露ping端点:
traefik_confkey_entryPoints:
ping:
address: ':8082'
traefik_confkey_ping:
entryPoint: 'ping'
traefik_ports:
- '80:80'
- '443:443'
- '8082:8082'