{"id":15014023,"url":"https://github.com/graylog2/puppet-graylog","last_synced_at":"2025-10-26T22:16:55.654Z","repository":{"id":8245391,"uuid":"57323352","full_name":"Graylog2/puppet-graylog","owner":"Graylog2","description":"Install and configure a Graylog system via Puppet","archived":false,"fork":false,"pushed_at":"2025-02-03T10:19:37.000Z","size":123,"stargazers_count":8,"open_issues_count":2,"forks_count":31,"subscribers_count":14,"default_branch":"main","last_synced_at":"2025-10-22T01:25:31.639Z","etag":null,"topics":["graylog","log-analysis","log-management","puppet","puppet-forge","puppet-module"],"latest_commit_sha":null,"homepage":null,"language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Graylog2.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-04-28T18:04:03.000Z","updated_at":"2025-02-03T10:19:42.000Z","dependencies_parsed_at":"2024-06-19T00:25:57.657Z","dependency_job_id":"45dc7667-2d43-4ede-b620-274b40e04d14","html_url":"https://github.com/Graylog2/puppet-graylog","commit_stats":{"total_commits":88,"total_committers":16,"mean_commits":5.5,"dds":"0.30681818181818177","last_synced_commit":"2e47ededfeac8fb6ed2b36cfcd84e095a3f4af79"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/Graylog2/puppet-graylog","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Graylog2%2Fpuppet-graylog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Graylog2%2Fpuppet-graylog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Graylog2%2Fpuppet-graylog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Graylog2%2Fpuppet-graylog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Graylog2","download_url":"https://codeload.github.com/Graylog2/puppet-graylog/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Graylog2%2Fpuppet-graylog/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281180703,"owners_count":26456972,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-26T02:00:06.575Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["graylog","log-analysis","log-management","puppet","puppet-forge","puppet-module"],"created_at":"2024-09-24T19:45:04.275Z","updated_at":"2025-10-26T22:16:55.621Z","avatar_url":"https://github.com/Graylog2.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Graylog Puppet Module\n\n[![Build Status](https://github.com/Graylog2/puppet-graylog/actions/workflows/validate.yml/badge.svg)](https://github.com/Graylog2/puppet-graylog/actions?query=workflow%3Avalidate)\n[![Puppet Forge](https://img.shields.io/puppetforge/v/graylog/graylog?color=green)](https://forge.puppet.com/modules/graylog/graylog)\n[![Puppet Forge - downloads](https://img.shields.io/puppetforge/dt/graylog/graylog)](https://forge.puppet.com/modules/graylog/graylog)\n\n\n#### Table of Contents\n\n1. [Description](#description)\n1. [Setup - The basics of getting started with graylog](#setup)\n    * [What graylog affects](#what-graylog-affects)\n    * [Setup requirements](#setup-requirements)\n    * [Beginning with graylog](#beginning-with-graylog)\n1. [Usage - Configuration options and additional functionality](#usage)\n1. [Reference - An under-the-hood peek at what the module is doing and how](#reference)\n1. [Limitations - OS compatibility, etc.](#limitations)\n1. [Development - Guide for contributing to the module](#development)\n\n## Description\n\nThis module can be used to install and configure a Graylog system. (https://www.graylog.org/)\n\n### Native Types\n\nNative types to configure dashboards, inputs, streams and others are provided\nby the community maintained [puppet-graylog_api](https://github.com/magicmemories/puppet-graylog_api)\nmodule.\n\n## Setup\n\n### What graylog affects\n\nThe graylog module manages the following things:\n\n* APT/YUM repository\n* Graylog packages\n* Graylog configuration files\n* Graylog service\n\n### Setup Requirements\n\nThe module only manages Graylog itself. You need other modules to install\nthe required dependencies like MongoDB and OpenSearch.\n\nYou could use the following modules to install dependencies:\n\n* [puppet/mongodb](https://forge.puppet.com/puppet/mongodb)\n* [puppet/opensearch](https://forge.puppet.com/modules/puppet/opensearch)\n\n### Beginning with graylog\n\nThe following modules are required to use the graylog module:\n\n* [puppetlabs/apt](https://forge.puppet.com/puppetlabs/apt)\n* [puppetlabs/stdlib](https://forge.puppet.com/puppetlabs/stdlib)\n\nThose dependencies are automatically installed if you are using the Puppet\nmodule tool or something like [librarian-puppet](https://github.com/voxpupuli/librarian-puppet).\n\n#### Puppet Module Tool\n\nUse the following command to install the graylog module via the Puppet module\ntool.\n\n```\npuppet module install graylog/graylog\n```\n\n#### librarian-puppet\n\nAdd the following snippet to your `Puppetfile`.\n\n```\nmod 'graylog/graylog', 'x.x.x'\n```\n\nMake sure to use the latest version of the graylog module!\n\n## Usage\n\nAs mentioned above, the graylog module only manages the Graylog system. Other\nrequirements like MongoDB and OpenSearch need to be managed via\nother modules.\n\nThe following config creates a setup with MongoDB, OpenSearch and Graylog\non a single node.\n\n```puppet\nclass { 'mongodb::globals':\n  manage_package_repo =\u003e true,\n}-\u003e\nclass { 'mongodb::server':\n  bind_ip =\u003e ['127.0.0.1'],\n}\n\nclass { 'opensearch':\n  version =\u003e '2.9.0',\n}\n\nclass { 'graylog::repository':\n  version =\u003e '6.1'\n}-\u003e\nclass { 'graylog::server':\n  package_version =\u003e '6.1.5-2',\n  config          =\u003e {\n    'password_secret' =\u003e '...',    # Fill in your password secret\n    'root_password_sha2' =\u003e '...', # Fill in your root password hash\n  }\n}\n```\n\n### A more complex example\n\n```puppet\nclass { '::graylog::repository':\n  version =\u003e '6.1'\n}-\u003e\nclass { '::graylog::server':\n  config  =\u003e {\n    is_leader                                          =\u003e true,\n    node_id_file                                       =\u003e '/etc/graylog/server/node-id',\n    password_secret                                    =\u003e 'password_secret',\n    root_username                                      =\u003e 'admin',\n    root_password_sha2                                 =\u003e 'root_password_sha2',\n    root_timezone                                      =\u003e 'Europe/Berlin',\n    allow_leading_wildcard_searches                    =\u003e true,\n    allow_highlighting                                 =\u003e true,\n    http_bind_address                                  =\u003e '0.0.0.0:9000',\n    http_external_uri                                  =\u003e 'https://graylog01.domain.local:9000/',\n    http_enable_tls                                    =\u003e true,\n    http_tls_cert_file                                 =\u003e '/etc/ssl/graylog/graylog_cert_chain.crt',\n    http_tls_key_file                                  =\u003e '/etc/ssl/graylog/graylog_key_pkcs8.pem',\n    http_tls_key_password                              =\u003e 'sslkey-password',\n    rotation_strategy                                  =\u003e 'time',\n    retention_strategy                                 =\u003e 'delete',\n    elasticsearch_max_time_per_index                   =\u003e '1d',\n    elasticsearch_max_number_of_indices                =\u003e '30',\n    elasticsearch_shards                               =\u003e '4',\n    elasticsearch_replicas                             =\u003e '1',\n    elasticsearch_index_prefix                         =\u003e 'graylog',\n    elasticsearch_hosts                                =\u003e 'http://opensearch01.domain.local:9200,http://opensearch02.domain.local:9200',\n    mongodb_uri                                        =\u003e 'mongodb://mongouser:mongopass@mongodb01.domain.local:27017,mongodb02.domain.local:27017,mongodb03.domain.local:27017/graylog',\n  },\n}\n```\n\n## Reference\n\n### Classes\n\n#### Public Classes\n\n* `graylog::repository`: Manages the official Graylog package repository\n* `graylog::server`: Installs, configures and manages the Graylog server service\n\n#### Private Classes\n\n* `graylog::params`: Default settings for different platforms\n* `graylog::repository::apt`: Manages APT repositories\n* `graylog::repository::yum`: Manages YUM repositories\n\n#### Class: graylog::repository\n\n##### `version`\n\nThis setting is used to set the repository version that should be used to install\nthe Graylog package. The Graylog package repositories are separated by major\nversion.\n\nIt defaults to `$graylog::params::major_version`.\n\nExample: `version =\u003e '6.1'`\n\n##### `url`\n\nThis setting is used to set the package repository url.\n\n**Note:** The module automatically detects the url for your platform so this\nsetting should not be changed.\n\n##### `proxy`\n\nThis setting is used to facilitate package installation with proxy.\n\n##### `release`\n\nThis setting is used to set the package repository release.\n\n**Note:** The Graylog package repositories only use `stable` as a release so\nthis setting should not be changed.\n\n#### Class: graylog::server\n\nThe `graylog::server` class configures the Graylog server service.\n\n##### `package_name`\n\nThis setting is used to choose the Graylog package name. It defaults to\n`graylog-server` to install Graylog Open. You can use `graylog-enterprise`\nto install the Graylog Enterprise package.\n\nExample: `package_name =\u003e 'graylog-server'`\n\n##### `package_version`\n\nThis setting is used to choose the Graylog package version. It defaults to\n`installed` which means it installs the latest version that is available at\ninstall time. You can also use `latest` so it will always update to the latest\nstable version if a new one is available.\n\nExample: `package_version =\u003e '6.1.5-2'`\n\n##### `config`\n\nThis setting is used to specify the Graylog server configuration. The server\nconfiguration consists of key value pairs. Every available config option can\nbe used here.\n\nSee the [example graylog.conf](https://github.com/Graylog2/graylog2-server/blob/master/misc/graylog.conf)\nto see a list of available options.\n\nRequired settings:\n\n* `password_secret`\n* `root_password_sha2`\n\nPlease find some default settings in `$graylog::params::default_config`.\n\nExample:\n\n```\nconfig =\u003e {\n  'password_secret'    =\u003e '...',\n  'root_password_sha2' =\u003e '...',\n  'is_leader'          =\u003e true,\n  'output_batch_size'  =\u003e 2500,\n}\n```\n\n##### `user`\n\nThis setting is used to specify the owner for files and directories.\n\n**Note:** This defaults to `graylog` because the official Graylog package uses\nthat account to run the server. Only change it if you know what you are doing.\n\n##### `group`\n\nThis setting is used to specify the group for files and directories.\n\n**Note:** This defaults to `graylog` because the official Graylog package uses\nthat account to run the server. Only change it if you know what you are doing.\n\n##### `ensure`\n\nThis setting is used to configure if the Graylog service should be running or\nnot. It defaults to `running`.\n\nAvailable options: `running`, 'stopped'\n\n##### `enable`\n\nThis setting is used to configure if the Graylog service should be enabled.\nIt defaults to `true`.\n\n##### `java_initial_heap_size`\n\nSets the initial Java heap size (-Xms) for Graylog. Defaults to `1g`.\n\n##### `java_max_heap_size`\n\nSets the maximum Java heap size (-Xmx) for Graylog. Defaults to `1g`.\n\n##### `java_opts`\n\nAdditional java options for Graylog. Defaults to ``.\n\n##### `restart_on_package_upgrade`\n\nThis setting restarts the `graylog-server` service if the os package is upgraded.\nIt defaults to `false`.\n\n## Limitations\n\nSupported Graylog versions:\n\n* 5.x\n\nSupported platforms:\n\n* Ubuntu/Debian\n* RedHat/CentOS\n\n## Development\nYou can test this module by using the associated PDK commands.\n\n```bash\npdk validate # Ensure code style conforms to recommendations\npdk test unit --parallel # Run unit tests (in parallel)\n\n#\n# Acceptance (litmus) tests, requires docker\n#\npdk bundle exec rake 'litmus:provision_list[default]'\npdk bundle exec rake 'litmus:install_agent'\npdk bundle exec rake 'litmus:install_module'\npdk bundle exec rake 'litmus:acceptance:parallel'\npdk bundle exec rake 'litmus:tear_down'\n```\n\nPlease see the [CONTRIBUTING.md](CONTRIBUTING.md) and [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md)\nfiles for further details.\n\n### Release New Version\n\n1. Update and commit CHANGELOG\n1. Bump version via `bundle exec rake -f Rakefile.release module:bump:minor` (or major/patch)\n1. Commit `metadata.json`\n1. Test build with `bundle exec rake -f Rakefile.release module:build`\n1. Tag release with `bundle exec rake -f Rakefile.release module:tag`\n1. Push release to PuppetForge with `bundle exec -f Rakefile.release rake module:push`\n1. Push commits and tags to GitHub with `git push --follow-tags`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgraylog2%2Fpuppet-graylog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgraylog2%2Fpuppet-graylog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgraylog2%2Fpuppet-graylog/lists"}