zabbix-agent

Содержание

Введение

Эта роль была перенесена на: https://github.com/ansible-collections/community.zabbix/ В этом репозитории доступна версия только для чтения для тех, кто еще не может использовать коллекции. Изменения и обновления будут применяться только к коллекции, а не к этому репозиторию.

Требования

Операционные системы

Эта роль будет работать на следующих операционных системах:

  • Red Hat
  • Fedora
  • Debian
  • Ubuntu
  • opensuse
  • Windows (с учетом "лучших усилий")
  • macOS

Так что вам потребуется одна из этих операционных систем.. :-) Пожалуйста, отправляйте запросы на изменение или предложения, если вы хотите использовать эту роль для других операционных систем.

Доступ к локальной системе

Для успешного завершения установки роли требуется python-netaddr на контроллере для управления IP-адресами. Это означает, что библиотека должна быть доступна на вашем локальном компьютере (или что pip должен быть установлен для ее запуска). Это, скорее всего, будет означать, что для выполнения роли потребуется доступ sudo на вашем локальном компьютере, и поэтому вам может понадобиться флаг -K, чтобы ввести пароль вашей локальной машины, если вы не работаете под root.

Версии Zabbix

Смотрите следующий список поддерживаемых операционных систем с релизами Zabbix:

Zabbix 4.4

  • CentOS 7.x, 8.x
  • Amazon 7.x
  • RedHat 7.x, 8.x
  • Fedora 27, 29
  • OracleLinux 7.x, 8.x
  • Scientific Linux 7.x, 8.x
  • Ubuntu 14.04, 16.04, 18.04
  • Debian 8, 9, 10
  • macOS 10.14, 10.15

Zabbix 4.2

  • CentOS 7.x
  • Amazon 7.x
  • RedHat 7.x
  • Fedora 27, 29
  • OracleLinux 7.x
  • Scientific Linux 7.x
  • Ubuntu 14.04, 16.04, 18.04
  • Debian 8, 9, 10
  • macOS 10.14, 10.15

Zabbix 4.0

  • CentOS 7.x
  • Amazon 7.x
  • RedHat 7.x
  • Fedora 27, 29
  • OracleLinux 7.x
  • Scientific Linux 7.x
  • Ubuntu 14.04, 16.04, 18.04
  • Debian 8, 9, 10
  • macOS 10.14, 10.15

Zabbix 3.4

  • CentOS 7.x
  • Amazon 7.x
  • RedHat 7.x
  • Fedora 27, 29
  • OracleLinux 7.x
  • Scientific Linux 7.x
  • Ubuntu 14.04, 16.04, 18.04
  • Debian 7, 8, 9

Zabbix 3.2

  • CentOS 7.x
  • Amazon 7.x
  • RedHat 7.x
  • Fedora 27, 29
  • OracleLinux 7.x
  • Scientific Linux 7.x
  • Ubuntu 14.04, 16.04
  • Debian 7, 8

Zabbix 3.0

  • CentOS 5.x, 6.x, 7.x
  • Amazon 5.x, 6.x, 7.x
  • RedHat 5.x, 6.x, 7.x
  • OracleLinux 5.x, 6.x, 7.x
  • Scientific Linux 5.x, 6.x, 7.x
  • Ubuntu 14.04
  • Debian 7, 8

Zabbix 2.4

  • CentOS 6.x, 7.x
  • Amazon 6.x, 7.x
  • RedHat 6.x, 7.x
  • OracleLinux 6.x, 7.x
  • Scientific Linux 6.x, 7.x
  • Ubuntu 12.04 14.04
  • Debian 7

Zabbix 2.2

  • CentOS 5.x, 6.x
  • RedHat 5.x, 6.x
  • OracleLinux 5.x, 6.x
  • Scientific Linux 5.x, 6.x
  • Ubuntu 12.04
  • Debian 7
  • xenserver 6

Начало работы

Установка

Установка этой роли очень проста: ansible-galaxy install dj-wasabi.zabbix-agent

Это установит роль zabbix-agent в вашу директорию roles.

Минимальная конфигурация

Чтобы запустить Zabbix Agent, вам нужно определить следующие свойства перед выполнением роли:

  • zabbix_agent_version
  • zabbix_agent_server
  • zabbix_agent_serveractive (при использовании активных проверок)

