DataDog.datadog
Datadog Agent Ansible 角色
Datadog Agent Ansible 角色安装并配置 Datadog Agent 和集成。
Ansible 角色与 Ansible 集合
Datadog Agent Ansible 角色通过两种不同的方式提供:
- 作为 Datadog 集合的一部分,名称为 datadog.dd,可在 Ansible Galaxy 中访问(推荐)。
- 作为独立角色,名称为 datadog.datadog,可在 Ansible Galaxy 中访问(旧版)。
角色的 4 版本和集合的 5 版本默认安装 Datadog Agent v7。
设置
请注意,本文件中的安装说明描述的是独立 Datadog 角色的安装。有关 Datadog 集合的安装说明,请参阅 集合的 README 文件。配置变量在独立角色和通过集合访问的角色中是相同的。
要求
- 需要 Ansible v2.6 及以上版本。 
- 支持大多数 Debian 和 RHEL 基础的 Linux 发行版、macOS 和 Windows。 
- 当使用 Ansible 2.10 及以上版本管理 Windows 主机时,需要安装 - ansible.windows集合:- ansible-galaxy collection install ansible.windows
- 当使用 Ansible 2.10 及以上版本管理 openSUSE/SLES 主机时,需要安装 - community.general集合:- ansible-galaxy collection install community.general
安装
从 Ansible Galaxy 在你的 Ansible 服务器上安装 Datadog 角色:
ansible-galaxy install datadog.datadog
要在主机上部署 Datadog Agent,请将 Datadog 角色和你的 API 密钥添加到你的剧本中:
- hosts: servers
  roles:
    - { role: datadog.datadog, become: yes }
  vars:
    datadog_api_key: "<YOUR_DD_API_KEY>"
