influxdb

ansible-роль-influxdb

Ansible роль для установки/настройки InfluxDB из бинарных файлов InfluxDB.
Доступно на Ansible Galaxy

Ansible Galaxy:
Galaxy Score

Тестирование Travis:
Статус сборки

Требования к удаленным хостам

Все дистрибутивы

  • 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, доступная на https://dl.influxdata.com/influxdb/releases
    • старые версии не отображаются на странице загрузок, но доступны по прямым ссылкам
  • influxdb_rpm_url

    • URL пакета rpm
  • influxdb_rpm_sha256

    • sha256 пакета rpm для проверки его целостности
    • Доступно на странице загрузки InfluxDB для последнего релиза
  • influxdb_rpm_dest_path

    • путь, куда загрузить пакет rpm
  • influxdb_deb_url

    • URL пакета deb
  • influxdb_deb_sha256

    • sha256 пакета deb для проверки его целостности
    • Доступно на странице загрузки InfluxDB для последнего релиза
  • influxdb_deb_dest_path

    • путь, куда загрузить пакет deb
  • influxdb_vars_files

    • список файлов с переменными, используемых для переопределения параметров по умолчанию, если это необходимо
    • если использовать относительный путь, разместите эти файлы рядом с вашим плейбуком в каталоге vars
    • пример:
      influxdb_vars_files:
        - settings.yml
      
  • influxdb_config_tpl

    • путь к шаблону конфигурации influxdb
    • если хотите использовать свой шаблон
      • добавьте свой шаблон рядом с вашим плейбуком в каталоге templates
      • используйте другой путь, отличающийся от стандартного
  • influxdb_config

    • словарь, представляющий пользовательскую конфигурацию influxdb для применения

    • поместите специальные ключи в двойные кавычки (пример: "[meta]")

    • Если используется пользовательская конфигурация, необходимо применить некоторые минимальные разделы в соответствии с influxdb/#12140 и они приведены в примере ниже

    • примеры:

      influxdb_config:
      # Глобальный раздел конфигурации в формате 'ключ: значение'
        reporting-disabled: true
      # Минимально необходимые разделы в формате 'раздел: { ключ: значение, ключ: значение }'
        "[meta]":
          dir: /var/lib/influxdb/meta
        "[data]":
          dir: /var/lib/influxdb/data
          wal-dir: /var/lib/influxdb/wal
      # Другие разделы в формате 'раздел: { ключ: значение, ключ: значение }'
        "[http]":
          auth-enabled: true
        "[[graphite]]":
          enable: true
          batch-size: 5000
      
  • influxdb_systemd_override_tpl

    • путь к шаблону переопределения systemd для influxdb
    • если хотите использовать свой шаблон
      • добавьте свой шаблон рядом с вашим плейбуком в каталоге templates
      • используйте другой путь, отличающийся от стандартного
  • influxdb_systemd_override

    • словарь, представляющий конфигурацию переопределения systemd
    • первый уровень используется для раздела ini
    • второй уровень используется для ключа / значения
    • пример:
      influxdb_systemd_override:
        Service:
          LimitNOFILE: 30000
      # В результате будет получен файл переопределения systemd в виде:
      # [Service]
      # LimitNOFILE=30000
      
  • influxdb_custom_logrotate_tpl

    • путь к шаблону кастомного logrotate для influxdb
    • если хотите использовать свой шаблон
      • добавьте свой шаблон рядом с вашим плейбуком в каталоге templates
      • используйте другой путь, отличающийся от стандартного
  • influxdb_custom_logrotate

    • многострочная строка с опциями logrotate для логов influxdb

    • заменяет конфигурацию по умолчанию

    • /!\ Имейте в виду, что если вы замените конфигурацию 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}
    • HTTP порт для API вызовов
  • influxdb_management_validate_certs

    • значение по умолчанию из параметров модуля influxdb_{user,policy,retention_policy}
    • нужно ли проверять SSL-сертификат для API вызовов
  • influxdb_management_proxies

    • значение по умолчанию из параметров модуля influxdb_{user,policy,retention_policy}
    • HTTP(S) прокси, используемый для API вызовов
  • 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, но будьте осторожны, так как это вызовет ошибку, если есть оставшиеся пользователи, которые необходимо проверить, но должно сработать, если вы повторно запустите свой плейбук.
  • influxdb_management_retries

    • значение по умолчанию из параметров модуля influxdb_{user,policy,retention_policy}
    • количество попыток для API вызовов
  • influxdb_management_ssl

    • значение по умолчанию из параметров модуля influxdb_{user,policy,retention_policy}
    • использовать SSL для API вызовов
  • influxdb_management_timeout

    • значение по умолчанию из параметров модуля influxdb_{user,policy,retention_policy}
    • таймаут для API вызовов
  • influxdb_management_udp_port

    • значение по умолчанию из параметров модуля influxdb_{user,policy,retention_policy}
    • UDP порт для API вызовов
  • influxdb_management_use_udp

    • значение по умолчанию из параметров модуля influxdb_{user,policy,retention_policy}
    • нужно ли использовать UDP для API вызовов
  • 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 для отладки

Пример плейбука

- hosts: influxdb
  roles:
    - rockandska.influxdb

Локальное тестирование

Предпочтительный способ локального тестирования роли — использование Docker и molecule (v2.x). Вам нужно будет установить Docker на вашу систему. Смотрите "Начать" для получения подходящего пакета Docker для вашей системы. Мы используем tox для упрощения процесса тестирования на нескольких версиях ansible. Чтобы установить tox выполните:

$ sudo pip install tox
# или
$ pip install --user tox

Чтобы запустить тесты на всех версиях ansible (ВНИМАНИЕ: это может занять некоторое время)

$ tox

Чтобы запустить пользовательскую команду молекул в пользовательской среде только с тестовым сценарием по умолчанию:

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

Для получения дополнительной информации о molecule обратитесь к их документации.

Если хотите запустить тесты на удаленном docker хосте, просто укажите переменную DOCKER_HOST перед запуском тестов tox.

Лицензия

BSD

О проекте

InfluxDB installation / configuration

Установить
ansible-galaxy install rockandska/ansible-role-influxdb
Лицензия
Unknown
Загрузки
114
Владелец