rockandska.influxdb

ansible-role-influxdb

用于安装/配置 InfluxDB 的 Ansible 角色,基于 InfluxDB 二进制文件。
可在 Ansible Galaxy 上找到。

Ansible Galaxy:
Galaxy Score

Travis 构建 :
Build Status

远程主机要求

所有发行版

  • logrotate
  • python requests >= 1.0.0 (如果使用此角色提供的用户、数据库、保留策略管理)
  • python influxdb >= 0.9.0 (如果使用此角色提供的用户、数据库、保留策略管理)

Debian / Ubuntu

  • apt-transport-https
  • gpg-agent
  • ca-certificates

CentOS / RedHat

  • gnupg2

角色变量

默认变量位于 defaults/main.yml

---
###########
# 安装 #
###########
influxdb_version: 1.7.4

influxdb_rpm_url: "https://dl.influxdata.com/influxdb/releases/influxdb-{{ influxdb_version }}.x86_64.rpm"
influxdb_rpm_sha256: "93caa49159e76b3338abc191c85d46d134ac67697a0c7f874c937baa38dd6a5e"
influxdb_rpm_dest_path: "/usr/src"

influxdb_deb_url: "https://dl.influxdata.com/influxdb/releases/influxdb_{{ influxdb_version }}_amd64.deb"
influxdb_deb_sha256: "5488bd8889de7d45aa09cdccc845156e2d59442871ad6899d64d797e42f2888b"
influxdb_deb_dest_path: "/usr/src"

#################
# 自定义配置 #
#################
influxdb_vars_files: []

influxdb_config_tpl: etc/influxdb/influxdb.conf.j2
influxdb_config: {}

influxdb_systemd_override_tpl: etc/systemd/system/influxdb.service.d/override.conf.j2
influxdb_systemd_override: {}

influxdb_custom_logrotate_tpl: etc/logrotate.d/influxdb.j2
influxdb_custom_logrotate:

############
# API 用户 #
############
influxdb_management_hostname:
influxdb_management_port:
influxdb_management_validate_certs:
influxdb_management_proxies:
influxdb_management_login_username:
influxdb_management_login_password:
influxdb_management_retries:
influxdb_management_ssl:
influxdb_management_timeout:
influxdb_management_udp_port:
influxdb_management_use_udp:

#########
# 用户 #
#########
influxdb_users_to_create: []
influxdb_users_to_delete: []

#############
# 数据库 #
#############
influxdb_databases_to_create: []
influxdb_databases_to_delete: []

############
# 策略 #
############
influxdb_retention_policies_to_create: []

#########
# 调试 #
#########
influxdb_hide_log: true