API 密钥是必需的,缺少它会导致角色失败。如果你希望通过其他方式提供它,而不是由 Ansible 进行管理,请指定占位符密钥,并在稍后替换该密钥。
角色变量
这些变量在安装 Datadog Agent 时提供额外配置。它们应该在你的剧本的 vars 部分中指定。
| 变量名 | 描述 | 
|---|---|
| datadog_api_key | 你的 Datadog API 密钥。此变量从 4.21 开始为必需。 | 
| datadog_site | 要发送 Agent 数据的 Datadog 接收站点。默认值为 datadoghq.com,设置为datadoghq.eu以将数据发送到欧盟站点。此选项仅在 Agent 版本 >= 6.6.0 时可用。 | 
| datadog_agent_flavor | 为 RPI 的物联网安装覆盖默认的 Debian / RedHat 包。默认值为 "datadog-agent",用于 RPI 时使用 "datadog-iot-agent"。 | 
| datadog_agent_version | 要安装的 Agent 固定版本(可选,但推荐),例如: 7.16.0。如果使用datadog_agent_version,则不需要设置datadog_agent_major_version。 | 
| datadog_agent_major_version | 要安装的 Agent 的主要版本。可选值为 5、6 或 7(默认)。如果设置了 datadog_agent_version,则优先使用它,否侧会安装指定主要版本的最新版本。 | 
| datadog_checks | Agent 检查的 YAML 配置将放入: - /etc/datadog-agent/conf.d/<check_name>.d/conf.yaml用于 Agent v6 和 v7,- /etc/dd-agent/conf.d用于 Agent v5。 | 
| datadog_disable_untracked_checks | 设置为 true以删除所有不在datadog_checks和datadog_additional_checks中的检查。 | 
| datadog_additional_checks | 列出如果设置 datadog_disable_untracked_checks为true,则不会删除的额外检查。 | 
| datadog_disable_default_checks | 设置为 true以删除所有默认检查。 | 
| datadog_config | 为 Datadog Agent 设置配置。角色将配置写入 根据操作系统的正确位置。 | 
| datadog_config_ex | (可选)额外的 INI 部分,将放入 /etc/dd-agent/datadog.conf(仅适用于 Agent v5)。 | 
| datadog_apt_repo | 覆盖默认的 Datadog apt仓库。如果仓库元数据使用 Datadog 的签名密钥签名,请确保使用signed-by选项:deb [signed-by=/usr/share/keyrings/datadog-archive-keyring.gpg] https://yourrepo。 | 
| datadog_apt_cache_valid_time | 覆盖默认的 apt 缓存过期时间(默认为 1 小时)。 | 
| datadog_apt_key_url_new | 覆盖获取 Datadog apt密钥的位置(已弃用的datadog_apt_key_url变量引用的是已过期的密钥,已从角色中删除)。该 URL 应为包含382E94DE、F14F620E和C0962C7D的 GPG 密钥环。 | 
| datadog_yum_repo_config_enabled | 设置为 false以防止配置 Datadogyum仓库(默认为true)。警告:这会停用 GPG 密钥的自动更新。 | 
| datadog_yum_repo | 覆盖默认的 Datadog yum仓库。 | 
| datadog_yum_repo_proxy | 在 Datadog yum仓库配置中设置代理 URL。 | 
| datadog_yum_repo_proxy_username | 在 Datadog yum仓库配置中设置代理用户名。 | 
| datadog_yum_repo_proxy_password | 在 Datadog yum仓库配置中设置代理密码。 | 
| datadog_yum_repo_gpgcheck | 覆盖默认的 repo_gpgcheck值(为空)。如果为空,则在未使用自定义datadog_yum_repo并且系统不是 RHEL/CentOS 8.1 时动态设置为yes,否则设置为no。注意:Agent 5 的 repodata 签名验证始终关闭。 | 
| datadog_yum_gpgcheck | 覆盖默认的 gpgcheck值(yes) - 使用no来关闭软件包 GPG 签名验证。 | 
| datadog_yum_gpgkey | 在版本 4.18.0 中移除了 覆盖用于验证 Agent v5 和 v6(最多 6.13)软件包的 Datadog yum密钥的默认 URL(密钥 ID 为4172A230)。 | 
| datadog_yum_gpgkey_e09422b3 | 覆盖用于验证 Agent v6.14+ 软件包的 Datadog yum密钥的默认 URL(密钥 ID 为E09422B3)。 | 
| datadog_yum_gpgkey_e09422b3_sha256sum | 覆盖 datadog_yum_gpgkey_e09422b3密钥的默认校验和。 | 
| datadog_zypper_repo | 覆盖默认的 Datadog zypper仓库。 | 
| datadog_zypper_repo_gpgcheck | 覆盖默认的 repo_gpgcheck值(为空)。如果为空,则在未使用自定义datadog_zypper_repo时动态设置为yes,否则设置为no。注意:Agent 5 的 repodata 签名验证始终关闭。 | 
| datadog_zypper_gpgcheck | 覆盖默认的 gpgcheck值(yes) - 使用no来关闭软件包 GPG 签名验证。 | 
| datadog_zypper_gpgkey | 在版本 4.18.0 中移除了 覆盖用于验证 Agent v5 和 v6(最多 6.13)软件包的 Datadog zypper密钥的默认 URL(密钥 ID 为4172A230)。 | 
| datadog_zypper_gpgkey_sha256sum | 在版本 4.18.0 中移除了 覆盖 datadog_zypper_gpgkey密钥的默认校验和。 | 
| datadog_zypper_gpgkey_e09422b3 | 覆盖用于验证 Agent v6.14+ 软件包的 Datadog zypper密钥的默认 URL(密钥 ID 为E09422B3)。 | 
| datadog_zypper_gpgkey_e09422b3_sha256sum | 覆盖 datadog_zypper_gpgkey_e09422b3密钥的默认校验和。 | 
| datadog_agent_allow_downgrade | 设置为 yes以允许降级 Agent(谨慎使用,详情见defaults/main.yml)。注意:在 Windows 平台上不支持降级。 | 
| datadog_enabled | 设置为 false以防止datadog-agent服务启动(默认为true)。 | 
| datadog_additional_groups | 除了一个列表,或者一个包含额外组的逗号分隔字符串,用于 datadog_user(仅限 Linux)。 | 
| datadog_windows_ddagentuser_name | Windows 用户的名称,以 <domain>\<user>格式创建/使用(仅限 Windows)。 | 
| datadog_windows_ddagentuser_password | 用于创建用户和/或注册服务的密码(仅限 Windows)。 | 
| datadog_apply_windows_614_fix | 是否下载并应用 datadog_windows_614_fix_script_url引用的文件(仅限 Windows)。有关更多详情,请参见 此链接。可以将此设置为false,假设你的主机不运行 Datadog Agent 6.14.*。 | 
| datadog_macos_user | 要在其下运行 Agent 的用户名称。用户必须存在,它不会自动创建。默认值为 ansible_user(仅限 macOS)。 | 
| datadog_macos_download_url | 覆盖要下载 DMG 安装程序的 URL(仅限 macOS)。 | 
| datadog_apm_instrumentation_enabled | 配置 APM 插件。可能值为: - host: Agent 和你的服务在同一主机上运行。- docker: Agent 和你的服务在同一主机上的不同 Docker 容器中运行。- all: 同时支持host和docker的所有之前场景。 | 
| datadog_apm_instrumentation_libraries | 如果启用了 host或docker注入,则安装的 APM 库列表(默认为["java", "js", "dotnet", "python", "ruby"])。你可以在 此链接 找到可用值。 | 
| datadog_apm_instrumentation_docker_config | 覆盖 Docker APM 配置。有关更多详情,请参见 此链接。 | 
| datadog_remote_updates | 通过 datadog-installer 启用远程安装和更新。 | 
集成
要配置 Datadog 集成(检查),请在 datadog_checks 部分添加条目。第一层键是检查的名称,值是 YAML 有效负载以写入配置文件。下面提供了示例。
要安装或删除集成,请参阅 datadog_integration 部分。
进程检查
要为 process 检查定义两个实例,请使用以下配置。这会创建相应的配置文件:
- Agent v6 & v7: /etc/datadog-agent/conf.d/process.d/conf.yaml
- Agent v5: /etc/dd-agent/conf.d/process.yaml
    datadog_checks:
      process:
        init_config:
        instances:
          - name: ssh
            search_string: ['ssh', 'sshd']
          - name: syslog
            search_string: ['rsyslog']
            cpu_check_interval: 0.2
            exact_match: true
            ignore_denied_access: true