zabbix_agent_version является необязательным. На хосте будет установлена последняя доступная основная версия Zabbix. Если вы хотите использовать более старую версию, пожалуйста, укажите это в формате основная.минорная. Пример: zabbix_agent_version: 4.0, zabbix_agent_version: 3.4 или zabbix_agent_version: 2.2.

zabbix_agent_serverzabbix_agent_serveractive) должно содержать IP-адрес или полное доменное имя хоста, на котором работает Zabbix Server.

Проблемы

Из-за проблемы, обсуждаемой в #291, версия Ansible 2.9.{0,1,2} некорректно работает на Windows.

Переменные роли

Основные переменные

Есть несколько переменных в default/main.yml, которые могут (или должны) быть переопределены:

  • zabbix_agent_server: IP-адрес для zabbix-server или zabbix-proxy.

  • zabbix_agent_serveractive: IP-адрес для zabbix-server или zabbix-proxy для активных проверок.

  • zabbix_agent_version: Это версия zabbix. По умолчанию это 4.4, но может быть переопределена одной из версий, указанных в Версии Zabbix. Ранее использовалась переменная zabbix_version, но она могла вызвать некоторые неудобства. Эта переменная сохраняется для обратной совместимости.

  • zabbix_repo: По умолчанию: zabbix

    • epel установить агент из репозитория EPEL
    • zabbix (по умолчанию) установить агент из репозитория Zabbix
    • другое установить агент из существующего или другого репозитория
  • zabbix_agent_listeninterface: Интерфейс, на котором прослушивает zabbix-agent. Оставьте пустым для всех.

  • zabbix_agent_package: Название пакета zabbix-agent. По умолчанию: zabbix-agent. В случае EPEL оно автоматически переименовывается.

  • zabbix_sender_package: Название пакета zabbix-sender. По умолчанию: zabbix-sender. В случае EPEL оно автоматически переименовывается.

  • zabbix_get_package: Название пакета zabbix-get. По умолчанию: zabbix-get. В случае EPEL оно автоматически переименовывается.

  • zabbix_agent_package_state: Если Zabbix-agent необходимо присутствовать или быть последним.

  • zabbix_agent_interfaces: Список, который настраивает интерфейсы, которые вы можете использовать при настройке через API.

  • zabbix_selinux: Включает политику SELinux, чтобы агент мог работать. По умолчанию: Ложь.

  • zabbix_agent_userparameters: Список названий и скриптов пользовательских параметров (если есть). Подробное описание представлено в разделе Развертывание пользовательских параметров. По умолчанию: [] (пустой список).

    • name: Название пользовательского параметра (должно совпадать с именем файла шаблона пользовательского параметра)
    • scripts_dir: Имя директории ваших пользовательских скриптов
  • zabbix_agent_userparameters_templates_src: указывает относительный путь (из templates/), где ищут шаблоны пользовательских параметров.

  • zabbix_agent_userparameters_scripts_src: указывает относительный путь (из files/), где ищут скрипты пользовательских параметров.

  • zabbix_agent_allowroot: Разрешить агенту работать от имени 'root'. 0 - не разрешать, 1 - разрешать.

  • zabbix_agent_runas_user: Понизить привилегии до конкретного, существующего пользователя в системе. Действует только если запущено от имени 'root', и AllowRoot отключен.

  • zabbix_agent_become_on_localhost: Установите в False, если вам не нужно повышать привилегии на localhost для локальной установки пакетов через pip. По умолчанию: True

  • zabbix_install_pip_packages: Установите в False, если вы не хотите устанавливать необходимые пакеты pip. Полезно, если вы полностью контролируете свою среду. По умолчанию: True

  • zabbix_agent_apt_priority: Добавить вес (Pin-Priority) для репозитория APT.

Конфигурация для TLS

