rockandska.influxdb
ansible-role-influxdb
用于安装/配置 InfluxDB 的 Ansible 角色,基于 InfluxDB 二进制文件。
可在 Ansible Galaxy 上找到。
Ansible Galaxy:
远程主机要求
所有发行版
- 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
- 应该是可在 https://dl.influxdata.com/influxdb/releases 上获得的 InfluxDB 版本
- 旧版本不会在下载页面显示,但可以通过直接链接获得
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
目录中添加你的模板 - 使用不同于默认的路径
- 请在 playbook 旁边的
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
目录中添加你的模板 - 使用不同于默认的路径
- 请在 playbook 旁边的
influxdb_systemd_override
- 表示 systemd 覆盖配置的字典
- 第一级用于 ini 部分
- 第二级用于键/值
- 示例:
influxdb_systemd_override: Service: LimitNOFILE: 30000 # 将导致 systemd 覆盖文件如下: # [Service] # LimitNOFILE=30000
influxdb_custom_logrotate_tpl
- influxdb 自定义 logrotate 模板的路径
- 如果你想使用自己的模板
- 请在 playbook 旁边的
templates
目录中添加你的模板 - 使用不同于默认的路径
- 请在 playbook 旁边的
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