mdsketch.teleport

Ansible 角色: Teleport 节点服务

Ansible Galaxy Ansible Lint molecule_tests

这是一个用于在基于 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_tokenteleport_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 创建。

维护者

关于项目

An ansible role to install or update the teleport node service and teleport config on Debian based systems.

安装
ansible-galaxy install mdsketch.teleport
许可证
mit
下载
19.6k
拥有者