自定义检查
要配置自定义检查,请使用以下配置。这会创建相应的配置文件:
- Agent v6 & v7: /etc/datadog-agent/conf.d/my_custom_check.d/conf.yaml
- Agent v5: /etc/dd-agent/conf.d/my_custom_check.yaml
    datadog_checks:
      my_custom_check:
        init_config:
        instances:
          - some_data: true
自定义 Python 检查
要将 Python 检查传递给剧本,请使用以下配置。
该配置要求 Datadog play 和 role 成为较大剧本的一部分,其中传递的值是实际任务的相对文件路径,用于 Linux 或 Windows。
这仅适用于 Agent v6 或更高版本。
键应是检查目录中创建的文件名称 checks.d/{{ item }}.py:
    datadog_checks:
      my_custom_check:
        init_config:
        instances:
          - some_data: true
    datadog_custom_checks:
      my_custom_check: '../../../custom_checks/my_custom_check.py'
自动发现
使用自动发现时,YAML 上没有预处理或后处理。这意味着每个 YAML 部分都添加到最终配置文件中,包括 autodiscovery identifiers。
下面的示例通过 自动发现 配置 PostgreSQL 检查:
    datadog_checks:
      postgres:
        ad_identifiers:
          - db-master
          - db-slave
        init_config:
        instances:
          - host: %%host%%
            port: %%port%%
            username: username
            password: password
在 Datadog 文档中了解更多关于 自动发现。
跟踪
要使用 Agent v6 或 v7 启用跟踪数据收集,请使用以下配置:
datadog_config:
  apm_config:
    enabled: true
要使用 Agent v5 启用跟踪数据收集,请使用以下配置:
datadog_config:
  apm_enabled: "true" # 必须为字符串
实时进程
要使用 Agent v6 或 v7 启用 实时进程 收集,请使用以下配置:
datadog_config:
  process_config:
    enabled: "true" # 类型:字符串