Эти переменные специфичны для Zabbix 3.0 и выше:

  • zabbix_agent_tlsconnect: Как агент должен подключаться к серверу или прокси. Используется для активных проверок.

    Возможные значения:

    • без шифрования
    • psk
    • cert
  • zabbix_agent_tlsaccept: Какие входящие соединения следует принимать.

    Возможные значения:

    • без шифрования
    • psk
    • cert
  • zabbix_agent_tlscafile: Полный путь к файлу, содержащему корневые сертификаты CA для проверки сертификатов.

  • zabbix_agent_tlscrlfile: Полный путь к файлу, содержащему отозванные сертификаты.

  • zabbix_agent_tlsservercertissuer: Разрешенный издатель сертификата сервера.

  • zabbix_agent_tlsservercertsubject: Разрешенная тема сертификата сервера.

  • zabbix_agent_tlscertfile: Полный путь к файлу, содержащему сертификат агента или цепочку сертификатов.

  • zabbix_agent_tlskeyfile: Полный путь к файлу, содержащему закрытый ключ агента.

  • zabbix_agent_tlspskidentity: Уникальная строка, учитывающая регистр, используемая для идентификации заранее заданного ключа.

  • zabbix_agent_tlspskidentity_file: Полный путь к файлу, содержащему идентификатор заранее заданного ключа.

  • zabbix_agent_tlspskfile: Полный путь к файлу, содержащему заранее заданный ключ.

  • zabbix_agent_tlspsk_secret: Предварительно заданный секретный ключ, который должен быть помещен в файл, указанный в agent_tlspskfile.

  • zabbix_agent_tlspsk_auto: Включает автоматическую генерацию и хранение индивидуальных заранее заданных ключей и идентификаторов на клиентах.

Переменные API Zabbix

Эти переменные должны быть переопределены, когда вы хотите использовать API Zabbix для автоматического создания или обновления хостов.

Конфигурация шифрования хостов будет настроена в соответствии с конфигурацией агента.

Когда zabbix_api_create_hostgroup или zabbix_api_create_hosts установлены в True, на хосте, выполняющем Ansible плейбук, будет установлен модуль zabbix-api для Python.

  • zabbix_url: URL, по которому доступна веб-страница Zabbix. Пример: http://zabbix.example.com

  • zabbix_api_http_user: HTTP-имя пользователя для доступа к zabbix url с базовой аутентификацией.

  • zabbix_api_http_password: HTTP-пароль для доступа к zabbix url с базовой аутентификацией.

  • zabbix_api_create_hosts: Когда вы хотите включить API Zabbix для создания/удаления хоста. Это должно быть установлено в True, если вы хотите использовать zabbix_create_host. По умолчанию: False.

  • zabbix_api_create_hostgroup: Когда вы хотите включить API Zabbix для создания/удаления групп хостов. Это должно быть установлено в True, если вы хотите использовать zabbix_create_hostgroup. По умолчанию: False.

  • zabbix_api_user: Имя пользователя, имеющего доступ к API.

  • zabbix_api_pass: Пароль для пользователя, имеющего доступ к API.

  • zabbix_create_hostgroup: настоящее (по умолчанию), если группу хостов нужно создать, или отсутствует, если вы хотите ее удалить. Это работает только когда zabbix_api_create_hostgroup установлен в True.

  • zabbix_host_status: включен (по умолчанию), когда хост под мониторингом, отключен - когда хост отключен от мониторинга.

  • zabbix_create_host: настоящее (по умолчанию), если хост нужно создать, или отсутствует, если вы хотите его удалить. Это работает только когда zabbix_api_create_hosts установлен в True.

  • zabbix_update_host: да (по умолчанию), если хост должен быть обновлен, если он уже существует. Это работает только когда zabbix_api_create_hosts установлен в True.

  • zabbix_useuip: 1, если подключение к zabbix-agent осуществляется по ip, 0 - для fqdn.

  • zabbix_host_groups: Список групп хостов, к которым принадлежит этот хост.

  • zabbix_link_templates: Список шаблонов, которые необходимо связать с этим хостом. Шаблоны должны существовать.

  • zabbix_macros: Список с macro_key и macro_value для создания макросов хоста.

  • zabbix_inventory_mode: Настройка режима инвентаризации Zabbix. Необходимо для формирования инвентарных данных, вручную при настройке хоста или автоматически, используя некоторые автоматические варианты. Это должно быть установлено в automatic, если вы хотите автоматически формировать инвентарные данные.

  • zabbix_visible_hostname: Настройка видимого имени Zabbix внутри веб-интерфейса Zabbix для узла.

  • zabbix_validate_certs: да (по умолчанию), если необходимо проверять сертификаты TLS API. Используйте нет, если используются самоподписанные сертификаты.

Переменные Windows

ПРИМЕЧАНИЕ

