mdsketch.teleport
Ansible 角色: Teleport 节点服务
这是一个用于在基于 Debian 的系统上安装或更新 Teleport 节点服务和配置的 Ansible 角色。
适用于任何支持的架构,具体请参见可用的 Teleport 下载。
如果您添加了自己的 Teleport 配置文件模板,您可以运行任何您想要的节点服务(如 ssh、应用、数据库、Kubernetes)。
请查看 Teleport 配置文件的 文档 以获取更多信息,并确保其设置正确。
待办事项:
- 添加幂等性测试以验证 Teleport 是否正确更新(配置、服务和二进制文件)
- 添加变量模板测试
- 锁定 lint 工具的版本
- 调查在 Docker 容器中安装 Teleport 是否有用(目前不支持)
先决条件
需要一个正在运行的 Teleport 集群,以便您可以提供以下信息:
- 身份验证令牌(动态或静态)。示例:
tctl nodes add --ttl=5m --roles=node | grep "invite token:" | grep -Eo "[0-9a-z]{32}"
- CA 钉
- 身份验证服务器的地址
角色变量
以下是默认变量及其在 defaults/main.yml
中定义的默认值
teleport_version
要安装的 Teleport 版本。请参见 Teleport 下载 以获取可用版本。
teleport_architecture
将 teleport_architecture
更改为以下任何一个:
arm-bin
如果您在 ARMv7(32 位)设备上运行。arm64-bin
如果您在 ARM64/ARMv8(64 位)设备上运行。amd64-bin
如果您在 x86_64/AMD64 设备上运行。386-bin
如果您在 i386/Intel 设备上运行。
teleport_config_template
要使用的 Teleport 配置文件模板。默认是 templates/default_teleport.yaml.j2
。它包含一个基本配置,将启用 SSH 服务并添加一个显示节点正常运行时间的命令标签。
有许多 可用选项,您可以替换自己的模板并添加任何您想要的变量。
teleport_service_template
要使用的 Teleport 服务文件模板。默认是 templates/default_teleport.service.j2
。您可以替换自己的模板并添加任何您想要的变量。
teleport_ca_pin
用于 Teleport 配置的 CA 钉。这是可选的,但 推荐使用。
teleport_config_path
Teleport 配置文件的路径。默认是 /etc/teleport.yaml
。
teleport_auth_servers
要用于 Teleport 配置的身份验证服务器列表。上面示例作为默认值。
backup_teleport_config
在覆盖之前备份 Teleport 配置文件。默认是 yes
。有关更多信息,请参见 升级 Teleport。
teleport_control_systemd
默认是 yes
。控制该角色是否修改 Teleport 服务。
teleport_template_config
默认是 yes
。控制该角色是否修改 Teleport 配置文件。
升级 Teleport
运行角色时,它会检查已安装的版本是否与 teleport_version
中指定的版本匹配。如果不同,则会下载最新版本并进行安装。
在执行升级时,将创建当前配置文件 teleport_config_path
的备份,并在其位置生成新的配置文件模板。在这样做时,无需提供 teleport_auth_token
和 teleport_ca_pin
,因为它们会从现有配置文件中提取,并被模板化到新配置文件中。
这使您可以更新配置文件中的标签和命令等值,而无需存储身份验证令牌和 CA 钉。
此角色会在以下任何情况发生后重新加载 teleport.service
:
- 安装或更新 Teleport
- 更新 Teleport 配置文件
- 更新 Teleport 服务文件
依赖关系
无
示例剧本
例如,在节点上安装 Teleport:
- hosts: all
roles:
- mdsketch.teleport
vars:
# 可选的 ssh 标签
teleport_ssh_labels:
- k: "label_key"
v: "label_value"
teleport_auth_token: "超级机密身份验证令牌"
teleport_ca_pin: "不那么机密的 CA 钉"
teleport_auth_server: "身份验证服务器"
teleport_proxy_server: "代理服务器"
创建的 Teleport 配置到 /etc/teleport.yaml
---
version: v3
teleport:
auth_token: "超级机密身份验证令牌"
ca_pin: "不那么机密的 CA 钉"
auth_server: 身份验证服务器
proxy_server: 代理服务器
log:
output: stderr
severity: INFO
format:
output: text
diag_addr: ""
ssh_service:
enabled: "yes"
labels:
label_key: label_value
commands:
- name: hostname
command: [hostname]
period: 60m0s
- name: uptime
command: [uptime, -p]
period: 5m0s
- name: version
command: [teleport, version]
period: 60m0s
proxy_service:
enabled: "no"
https_keypairs: []
https_keypairs_reload_interval: 0s
acme: {}
auth_service:
enabled: "no"
许可
MIT / BSD
作者信息
此角色由 Matthew Draws 于 2021 年为 KPM Power 创建。
维护者
- Matthew Draws: mdsketch