enabled 的可能值为:"true"、"false"(仅容器收集)或 "disabled"(完全禁用实时进程)。
变量
对于实时进程,以下变量可用:
- scrub_args: 启用从进程命令行中擦除敏感参数(默认为- true)。
- custom_sensitive_words: 扩展命令行清理程序使用的默认敏感词列表。
系统探针
系统探针通过 system_probe_config 变量进行配置。嵌套在下面的任何变量都将写入 system-probe.yaml 中的 system_probe_config 部分。
网络性能监控(NPM)通过 network_config 变量配置。任何嵌套在下面的变量都将写入 system-probe.yaml 中的 network_config 部分。
云工作负载安全(CWS)通过 runtime_security_config 变量配置。任何嵌套在下面的变量都将写入 system-probe.yaml 和 security-agent.yaml 中的 runtime_security_config 部分。
统一服务监控(USM)通过 service_monitoring_config 变量配置。任何嵌套在下面的变量都将写入 system-probe.yaml 中的 service_monitoring_config 部分。
合规性通过 compliance_config 变量进行配置。任何嵌套在下面的变量都将写入 security-agent.yaml 中的 compliance_config 部分。
Windows 用户注意:NPM 在 Windows 上支持 Agent v6.27+ 和 v7.27+。它作为可选组件进行提供,只有在安装或升级 Agent 时将 network_config.enabled 设置为 true 时才会安装。因此,现有安装可能需要卸载并重新安装 Agent 一次才能安装 NPM 组件,除非在同时升级 Agent。
示例配置
datadog_config:
  process_config:
    enabled: "true" # 类型:字符串
    scrub_args: true
    custom_sensitive_words: ['consul_token','dd_api_key']
system_probe_config:
  sysprobe_socket: /opt/datadog-agent/run/sysprobe.sock
network_config:
  enabled: true
service_monitoring_config:
  enabled: true
runtime_security_config:
  enabled: true
注意:此配置适用于 Agent 6.24.1+ 和 7.24.1+。对于旧版本的 Agent,请参阅 网络性能监控 文档以了解如何启用系统探针。
在 Linux 上,一旦完成此修改,若你的 Agent 版本低于 6.18.0 或 7.18.0,请按照以下步骤操作:
- 启动系统探针: sudo service datadog-agent-sysprobe start注意:如果系统中没有服务包装器,请改为运行此命令:sudo initctl start datadog-agent-sysprobe。
- 重启 Agent: sudo service datadog-agent restart。
- 启用系统探针在启动时启动: sudo service enable datadog-agent-sysprobe。
有关手动设置,请参阅 NPM 文档。
Agent v5
要使用 Agent v5 启用 实时进程 收集,请使用以下配置:
datadog_config:
  process_agent_enabled: true
datadog_config_ex:
  process.config:
    scrub_args: true
    custom_sensitive_words: "<FIRST_WORD>,<SECOND_WORD>"