Поддержка Windows осуществляется на основе "лучших усилий" (у меня нет возможности тестировать/проверять изменения на различных версиях Windows). PR, специфичные для Windows, практически сразу будут объединены, если кто-то сможет предоставить механизм тестирования Windows через Travis для запросов на изменение.

  • zabbix_version_long: Долгая (major.minor.patch) версия агента Zabbix. Это будет использоваться для генерации ссылки zabbix_win_download_link и для обновления агента Zabbix, если zabbix_agent_package_state: latest.

  • zabbix_win_download_link: URL для загрузки win.zip файла.

  • zabbix_win_install_dir: Директория, в которой нужно установить Zabbix.

  • zabbix_agent_win_logfile: Полный путь к файлу журнала для агента Zabbix.

  • zabbix_agent_win_include: Директория, в которой хранятся специфичные для Zabbix конфигурационные файлы.

  • zabbix_agent_win_svc_recovery: Включает настройки автоматического восстановления службы агента Zabbix.

Переменные macOS

  • zabbix_version_long: Долгая (major.minor.patch) версия агента Zabbix. Это будет использоваться для генерации ссылки zabbix_mac_download_link.

  • zabbix_mac_download_link: URL для загрузки файла pkg.

Переменные Docker

Когда вы не хотите устанавливать агент Zabbix на хосте, а хотите запустить его в контейнере, следующие параметры будут полезны. Когда zabbix_agent_docker установлен в True, будет загружен образ Docker и запущен контейнер. Никакие другие установки на хосте не будут выполнены, за исключением файла PSK и "Директории включения Zabbix".

Следующие директории монтируются в контейнер:

  - /etc/zabbix/zabbix_agentd.d:/etc/zabbix/zabbix_agentd.d
  - /:/hostfs:ro
  - /etc:/hostfs/etc:ro
  - /proc:/hostfs/proc:ro
  - /sys:/hostfs/sys:ro
  - /var/run:/var/run

Имейте в виду, что использование агента Zabbix в контейнере требует изменений в шаблоне Zabbix для Linux, так как /proc, /sys и /etc монтируются в директорию /hostfs.

  • zabbix_agent_docker: Когда установлено в True, он будет установливать контейнер Docker на целевом хосте, а не устанавливать на целевом. По умолчанию: False.

  • zabbix_agent_docker_state: По умолчанию: started.

  • zabbix_agent_docker_name: Имя контейнера. По умолчанию: zabbix-agent.

  • zabbix_agent_docker_image: Имя образа Docker. По умолчанию: zabbix/zabbix-agent.

  • zabbix_agent_docker_image_tag: Тег образа Docker.

  • zabbix_agent_docker_user_gid: Идентификатор группы пользователя zabbix в контейнере.

  • zabbix_agent_docker_user_uid: Идентификатор пользователя zabbix в контейнере.

  • zabbix_agent_docker_network_mode: Название (Docker) сети, которая должна использоваться для контейнера. По умолчанию host.

  • zabbix_agent_docker_restart_policy: Политика перезапуска контейнера. По умолчанию: unless-stopped.

  • zabbix_agent_docker_privileged: Когда установлено в True, контейнер работает в привилегированном режиме.

  • zabbix_agent_docker_ports: Список значений <PORT>:<PORT>, чтобы открыть порты для контейнера.

  • zabbix_agent_docker_security_opts: Список доступных параметров безопасности.

  • zabbix_agent_docker_volumes: Список всех директорий, которые должны быть доступны в контейнере.

  • zabbix_agent_docker_env: Словарь со всеми переменными окружения, которые нужно установить для контейнера.

Другие переменные

  • zabbix_agent_firewall_enable: Нужно ли обновить IPtables, открыв TCP-порт для порта, указанного в zabbix_agent_listenport.

  • zabbix_agent_firewall_source: Когда указано, IPtables будет настроен для разрешения трафика только с этого IP-адреса/диапазона.

  • zabbix_agent_firewalld_enable: Нужно ли обновить firewalld, открыв TCP-порт для порта, указанного в zabbix_agent_listenport и zabbix_agent_jmx_listenport, если он определен.

  • zabbix_agent_firewalld_source: Когда указано, firewalld будет настроен на разрешение трафика только для IP, указанного в zabbix_agent_server.

  • zabbix_agent_firewalld_zone: Когда указано, правило firewalld будет прикреплено к этой зоне (только если zabbix_agent_firewalld_enable установлен в true). Поведение по умолчанию - использовать зону по умолчанию, определенную конфигурацией firewalld удаленного хоста.

  • zabbix_agent_firewall_action: Когда добавлять правило или добавлять в IPTables. По умолчанию: insert.

  • zabbix_agent_firewall_chain: В какую цепочку добавить правило в IPTables. По умолчанию INPUT.

  • zabbix_agent_description: Описание хоста в Zabbix.

  • zabbix_agent_inventory_zabbix: Добавляет факты в инвентарь Zabbix.