详细信息

  • influxdb_version

  • influxdb_rpm_url

    • rpm 软件包的 URL
  • influxdb_rpm_sha256

    • 验证 rpm 软件包完整性的 sha256
    • 在 InfluxDB 下载页面的最新版本中提供
  • influxdb_rpm_dest_path

    • 下载 rpm 软件包的路径
  • influxdb_deb_url

    • deb 软件包的 URL
  • influxdb_deb_sha256

    • 验证 deb 软件包完整性的 sha256
    • 在 InfluxDB 下载页面的最新版本中提供
  • influxdb_deb_dest_path

    • 下载 deb 软件包的路径
  • influxdb_vars_files

    • 用于覆盖默认变量的 vars 文件列表(如有需要)
    • 如果使用相对路径,请将这些文件放在 playbook 旁边的 vars 目录中
    • 示例:
      influxdb_vars_files:
        - settings.yml
      
  • influxdb_config_tpl

    • influxdb 配置模板的路径
    • 如果你想使用自己的模板
      • 请在 playbook 旁边的 templates 目录中添加你的模板
      • 使用不同于默认的路径
  • influxdb_config

    • 表示要应用的自定义 influxdb 配置的字典

    • 特殊键用双引号括起来(示例: "[meta]")

    • 如果使用自定义配置,需根据 influxdb/#12140 应用某些最小部分,以下示例中显示

    • 示例:

      influxdb_config:
      # 全局配置部分 'key: value'
        reporting-disabled: true
      # 最小必需部分 'section: { key: value, key: value }'
        "[meta]":
          dir: /var/lib/influxdb/meta
        "[data]":
          dir: /var/lib/influxdb/data
          wal-dir: /var/lib/influxdb/wal
      # 其他部分格式为 'section: { key: value, key: value }'
        "[http]":
          auth-enabled: true
        "[[graphite]]":
          enable: true
          batch-size: 5000
      
  • influxdb_systemd_override_tpl

    • influxdb systemd 覆盖模板的路径
    • 如果你想使用自己的模板
      • 请在 playbook 旁边的 templates 目录中添加你的模板
      • 使用不同于默认的路径
  • influxdb_systemd_override

    • 表示 systemd 覆盖配置的字典
    • 第一级用于 ini 部分
    • 第二级用于键/值
    • 示例:
      influxdb_systemd_override:
        Service:
          LimitNOFILE: 30000
      # 将导致 systemd 覆盖文件如下:
      # [Service]
      # LimitNOFILE=30000
      
  • influxdb_custom_logrotate_tpl

    • influxdb 自定义 logrotate 模板的路径
    • 如果你想使用自己的模板
      • 请在 playbook 旁边的 templates 目录中添加你的模板
      • 使用不同于默认的路径
  • influxdb_custom_logrotate

    • 一个多行字符串,包含 influxdb 日志的 logrotate 选项

    • 将替换默认配置

    • /!\ 请注意,如果您用自定义配置替换默认 logrotate 配置,应用的配置将持续存在,即使您取消设置该变量

    • 示例:

      influxdb_custom_logrotate: |
        weekly
        missingok
        rotate 40
        compress
        notifempty
      # 将导致 logrotate 配置文件如下:
      # /var/log/influxdb/*.log {
      #   weekly
      #   missingok
      #   rotate 40
      #   compress
      #   notifempty
      # }
      
  • influxdb_management_hostname

    • 默认从 influxdb_{user,policy,retention_policy} 模块值
    • API 调用的主机名
  • influxdb_management_port

    • 默认从 influxdb_{user,policy,retention_policy} 模块值
    • API 调用的 http 端口
  • influxdb_management_validate_certs

    • 默认从 influxdb_{user,policy,retention_policy} 模块值
    • 是否验证 API 调用的 SSL 证书
  • influxdb_management_proxies

    • 默认从 influxdb_{user,policy,retention_policy} 模块值
    • 用于 API 调用的 HTTP(S) 代理
  • influxdb_management_login_username

    • 用于 API 调用的用户名
    • 如果 influxdb_config['[http]']['auth-enabled'] 被设置,则为必填项
    • 该用户仅创建一次,且需为 非现有用户
    • 如果你希望在创建后更改用户,请使用已存在的 admin 用户。
  • influxdb_management_login_password

    • 用于 API 调用的密码
    • 如果 influxdb_config['[http]']['auth-enabled'] 被设置,则为必填项
    • 如果希望在 admin 用户创建后更改密码:
      • 请先通过 CLI 更改密码,然后再在此处更改
      • 另外,你可以在 influxdb_users_to_create 中更改,但请注意如果仍有其他用户需要检查,将会抛出错误,第二次运行 playbook 时应能正常工作。
  • influxdb_management_retries

    • 默认从 influxdb_{user,policy,retention_policy} 模块值
    • API 调用的重试次数
  • influxdb_management_ssl

    • 默认从 influxdb_{user,policy,retention_policy} 模块值
    • 用于 API 调用的 SSL
  • influxdb_management_timeout

    • 默认从 influxdb_{user,policy,retention_policy} 模块值
    • API 调用的超时时间
  • influxdb_management_udp_port

    • 默认从 influxdb_{user,policy,retention_policy} 模块值
    • 用于 API 调用的 UDP 端口
  • influxdb_management_use_udp

    • 默认从 influxdb_{user,policy,retention_policy} 模块值
    • 是否在 API 调用中使用 UDP
  • influxdb_users_to_create

    • 创建用户的字典列表

    • 请参考 ansible 文档 获取必填选项和版本兼容性

    • 权限授予由此角色提供的自定义库提供,并从此 PR 更新

    • 缺少 grants 键将删除指定用户的所有 GRANTS

    • 示例:

      influxdb_users_to_create:
        - user_name: test
          user_password: test
          grants:
            - database: db_test
              privilege: READ  
        - user_name: test2
          user_password: test2
          admin: true  
      
  • influxdb_users_to_delete

    • 要删除的用户列表
    • 示例:
      influxdb_users_to_delete:
        - test
      
  • influxdb_retention_policies_to_create

    • 要创建的保留策略列表
    • 请参考 ansible 文档 获取必填选项和版本兼容性
    • 示例:
      influxdb_retention_policies_to_create:
        - database_name: db_test
          policy_name: test
          duration: 1h
          replication: 1
      
  • influxdb_databases_to_create

    • 要创建的数据库列表
    • 示例:
    influxdb_databases_to_create:
      - db_test
    
  • influxdb_databases_to_delete

    • 要删除的数据库列表
    • 示例:
    influxdb_databases_to_delete:
      - db_test
    
  • influxdb_retention_policies_to_create

    • 要创建的保留策略参数字典列表
    • 尚不支持删除策略
    • 示例:
    influxdb_retention_policies_to_create:
      - database_name: db_test
        policy_name: test
        duration: 1h
        replication: 1  
    
  • influxdb_hide_log

    • 默认值: true
    • 不显示 API 调用的日志以避免泄露敏感信息
    • 调试时将其设置为 false

示例 Playbook

- hosts: influxdb
  roles:
    - rockandska.influxdb

本地测试

本地测试角色的首选方法是使用 Docker 和 molecule(v2.x)。你需要在系统上安装 Docker。请查看 "入门" 以获取适合你系统的 Docker 包。 我们使用 tox 来简化在多个 ansible 版本上的测试过程。要安装 tox,请执行:

$ sudo pip install tox
# 或者
$ pip install --user tox

要在所有 ansible 版本上运行测试(警告:这可能需要一些时间)

$ tox

要在自定义环境上运行自定义 molecule 命令,仅使用默认测试场景:

$ tox -e py27-ansible25 -- molecule test -s default

有关 molecule 的更多信息,请参阅他们的 文档

如果希望在远程 Docker 主机上运行测试,只需在运行 tox 测试之前指定 DOCKER_HOST 变量。

许可证

BSD

关于项目

InfluxDB installation / configuration

安装
ansible-galaxy install rockandska.influxdb
许可证
Unknown
下载
124
拥有者