版本
默认情况下,当前主要版本的 Datadog Ansible 角色安装 Agent v7。变量 datadog_agent_version 和 datadog_agent_major_version 可用于控制安装的 Agent 版本。
对于 v4+ 的此角色,当使用 datadog_agent_version 钉住特定 Agent 版本时,角色会派生每个操作系统版本名称,以遵从支持的操作系统的版本命名方案,例如:
- 1:7.16.0-1针对 Debian 和 SUSE 基础
- 7.16.0-1针对基于 RedHat 的
- 7.16.0-1针对 macOS
- 7.16.0针对 Windows。
这使得在同一次 Ansible 运行中可以针对运行不同操作系统的主机,例如:
| 提供 | 安装 | 系统 | 
|---|---|---|
| datadog_agent_version: 7.16.0 | 1:7.16.0-1 | Debian 和 SUSE 基础 | 
| datadog_agent_version: 7.16.0 | 7.16.0-1 | 基于 RedHat 的 | 
| datadog_agent_version: 7.16.0 | 7.16.0-1 | macOS | 
| datadog_agent_version: 7.16.0 | 7.16.0 | Windows | 
| datadog_agent_version: 1:7.16.0-1 | 1:7.16.0-1 | Debian 和 SUSE 基础 | 
| datadog_agent_version: 1:7.16.0-1 | 7.16.0-1 | 基于 RedHat 的 | 
| datadog_agent_version: 1:7.16.0-1 | 7.16.0 | Windows | 
注意:如果未提供版本,则角色会使用 1 作为纪元和 1 作为发布号。
Agent v5(旧版本):
Datadog Ansible 角色为 Linux 仅提供对 Datadog Agent v5 的支持。要安装 Agent v5,请使用 datadog_agent_major_version: 5 安装最新版本的 Agent v5,或将 datadog_agent_version 设置为特定版本的 Agent v5。 注意:datadog_agent5 变量已过时并已被移除。
仓库
Linux
当未设置变量 datadog_apt_repo、datadog_yum_repo 和 datadog_zypper_repo 时,将使用 datadog_agent_major_version 中设置的主要版本的官方 Datadog 仓库:
| # | 默认 apt 仓库 | 默认 yum 仓库 | 默认 zypper 仓库 | 
|---|---|---|---|
| 5 | deb https://apt.datadoghq.com stable main | https://yum.datadoghq.com/rpm | https://yum.datadoghq.com/suse/rpm | 
| 6 | deb https://apt.datadoghq.com stable 6 | https://yum.datadoghq.com/stable/6 | https://yum.datadoghq.com/suse/stable/6 | 
| 7 | deb https://apt.datadoghq.com stable 7 | https://yum.datadoghq.com/stable/7 | https://yum.datadoghq.com/suse/stable/7 | 
要覆盖默认行为,请将这些变量设置为非空字符串。
如果你先前使用过 Agent v5 变量,请使用下面的 新 变量,并将 datadog_agent_major_version 设置为 5 或将 datadog_agent_version 钉住到特定 Agent v5 版本。
| 旧 | 新 | 
|---|---|
| datadog_agent5_apt_repo | datadog_apt_repo | 
| datadog_agent5_yum_repo | datadog_yum_repo | 
| datadog_agent5_zypper_repo | datadog_zypper_repo | 
自 4.9.0 版本以来,已删除 use_apt_backup_keyserver 变量,因为 APT 密钥来自 https://keys.datadoghq.com。
Windows
当未设置变量 datadog_windows_download_url 时,将使用与 datadog_agent_major_version 相对应的官方 Windows MSI 包:
| Agent 版本 | 默认 Windows MSI 包 URL | 
|---|---|
| 6 | https://s3.amazonaws.com/ddagent-windows-stable/datadog-agent-6-latest.amd64.msi | 
| 7 | https://s3.amazonaws.com/ddagent-windows-stable/datadog-agent-7-latest.amd64.msi | 
要覆盖默认行为,请将此变量设置为非空字符串。
macOS
当未设置变量 datadog_macos_download_url 时,将使用与 datadog_agent_major_version 相对应的官方 macOS DMG 包:
| Agent 版本 | 默认 macOS DMG 包 URL | 
|---|---|
| 6 | https://install.datadoghq.com/datadog-agent-6-latest.dmg | 
| 7 | https://install.datadoghq.com/datadog-agent-7-latest.dmg | 
要覆盖默认行为,请将此变量设置为非空字符串。
升级
要从 Agent v6 升级到 v7,请使用 datadog_agent_major_version: 7 安装最新版本或将 datadog_agent_version 设置为特定版本的 Agent v7。使用类似逻辑从 Agent v5 升级到 v6。
集成安装
适用于 Agent v6.8+
使用 datadog_integration 资源安装特定版本的 Datadog 集成。请记住,Agent 已经安装了 核心集成 。此命令对于在不升级整个 Agent 的情况下升级特定集成非常有用。有关更多详情,请参见 集成管理。
如果要配置集成,请参阅 datadog_checks 部分。
可用操作:
- install: 安装特定版本的集成。
- remove: 移除集成。
第三方集成
Datadog 社区 和 Datadog 市场 集成可以用 datadog_integration 资源安装。注意:这些集成被视为“第三方”,因此需要设置 third_party: true,请参见下面的示例。
语法
  datadog_integration:
    <INTEGRATION_NAME>:
      action: <ACTION>
      version: <VERSION_TO_INSTALL>
要安装第三方集成,请将 third_party 设置为 true:
  datadog_integration:
    <INTEGRATION_NAME>:
      action: <ACTION>
      version: <VERSION_TO_INSTALL>
      third_party: true