Переменные IPMI

  • zabbix_agent_ipmi_authtype: Алгоритм аутентификации IPMI. Возможные значения: 1 (callback), 2 (user), 3 (operator), 4 (admin), 5 (OEM), при этом 2 является значением по умолчанию API.

  • zabbix_agent_ipmi_password: Пароль IPMI.

  • zabbix_agent_ipmi_privilege: Уровень привилегий IPMI. Возможные значения: 1 (callback), 2 (user), 3 (operator), 4 (admin), 5 (OEM), при этом 2 является значением по умолчанию API.

  • zabbix_agent_ipmi_username: Имя пользователя IPMI.

прокси

Когда целевой хост не имеет доступа к интернету, но у вас есть доступ к прокси, тогда нужно установить следующие параметры, чтобы загружать пакеты через прокси:

  • zabbix_http_proxy
  • zabbix_https_proxy

Зависимости

Зависимостей от других ролей нет.

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

agent_interfaces

Это настроит интерфейс агента Zabbix на хосте.

zabbix_agent_interfaces:
  - type: 1
    main: 1
    useip: "{{ zabbix_useuip }}"
    ip: "{{ zabbix_agent_ip }}"
    dns: "{{ ansible_fqdn }}"
    port: "{{ zabbix_agent_listenport }}"

Другие интерфейсы

Вы также можете настроить zabbix_agent_interfaces, чтобы добавить/настроить интерфейсы snmp, jmx и ipmi.

Вам нужно использовать один из следующих номеров типа при конфигурации:

Тип интерфейса Nr
Zabbix Agent 1
snmp 2
ipmi 3
jmx 4

Настройка интерфейса snmp будет выглядеть так:

zabbix_agent_interfaces:
  - type: 2
    main: 1
    useip: "{{ zabbix_useuip }}"
    ip: "{{ agent_ip }}"
    dns: "{{ ansible_fqdn }}"
    port: "{{ agent_listenport }}"

Переменные в конфигурации роли

Включение примера того, как использовать вашу роль (например, с переменными, переданными в качестве параметров), также приятно для пользователей:

- hosts: all
  roles:
     - role: dj-wasabi.zabbix-agent
       zabbix_agent_server: 192.168.33.30
       zabbix_agent_serveractive: 192.168.33.30
       zabbix_url: http://zabbix.example.com
       zabbix_api_use: true # используйте zabbix_api_create_hosts и/или zabbix_api_create_hostgroup начиная с 0.8.0
       zabbix_api_user: Admin
       zabbix_api_pass: zabbix
       zabbix_create_host: present
       zabbix_host_groups:
         - Linux Servers
       zabbix_link_templates:
         - Template OS Linux
         - Apache APP Template
       zabbix_macros:
         - macro_key: apache_type
           macro_value: reverse_proxy

Комбинация group_vars и плейбука

Вы также можете использовать файлы group_vars или host_vars для установки переменных, необходимых для этой роли. Файл, который нужно изменить: group_vars/all или host_vars/<zabbix_server> (где - это имя хоста машины, на которой работает Zabbix Server)

    zabbix_agent_server: 192.168.33.30
    zabbix_agent_serveractive: 192.168.33.30
    zabbix_url: http://zabbix.example.com
    zabbix_api_use: true # используйте zabbix_api_create_hosts и/или zabbix_api_create_hostgroup начиная с 0.8.0
    zabbix_api_user: Admin
    zabbix_api_pass: zabbix
    zabbix_create_host: present
    zabbix_host_groups:
      - Linux Servers
    zabbix_link_templates:
      - Template OS Linux
      - Apache APP Template
    zabbix_macros:
      - macro_key: apache_type
        macro_value: reverse_proxy

И в плейбуке только указывать:

- hosts: all
  roles:
     - role: dj-wasabi.zabbix-agent

Пример связи агента с зашифрованным TLS PSK

Переменные, например, в плейбуке или в host_vars/myhost:

zabbix_agent_tlsaccept: psk
zabbix_agent_tlsconnect: psk
zabbix_agent_tlspskidentity: "myhost PSK"
zabbix_agent_tlspsk_secret: b7e3d380b9d400676d47198ecf3592ccd4795a59668aa2ade29f0003abbbd40d
zabbix_agent_tlspskfile: /etc/zabbix/zabbix_agent_pskfile.psk

Molecule

Эта роль настроена для тестирования с Molecule. Вы можете найти на этой странице немного больше информации о Molecule: https://werner-dijkerman.nl/2016/07/10/testing-ansible-roles-with-molecule-testinfra-and-docker/

С каждым Pull Request будет выполняться Molecule через travis.ci. Запросы на изменение будут объединяться только после успешного выполнения этих тестов.

Есть 2 сценария, которые выполняются с Travis.

по умолчанию

В первом сценарии Molecule запустит 5 контейнеров Docker с следующими операционными системами:

  • Debian 8
  • CentOS 7
  • Ubuntu 16.04
  • Ubuntu 18.04
  • Mint

Этот сценарий будет выполнять базовую установку/конфигурацию, не регистрируя хост через API Zabbix на сервере.

с-сервером

Во втором сценарии будет запущено 4 контейнера Docker с следующими операционными системами:

  • CentOS 7 (Zabbix Server)
  • Debian 8
  • CentOS 7
  • Ubuntu 18.04

Сначала на одном контейнере будет установлен Zabbix Server. Эта установка использует другие роли dj-wasabi для установки/настройки Zabbix Server. Как только этот экземпляр запустится, на трех других агентах будет выполнена установка.

Каждый хост зарегистрирует себя на Zabbix Server, и статус должен быть 0 (это означает, что Zabbix Server и Zabbix Agent подключены).

Агент Ubuntu зарегистрирует себя через PSK, чтобы связь между Zabbix Server и Zabbix Agent была зашифрована с помощью заранее заданного ключа.

перед-предыдущей-версией

Третий и последний сценарий - перед-предыдущей-версией. Это тот же самый сценарий, что и по умолчанию, но использует предыдущую версию Zabbix.

Развертывание пользовательских параметров

Следующие шаги необходимы для установки пользовательских параметров и/или скриптов:

  • Поместите файл желаемого пользовательского параметра в директорию templates/userparameters и назовите его как <userparameter_name>.j2. Например: templates/userparameters/mysql.j2. Вы можете изменить директорию по умолчанию на произвольную, изменив переменную zabbix_agent_userparameters_templates_src.
  • Поместите директорию со скриптами (если есть) в директорию files/scripts. Например: files/scripts/mysql. Вы можете изменить директорию по умолчанию на произвольную, изменив переменную zabbix_agent_userparameters_scripts_src.
  • Добавьте переменную zabbix_agent_userparameters в плейбук как список словарей и определите имя пользовательского параметра и имя директории скриптов (если скриптов нет, просто не указывайте переменную scripts_dir).

Пример:

- hosts: mysql_servers
  tasks:
    - include_role:
        name: dj-wasabi.zabbix-agent
      vars:
        zabbix_agent_server: zabbix.mydomain.com
        zabbix_agent_userparameters:
          - name: mysql
            scripts_dir: mysql
          - name: galera

Пример файла "templates/userparameters/mysql.j2":

UserParameter=mysql.ping_to,mysqladmin -uroot ping | grep -c alive

Лицензия

MIT

Информация об авторе

Пожалуйста, отправляйте предложения или запросы на изменение, чтобы улучшить эту роль. Также дайте мне знать, если вы столкнетесь с какими-либо проблемами при установке или использовании этой роли.

Github: https://github.com/dj-wasabi/ansible-zabbix-agent

email: ikben [ at ] werner-dijkerman . nl

О проекте

Installing and maintaining zabbix-agent for RedHat/Debian/Ubuntu/Windows/Suse.

Установить
ansible-galaxy install dj-wasabi/ansible-zabbix-agent
Лицензия
mit
Загрузки
3601357
Владелец
DevOps Engineer, Technical reviewer Packt Pub / Manning / BPB Online / O'Reilly Media