示例
以下示例安装版本 1.11.0 的 ElasticSearch 集成并移除 postgres 集成。
 datadog_integration:
   datadog-elastic:
     action: install
     version: 1.11.0
   datadog-postgres:
     action: remove
要查看可用的 Datadog 集成版本,请参阅其 CHANGELOG.md 文件在 integrations-core 仓库中。
降级
要降级到先前版本的 Agent:
- 将 datadog_agent_version设置为特定版本,例如:5.32.5。
- 将 datadog_agent_allow_downgrade设置为yes。
注意:
- 不支持 Windows 平台的降级。
剧本
以下是一些示例剧本,可帮助你使用 Datadog Ansible 角色。
以下示例将数据发送到 Datadog US(默认),启用日志、NPM,并配置一些检查。
- hosts: servers
  roles:
    - { role: datadog.datadog, become: yes }
  vars:
    datadog_api_key: "<YOUR_DD_API_KEY>"
    datadog_agent_version: "7.16.0"
    datadog_config:
      tags:
        - "<KEY>:<VALUE>"
        - "<KEY>:<VALUE>"
      log_level: INFO
      apm_config:
        enabled: true
      logs_enabled: true  # 在 Agent v6 和 v7 中可用
    datadog_checks:
      process:
        init_config:
        instances:
          - name: ssh
            search_string: ['ssh', 'sshd']
          - name: syslog
            search_string: ['rsyslog']
            cpu_check_interval: 0.2
            exact_match: true
            ignore_denied_access: true
      ssh_check:
        init_config:
        instances:
          - host: localhost
            port: 22
            username: root
            password: <YOUR_PASSWORD>
            sftp_check: True
            private_key_file:
            add_missing_keys: True
      nginx:
        init_config:
        instances:
          - nginx_status_url: http://example.com/nginx_status/
            tags:
              - "source:nginx"
              - "instance:foo"
          - nginx_status_url: http://example2.com:1234/nginx_status/
            tags:
              - "source:nginx"
              - "<KEY>:<VALUE>"
        # 日志收集在 Agent 6 和 7 中可用
        logs:
          - type: file
            path: /var/log/access.log
            service: myapp
            source: nginx
            sourcecategory: http_web_access
          - type: file
            path: /var/log/error.log
            service: nginx
            source: nginx
            sourcecategory: http_web_access
    # datadog_integration 在 Agent 6.8+ 中可用
    datadog_integration:
      datadog-elastic:
        action: install
        version: 1.11.0
      datadog-postgres:
        action: remove
    network_config:
      enabled: true
Agent v6
此示例安装最新的 Agent v6:
- hosts: servers
  roles:
    - { role: datadog.datadog, become: yes }
  vars:
    datadog_agent_major_version: 6
    datadog_api_key: "<YOUR_DD_API_KEY>"
配置站点
如果使用默认 datadoghq.com 以外的站点,请将 datadog_site 变量设置为适当的 URL(例如:datadoghq.eu, us3.datadoghq.com)。
以下示例将数据发送到欧盟站点:
- hosts: servers
  roles:
    - { role: datadog.datadog, become: yes }
  vars:
    datadog_site: "datadoghq.eu"
    datadog_api_key: "<YOUR_DD_API_KEY>"
Windows
在 Windows 上,去掉 become: yes 选项,以免角色失败。以下是使示例剧本在 Windows 主机上正常工作的两种方法:
清单文件
使用清单文件是推荐的方法。为每个 Windows 主机设置 ansible_become 选项为 no:
[servers]
linux1 ansible_host=127.0.0.1
linux2 ansible_host=127.0.0.2
windows1 ansible_host=127.0.0.3 ansible_become=no
windows2 ansible_host=127.0.0.4 ansible_become=no
为了避免对所有 Windows 主机重复相同的配置,可以将它们分组,然后在组级别设置变量:
[linux]
linux1 ansible_host=127.0.0.1
linux2 ansible_host=127.0.0.2
[windows]
windows1 ansible_host=127.0.0.3
windows2 ansible_host=127.0.0.4
[windows:vars]
ansible_become=no
剧本文件
另外,如果你的剧本仅在 Windows 主机上运行,则在剧本文件中使用以下内容:
- hosts: servers
  roles:
    - { role: datadog.datadog }
  vars:
    ...
注意:如果在 Linux 主机上会失败的配置。仅在剧本是特定于 Windows 主机时使用此配置。否则,请使用 清单文件方法。
卸载
在 Windows 上,可以通过在你的 Ansible 角色中使用以下代码来卸载 Agent:
- name: 检查 Datadog Agent 是否安装
  win_shell: |
    (@(Get-ChildItem -Path "HKLM:SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" -Recurse) | Where {$_.GetValue("DisplayName") -like "Datadog Agent" }).PSChildName
  register: agent_installed_result
- name: 设置 Datadog Agent 安装事实
  set_fact:
    agent_installed: "{{ agent_installed_result.stdout | trim }}"
- name: 卸载 Datadog Agent
  win_package:
    product_id: "{{ agent_installed }}"
    state: absent
  when: agent_installed != ""
故障排除
Debian stretch
注意: 此信息适用于 4.9.0 之前版本的角色。从 4.9.0 开始,角色不再使用 apt_key 模块。
在 Debian Stretch 上,角色使用的 apt_key 模块需要额外的系统依赖项才能正常工作。该依赖项(dirmngr)并未由该模块提供。将以下配置添加到你的剧本以使用现有角色:
---
- hosts: all
  pre_tasks:
    - name: Debian Stretch 需要 dirmngr 软件包以使用 apt_key
      become: yes
      apt:
        name: dirmngr
        state: present
  roles:
    - { role: datadog.datadog, become: yes }
  vars:
    datadog_api_key: "<YOUR_DD_API_KEY>"
CentOS 6/7 使用 Python 3 解释器和 Ansible 2.10.x 或更低版本
角色用于在基于 CentOS 的主机上安装 Agent 的 yum Python 模块仅在 使用 Ansible 2.10.x 或更早版本时可用。如果使用,则必须使用 dnf 包管理器。
然而,dnf 和 dnf Python 模块在 CentOS 8 之前的基于 CentOS 的主机上默认未安装。在这种情况下,当使用 Python 3 解释器时,无法安装 Agent。
当检测到此情况时,角色会提前失败以表明安装 Agent 时需要 Ansible 2.11+ 或 Python 2 解释器。
要绕过此早期故障检测(例如,如果在主机上可用 dnf 和 python3-dnf 软件包),请将 datadog_ignore_old_centos_python3_error 变量设置为 true。
Windows
由于 Agent 版本 6.14.0 和 6.14.1 在 Windows 上存在严重错误,因此阻止安装这些版本(从版本 3.3.0 的此角色开始)。
注意:如果将 datadog_agent_version 设置为 6.14.0 或 6.14.1,Ansible 在 Windows 上会失败。请使用 6.14.2 或更高版本。
如果你正在从 6.14.0 或 6.14.1 升级到 Windows,请按照以下步骤操作:
- 将当前的 datadog.datadogAnsible 角色升级到最新版本(>=3.3.0)。
- 将 datadog_agent_version设置为6.14.2或更高(默认设置为最新)。
详细信息请参见 Windows 上 Datadog Agent 6.14.0 和 6.14.1 的卸载程序中的严重错误。
Ubuntu 20.04 由于 service_facts 导致的错误
在 Ubuntu 20.04 上运行 service_facts 模块会导致以下错误:
localhost | FAILED! => {
    "changed": false,
    "msg": "从 systemd list-unit-files 检测到的输出格式不正确:accounts-daemon.service                    enabled         enabled      "
}
要修复此问题,请 将 Ansible 更新到 v2.9.8 或更高版本。
缺少 API 密钥
从角色 4.21 开始,API 密钥是角色继续运行所必需的。
如果你需要通过 Ansible 安装 Agent 但不想指定 API 密钥(例如,如果你将其集成到容器/VM 映像中),你可以:
- 指定一个虚拟 API 密钥,随后再替换它
- 禁用托管配置(datadog_manage_config: false)
ansible-galaxy install DataDog.datadog