├── .gitignore ├── packs ├── jaeger │ ├── outputs.tpl │ ├── CHANGELOG.md │ ├── README.md │ ├── templates │ │ ├── _helpers.tpl │ │ └── jaeger.nomad.tpl │ ├── metadata.hcl │ └── variables.hcl ├── loki │ ├── outputs.tpl │ ├── CHANGELOG.md │ ├── README.md │ ├── templates │ │ ├── _helpers.tpl │ │ └── loki.nomad.tpl │ ├── metadata.hcl │ └── variables.hcl ├── tempo │ ├── outputs.tpl │ ├── CHANGELOG.md │ ├── templates │ │ └── _helpers.tpl │ ├── README.md │ └── metadata.hcl ├── promtail │ ├── outputs.tpl │ ├── CHANGELOG.md │ ├── metadata.hcl │ └── templates │ │ └── promtail.nomad.tpl ├── nextcloud │ ├── outputs.tpl │ ├── CHANGELOG.md │ └── metadata.hcl ├── aws_efs_csi │ ├── outputs.tpl │ ├── CHANGELOG.md │ ├── metadata.hcl │ ├── templates │ │ └── aws-efs-csi-nodes.nomad.tpl │ └── variables.hcl ├── influxdb │ ├── outputs.tpl │ ├── CHANGELOG.md │ ├── templates │ │ └── _helpers.tpl │ ├── metadata.hcl │ ├── vars.nomad │ └── README.md ├── jenkins │ ├── outputs.tpl │ ├── CHANGELOG.md │ ├── examples │ │ ├── vars.nomad │ │ ├── vars_jasc.nomad │ │ └── vars_cloud.nomad │ ├── templates │ │ └── _helpers.tpl │ ├── metadata.hcl │ └── README.md ├── kibana │ ├── outputs.tpl │ ├── CHANGELOG.md │ ├── kibana.yml │ ├── templates │ │ └── _helpers.tpl │ ├── vars.nomad │ ├── metadata.hcl │ └── README.md ├── backstage │ ├── outputs.tpl │ ├── CHANGELOG.md │ ├── templates │ │ └── _helpers.tpl │ └── metadata.hcl ├── sonarqube │ ├── outputs.tpl │ ├── CHANGELOG.md │ ├── templates │ │ ├── _helpers.tpl │ │ └── sonarqube.nomad.tpl │ └── metadata.hcl ├── faasd │ ├── outputs.tpl │ ├── CHANGELOG.md │ ├── vars.nomad │ ├── templates │ │ └── _helpers.tpl │ └── metadata.hcl ├── grafana │ ├── outputs.tpl │ ├── templates │ │ └── _helpers.tpl │ ├── metadata.hcl │ ├── CHANGELOG.md │ └── README.md ├── chaotic_ngine │ ├── outputs.tpl │ ├── CHANGELOG.md │ ├── templates │ │ ├── _helpers.tpl │ │ └── chaotic_ngine.nomad.tpl │ ├── metadata.hcl │ └── README.md ├── hello_world │ ├── outputs.tpl │ ├── .ci │ │ └── vars-options.hcl │ ├── CHANGELOG.md │ ├── templates │ │ ├── _helpers.tpl │ │ └── hello_world.nomad.tpl │ ├── metadata.hcl │ ├── README.md │ └── variables.hcl ├── rabbitmq │ ├── outputs.tpl │ ├── CHANGELOG.md │ ├── templates │ │ ├── _consulservices.tpl │ │ ├── _helpers.tpl │ │ └── _rabbitenv.tpl │ └── metadata.hcl ├── signoz │ ├── .ci │ │ └── vars-required.hcl │ ├── outputs.tpl │ ├── specs │ │ ├── password.nv.hcl │ │ ├── policy.hcl │ │ ├── volume-signoz.hcl │ │ ├── volume-clickhouse.hcl │ │ └── volume-zookeeper.hcl │ ├── metadata.hcl │ ├── configs │ │ └── clickhouse │ │ │ ├── custom-function.xml │ │ │ ├── cluster.xml │ │ │ └── storage.xml │ ├── templates │ │ └── _helpers.tpl │ └── setup.sh ├── ctfd │ ├── CHANGELOG.md │ ├── outputs.tpl │ ├── templates │ │ └── _helpers.tpl │ └── metadata.hcl ├── haproxy │ ├── CHANGELOG.md │ ├── outputs.tpl │ ├── templates │ │ ├── _helpers.tpl │ │ └── haproxy.nomad.tpl │ ├── metadata.hcl │ ├── README.md │ └── variables.hcl ├── nginx │ ├── CHANGELOG.md │ ├── outputs.tpl │ ├── templates │ │ ├── _helpers.tpl │ │ └── nginx.nomad.tpl │ ├── metadata.hcl │ ├── README.md │ └── variables.hcl ├── outline │ ├── CHANGELOG.md │ ├── templates │ │ └── _helpers.tpl │ └── metadata.hcl ├── tfc_agent │ ├── .ci │ │ └── vars-required.hcl │ ├── CHANGELOG.md │ ├── outputs.tpl │ ├── metadata.hcl │ └── templates │ │ ├── _helpers.tpl │ │ └── tfc_agent.nomad.tpl ├── traefik │ ├── CHANGELOG.md │ ├── outputs.tpl │ ├── templates │ │ └── _helpers.tpl │ ├── metadata.hcl │ └── examples │ │ └── traefik.hcl ├── vector │ ├── CHANGELOG.md │ ├── templates │ │ └── _helpers.tpl │ └── metadata.hcl ├── wordpress │ ├── CHANGELOG.md │ ├── templates │ │ └── _helpers.tpl │ └── metadata.hcl ├── fabio │ ├── CHANGELOG.md │ ├── outputs.tpl │ ├── templates │ │ ├── _helpers.tpl │ │ └── fabio.nomad.tpl │ ├── metadata.hcl │ └── variables.hcl ├── prometheus │ ├── CHANGELOG.md │ ├── templates │ │ └── _helpers.tpl │ ├── alerts_vars.nomad │ └── metadata.hcl ├── redis │ ├── outputs.tpl │ ├── CHANGELOG.md │ ├── templates │ │ ├── _helpers.tpl │ │ └── redis.nomad.tpl │ └── metadata.hcl ├── simple_service │ ├── CHANGELOG.md │ ├── templates │ │ ├── _helpers.tpl │ │ └── simple_service.nomad.tpl │ ├── outputs.tpl │ └── metadata.hcl ├── nomad_autoscaler │ ├── CHANGELOG.md │ ├── templates │ │ └── _helpers.tpl │ ├── metadata.hcl │ └── variables.hcl ├── nomad_ingress_nginx │ ├── CHANGELOG.md │ ├── templates │ │ ├── _helpers.tpl │ │ └── nginx.nomad.tpl │ ├── outputs.tpl │ ├── metadata.hcl │ └── variables.hcl ├── csi_openstack_cinder │ ├── CHANGELOG.md │ ├── .ci │ │ └── vars-required.hcl │ ├── cloud.conf.example │ ├── outputs.tpl │ ├── metadata.hcl │ └── templates │ │ └── _helpers.tpl ├── prometheus_node_exporter │ ├── CHANGELOG.md │ ├── templates │ │ ├── _helpers.tpl │ │ └── prometheus_node_exporter.nomad.tpl │ └── metadata.hcl ├── prometheus_snmp_exporter │ ├── CHANGELOG.md │ ├── templates │ │ ├── _helpers.tpl │ │ └── prometheus_snmp_exporter.nomad.tpl │ └── metadata.hcl ├── boundary │ ├── CHANGELOG.md │ ├── outputs.tpl │ ├── .ci │ │ └── vars-required.hcl │ ├── templates │ │ └── _helpers.tpl │ ├── metadata.hcl │ └── README.md ├── caddy │ ├── CHANGELOG.md │ ├── outputs.tpl │ ├── templates │ │ └── _helpers.tpl │ ├── metadata.hcl │ └── README.md ├── drone │ ├── CHANGELOG.md │ ├── templates │ │ └── _helpers.tpl │ └── metadata.hcl ├── hashicups │ ├── CHANGELOG.md │ ├── outputs.tpl │ ├── metadata.hcl │ └── variables.hcl ├── prometheus_consul_exporter │ ├── CHANGELOG.md │ ├── templates │ │ ├── _helpers.tpl │ │ └── prometheus_consul_exporter.nomad.tpl │ ├── outputs.tpl │ └── metadata.hcl ├── alertmanager │ ├── CHANGELOG.md │ ├── outputs.tpl │ ├── templates │ │ └── _helpers.tpl │ ├── README.md │ └── metadata.hcl ├── ceph │ ├── CHANGELOG.md │ ├── templates │ │ ├── _resources.tpl │ │ ├── _location.tpl │ │ ├── _constraints.tpl │ │ ├── _config.tpl │ │ └── ceph.nomad.tpl │ ├── metadata.hcl │ ├── outputs.tpl │ └── config │ │ ├── ceph.conf │ │ └── stdout.log ├── aws_ebs_csi │ ├── CHANGELOG.md │ ├── templates │ │ ├── _resources.tpl │ │ ├── _location.tpl │ │ ├── _constraints.tpl │ │ ├── controller.nomad.tpl │ │ └── node.nomad.tpl │ ├── metadata.hcl │ └── outputs.tpl ├── ceph_rbd_csi │ ├── CHANGELOG.md │ ├── templates │ │ ├── _resources.tpl │ │ ├── _location.tpl │ │ ├── _constraints.tpl │ │ ├── node.nomad.tpl │ │ └── controller.nomad.tpl │ ├── metadata.hcl │ └── outputs.tpl ├── democratic_csi_nfs │ ├── CHANGELOG.md │ ├── templates │ │ ├── _resources.tpl │ │ ├── _location.tpl │ │ ├── _helpers.tpl │ │ ├── _constraints.tpl │ │ ├── _plugin_config_file.tpl │ │ ├── node.nomad.tpl │ │ └── controller.nomad.tpl │ ├── .ci │ │ └── vars-required.hcl │ ├── metadata.hcl │ └── outputs.tpl ├── tfe_fdo_nomad │ ├── outputs.tpl │ ├── CHANGELOG.md │ ├── metadata.hcl │ ├── .ci │ │ └── vars-required.hcl │ └── templates │ │ └── tfe.agent.nomad.tpl └── opentelemetry_collector │ ├── CHANGELOG.md │ ├── metadata.hcl │ └── examples │ ├── basic.hcl │ └── traefik_vars.hcl ├── .github ├── CODEOWNERS ├── scripts │ ├── version-from-identifier.sh │ └── files-to-identifiers.sh ├── workflows │ ├── copywrite.yml │ ├── validate-packs.yml │ └── notify-integration-release.yml └── pull_request_template.md ├── .copywrite.hcl ├── scripts ├── fixem.sh └── update-parser-v2.sh ├── README.md └── ci └── validate.sh /.gitignore: -------------------------------------------------------------------------------- 1 | rendered/* 2 | -------------------------------------------------------------------------------- /packs/jaeger/outputs.tpl: -------------------------------------------------------------------------------- 1 | Jaeger successfully deployed. 2 | -------------------------------------------------------------------------------- /packs/loki/outputs.tpl: -------------------------------------------------------------------------------- 1 | Loki successfully deployed. 2 | -------------------------------------------------------------------------------- /packs/tempo/outputs.tpl: -------------------------------------------------------------------------------- 1 | Tempo successfully deployed. 2 | -------------------------------------------------------------------------------- /packs/promtail/outputs.tpl: -------------------------------------------------------------------------------- 1 | Promtail successfully deployed. 2 | -------------------------------------------------------------------------------- /packs/nextcloud/outputs.tpl: -------------------------------------------------------------------------------- 1 | NextCloud deployed successfully. 2 | -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | # codeowner default 2 | * @hashicorp/nomad-eng 3 | -------------------------------------------------------------------------------- /packs/aws_efs_csi/outputs.tpl: -------------------------------------------------------------------------------- 1 | AWS EFS CSI nodes successfully deployed. 2 | -------------------------------------------------------------------------------- /packs/influxdb/outputs.tpl: -------------------------------------------------------------------------------- 1 | Congrats on deploying [[ meta "pack.name" . ]]. 2 | -------------------------------------------------------------------------------- /packs/jenkins/outputs.tpl: -------------------------------------------------------------------------------- 1 | Congrats on deploying [[ meta "pack.name" . ]]. 2 | -------------------------------------------------------------------------------- /packs/kibana/outputs.tpl: -------------------------------------------------------------------------------- 1 | Congrats on deploying [[ meta "pack.name" . ]]. 2 | -------------------------------------------------------------------------------- /packs/backstage/outputs.tpl: -------------------------------------------------------------------------------- 1 | Congrats! You deployed the backstage pack on Nomad. 2 | -------------------------------------------------------------------------------- /packs/sonarqube/outputs.tpl: -------------------------------------------------------------------------------- 1 | Congrats on deploying [[ meta "pack.name" . ]]. 2 | -------------------------------------------------------------------------------- /packs/faasd/outputs.tpl: -------------------------------------------------------------------------------- 1 | Congrats! You deployed the [[ meta "pack.name" . ]] pack on Nomad. 2 | -------------------------------------------------------------------------------- /packs/grafana/outputs.tpl: -------------------------------------------------------------------------------- 1 | Congrats! You deployed the [[ meta "pack.name" . ]] pack on Nomad. 2 | -------------------------------------------------------------------------------- /packs/chaotic_ngine/outputs.tpl: -------------------------------------------------------------------------------- 1 | Congrats! You deployed the [[ meta "pack.name" . ]] pack on Nomad. 2 | -------------------------------------------------------------------------------- /packs/hello_world/outputs.tpl: -------------------------------------------------------------------------------- 1 | Congrats! You deployed the [[ meta "pack.name" . ]] pack on Nomad. 2 | -------------------------------------------------------------------------------- /packs/rabbitmq/outputs.tpl: -------------------------------------------------------------------------------- 1 | RabbitMQ successfully deployed. 2 | Services have been registered into consul. 3 | -------------------------------------------------------------------------------- /packs/hello_world/.ci/vars-options.hcl: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | register_service = true 5 | -------------------------------------------------------------------------------- /packs/loki/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.2.1 (July 15, 2025) 2 | 3 | - Add `node_pool` variable 4 | 5 | ## 0.2.0 (June 16, 2025) 6 | 7 | - Update to parser v2 8 | -------------------------------------------------------------------------------- /packs/signoz/.ci/vars-required.hcl: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | config = "./packs/signoz/configs" 5 | -------------------------------------------------------------------------------- /packs/ctfd/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.2.1 (July 15, 2025) 2 | 3 | - Add `node_pool` variable 4 | 5 | ## 0.2.0 (June 16, 2025) 6 | 7 | - Update to parser v2 8 | 9 | -------------------------------------------------------------------------------- /packs/haproxy/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.2.1 (July 15, 2025) 2 | 3 | - Add `node_pool` variable 4 | 5 | ## 0.2.0 (June 16, 2025) 6 | 7 | - Update to parser v2 8 | -------------------------------------------------------------------------------- /packs/jaeger/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.2.1 (July 15, 2025) 2 | 3 | - Add `node_pool` variable 4 | 5 | ## 0.2.0 (June 16, 2025) 6 | 7 | - Update to parser v2 8 | -------------------------------------------------------------------------------- /packs/jenkins/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.2.1 (July 15, 2025) 2 | 3 | - Add `node_pool` variable 4 | 5 | ## 0.2.0 (June 16, 2025) 6 | 7 | - Update to parser v2 8 | -------------------------------------------------------------------------------- /packs/kibana/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.2.1 (July 15, 2025) 2 | 3 | - Add `node_pool` variable 4 | 5 | ## 0.2.0 (June 16, 2025) 6 | 7 | - Update to parser v2 8 | -------------------------------------------------------------------------------- /packs/nextcloud/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.2.1 (July 15, 2025) 2 | 3 | - Add `node_pool` variable 4 | 5 | ## 0.2.0 (June 16, 2025) 6 | 7 | - Update to parser v2 8 | -------------------------------------------------------------------------------- /packs/nginx/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.2.1 (July 15, 2025) 2 | 3 | - Add `node_pool` variable 4 | 5 | ## 0.2.0 (June 16, 2025) 6 | 7 | - Update to parser v2 8 | -------------------------------------------------------------------------------- /packs/outline/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.2.1 (July 15, 2025) 2 | 3 | - Add `node_pool` variable 4 | 5 | ## 0.2.0 (June 16, 2025) 6 | 7 | - Update to parser v2 8 | -------------------------------------------------------------------------------- /packs/rabbitmq/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.2.1 (July 15, 2025) 2 | 3 | - Add `node_pool` variable 4 | 5 | ## 0.2.0 (June 23, 2025) 6 | 7 | - Update to parser v2 8 | -------------------------------------------------------------------------------- /packs/sonarqube/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.2.1 (July 15, 2025) 2 | 3 | - Add `node_pool` variable 4 | 5 | ## 0.2.0 (June 16, 2025) 6 | 7 | - Update to parser v2 8 | -------------------------------------------------------------------------------- /packs/tempo/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.2.1 (July 15, 2025) 2 | 3 | - Add `node_pool` variable 4 | 5 | ## 0.2.0 (June 16, 2025) 6 | 7 | - Update to parser v2 8 | -------------------------------------------------------------------------------- /packs/tfc_agent/.ci/vars-required.hcl: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | agent_token = "not a real token" 5 | -------------------------------------------------------------------------------- /packs/tfc_agent/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.2.1 (July 15, 2025) 2 | 3 | - Add `node_pool` variable 4 | 5 | ## 0.2.0 (June 16, 2025) 6 | 7 | - Update to parser v2 8 | -------------------------------------------------------------------------------- /packs/traefik/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.2.1 (July 15, 2025) 2 | 3 | - Add `node_pool` variable 4 | 5 | ## 0.2.0 (June 16, 2025) 6 | 7 | - Update to parser v2 8 | -------------------------------------------------------------------------------- /packs/vector/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.2.1 (July 15, 2025) 2 | 3 | - Add `node_pool` variable 4 | 5 | ## 0.2.0 (June 16, 2025) 6 | 7 | - Update to parser v2 8 | -------------------------------------------------------------------------------- /packs/wordpress/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.2.1 (July 15, 2025) 2 | 3 | - Add `node_pool` variable 4 | 5 | ## 0.2.0 (June 16, 2025) 6 | 7 | - Update to parser v2 8 | -------------------------------------------------------------------------------- /packs/chaotic_ngine/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.2.1 (July 15, 2025) 2 | 3 | - Add `node_pool` variable 4 | 5 | ## 0.2.0 (June 16, 2025) 6 | 7 | - Update to parser v2 8 | -------------------------------------------------------------------------------- /packs/fabio/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.2.1 (July 15, 2025) 2 | 3 | - Add `node_pool` variable 4 | 5 | ## 0.2.0 (June 16, 2025) 6 | 7 | - Update to parser v2 8 | 9 | -------------------------------------------------------------------------------- /packs/prometheus/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.2.1 (July 15, 2025) 2 | 3 | - Add `node_pool` variable 4 | 5 | ## 0.2.0 (June 23, 2025) 6 | 7 | - Update to parser v2 8 | -------------------------------------------------------------------------------- /packs/redis/outputs.tpl: -------------------------------------------------------------------------------- 1 | Congrats on deploying [[ meta "pack.name" . ]]! 2 | 3 | There are [[ var "app_count" . ]] instances of your job now running on Nomad. 4 | -------------------------------------------------------------------------------- /packs/simple_service/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.2.1 (July 15, 2025) 2 | 3 | - Add `node_pool` variable 4 | 5 | ## 0.2.0 (June 16, 2025) 6 | 7 | - Update to parser v2 8 | -------------------------------------------------------------------------------- /packs/nomad_autoscaler/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.2.1 (July 15, 2025) 2 | 3 | - Add `node_pool` variable 4 | 5 | ## 0.2.0 (June 16, 2025) 6 | 7 | - Update to parser v2 8 | -------------------------------------------------------------------------------- /packs/nomad_ingress_nginx/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.2.1 (July 15, 2025) 2 | 3 | - Add `node_pool` variable 4 | 5 | ## 0.2.0 (June 16, 2025) 6 | 7 | - Update to parser v2 8 | -------------------------------------------------------------------------------- /packs/csi_openstack_cinder/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.2.1 (July 15, 2025) 2 | 3 | - Add `node_pool` variable 4 | 5 | ## 0.2.0 (June 16, 2025) 6 | 7 | - Update to parser v2 8 | -------------------------------------------------------------------------------- /packs/prometheus_node_exporter/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.2.1 (July 15, 2025) 2 | 3 | - Add `node_pool` variable 4 | 5 | ## 0.2.0 (June 16, 2025) 6 | 7 | - Update to parser v2 8 | -------------------------------------------------------------------------------- /packs/prometheus_snmp_exporter/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.2.1 (July 15, 2025) 2 | 3 | - Add `node_pool` variable 4 | 5 | ## 0.2.0 (June 19, 2025) 6 | 7 | - Update to parser v2 8 | -------------------------------------------------------------------------------- /packs/backstage/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.2.1 (July 15, 2025) 2 | 3 | - Add `node_pool` variable 4 | 5 | ## 0.2.0 (June 16, 2025) 6 | 7 | - Update to parser v2 8 | 9 | 10 | -------------------------------------------------------------------------------- /packs/boundary/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.2.1 (July 15, 2025) 2 | 3 | - Add `node_pool` variable 4 | 5 | ## 0.2.0 (June 16, 2025) 6 | 7 | - Update to parser v2 8 | 9 | 10 | -------------------------------------------------------------------------------- /packs/caddy/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.2.1 (July 15, 2025) 2 | 3 | - Add `node_pool` variable 4 | 5 | ## 0.2.0 (June 16, 2025) 6 | 7 | - Update to parser v2 8 | 9 | 10 | -------------------------------------------------------------------------------- /packs/drone/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.2.1 (July 15, 2025) 2 | 3 | - Add `node_pool` variable 4 | 5 | ## 0.2.0 (June 16, 2025) 6 | 7 | - Update to parser v2 8 | 9 | 10 | -------------------------------------------------------------------------------- /packs/faasd/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.2.1 (July 15, 2025) 2 | 3 | - Add `node_pool` variable 4 | 5 | ## 0.2.0 (June 16, 2025) 6 | 7 | - Update to parser v2 8 | 9 | 10 | -------------------------------------------------------------------------------- /packs/hashicups/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.2.1 (July 15, 2025) 2 | 3 | - Add `node_pool` variable 4 | 5 | ## 0.2.0 (June 17, 2025) 6 | 7 | - Update to parser v2 8 | 9 | 10 | -------------------------------------------------------------------------------- /packs/influxdb/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.2.1 (July 15, 2025) 2 | 3 | - Add `node_pool` variable 4 | 5 | ## 0.2.0 (June 16, 2025) 6 | 7 | - Update to parser v2 8 | 9 | 10 | -------------------------------------------------------------------------------- /packs/prometheus_consul_exporter/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.2.1 (July 15, 2025) 2 | 3 | - Add `node_pool` variable 4 | 5 | ## 0.2.0 (June 16, 2025) 6 | 7 | - Update to parser v2 8 | -------------------------------------------------------------------------------- /packs/alertmanager/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.2.1 (July 15, 2025) 2 | 3 | - Add `node_pool` variable 4 | 5 | ## 0.2.0 (June 16, 2025) 6 | 7 | - Update to parser v2 8 | 9 | 10 | -------------------------------------------------------------------------------- /packs/aws_efs_csi/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.2.1 (July 15, 2025) 2 | 3 | - Add `node_pool` variable 4 | 5 | ## 0.2.0 (June 16, 2025) 6 | 7 | - Update to parser v2 8 | 9 | 10 | -------------------------------------------------------------------------------- /packs/caddy/outputs.tpl: -------------------------------------------------------------------------------- 1 | Congrats! You deployed the [[ meta "pack.name" . ]] pack on Nomad. 2 | 3 | Visit the official documentation for configuring Caddy: 4 | https://caddyserver.com/docs/ 5 | -------------------------------------------------------------------------------- /packs/signoz/outputs.tpl: -------------------------------------------------------------------------------- 1 | Congrats! You deployed the [[ meta "pack.name" . ]] pack on Nomad. 2 | 3 | Visit the official documentation for configuring SigNoz: 4 | https://signoz.io/docs/ 5 | -------------------------------------------------------------------------------- /packs/redis/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.2.1 (July 15, 2025) 2 | 3 | - Add `node_pool` variable 4 | 5 | ## 0.2.0 (June 16, 2025) 6 | 7 | - Update to parser v2 8 | 9 | Added version 0.0.1! 10 | -------------------------------------------------------------------------------- /packs/nginx/outputs.tpl: -------------------------------------------------------------------------------- 1 | Nginx successfully deployed. 2 | 3 | See the Load Balancing with Nginx tutorial for more information: 4 | https://learn.hashicorp.com/tutorials/nomad/load-balancing-nginx 5 | -------------------------------------------------------------------------------- /packs/ctfd/outputs.tpl: -------------------------------------------------------------------------------- 1 | Congrats! You deployed the [[ meta "pack.name" . ]] pack on Nomad. 2 | 3 | Check the official documentation to get started: 4 | https://docsvar "io" ./tutorials/getting-started/ 5 | -------------------------------------------------------------------------------- /packs/haproxy/outputs.tpl: -------------------------------------------------------------------------------- 1 | HAProxy successfully deployed. 2 | 3 | See the Load Balancing with HAProxy tutorial for more information: 4 | https://learn.hashicorp.com/tutorials/nomad/load-balancing-haproxy 5 | -------------------------------------------------------------------------------- /packs/boundary/outputs.tpl: -------------------------------------------------------------------------------- 1 | Congrats! You deployed the [[ meta "pack.name" . ]] pack on Nomad. 2 | 3 | For authenticating to the controller for the first time, use the credentials created by the DB init task. 4 | -------------------------------------------------------------------------------- /packs/ceph/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.2.1 (July 15, 2025) 2 | 3 | - Add `node_pool` variable 4 | 5 | ## 0.2.0 (June 16, 2025) 6 | 7 | - Update to parser v2 8 | 9 | # 0.1.0 10 | 11 | - Initial release 12 | -------------------------------------------------------------------------------- /packs/promtail/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.2.1 (July 15, 2025) 2 | 3 | - Add `node_pool` variable 4 | - Fix a couple missing variables in `variables.hcl` 5 | 6 | ## 0.2.0 (June 16, 2025) 7 | 8 | - Update to parser v2 9 | -------------------------------------------------------------------------------- /packs/tfc_agent/outputs.tpl: -------------------------------------------------------------------------------- 1 | [[ var "count" . ]] Terraform Cloud agents deployed! 2 | 3 | You can view registered agents by logging into Terraform Cloud and 4 | navigating to YourOrg -> Settings -> Agents. 5 | -------------------------------------------------------------------------------- /packs/aws_ebs_csi/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.2.1 (July 15, 2025) 2 | 3 | - Add `node_pool` variable 4 | 5 | ## 0.2.0 (June 16, 2025) 6 | 7 | - Update to parser v2 8 | 9 | # 0.1.0 10 | 11 | - Initial release 12 | -------------------------------------------------------------------------------- /packs/ceph/templates/_resources.tpl: -------------------------------------------------------------------------------- 1 | [[- define "resources" ]] 2 | resources { 3 | cpu = [[ var "resources.cpu" . ]] 4 | memory = [[ var "resources.memory" . ]] 5 | } 6 | [[- end -]] 7 | -------------------------------------------------------------------------------- /packs/ceph_rbd_csi/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.2.1 (July 15, 2025) 2 | 3 | - Add `node_pool` variable 4 | 5 | ## 0.2.0 (June 16, 2025) 6 | 7 | - Update to parser v2 8 | 9 | # 0.1.0 10 | 11 | - Initial release 12 | -------------------------------------------------------------------------------- /.copywrite.hcl: -------------------------------------------------------------------------------- 1 | schema_version = 1 2 | 3 | project { 4 | license = "MPL-2.0" 5 | copyright_year = 2021 6 | 7 | #header_ignore = [ 8 | # "vendor/**", 9 | # "**autogen**", 10 | #] 11 | } 12 | -------------------------------------------------------------------------------- /packs/aws_ebs_csi/templates/_resources.tpl: -------------------------------------------------------------------------------- 1 | [[- define "resources" ]] 2 | resources { 3 | cpu = [[ var "resources.cpu" . ]] 4 | memory = [[ var "resources.memory" . ]] 5 | } 6 | [[- end -]] 7 | -------------------------------------------------------------------------------- /packs/democratic_csi_nfs/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.2.1 (July 15, 2025) 2 | 3 | - Add `node_pool` variable 4 | 5 | ## 0.2.0 (June 23, 2025) 6 | 7 | - Update to parser v2 8 | 9 | # 0.1.0 10 | 11 | - Initial release 12 | -------------------------------------------------------------------------------- /packs/boundary/.ci/vars-required.hcl: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | postgres_address = "test-host" 5 | postgres_username = "test-user" 6 | postgres_password = "test-pass" 7 | -------------------------------------------------------------------------------- /packs/ceph_rbd_csi/templates/_resources.tpl: -------------------------------------------------------------------------------- 1 | [[- define "resources" ]] 2 | resources { 3 | cpu = [[ var "resources.cpu" . ]] 4 | memory = [[ var "resources.memory" . ]] 5 | } 6 | [[- end -]] 7 | -------------------------------------------------------------------------------- /packs/traefik/outputs.tpl: -------------------------------------------------------------------------------- 1 | Traefik successfully deployed. 2 | 3 | See the Load Balancing with Traefik tutorial for more information: 4 | https://developer.hashicorp.com/nomad/tutorials/load-balancing/load-balancing-traefik 5 | -------------------------------------------------------------------------------- /packs/alertmanager/outputs.tpl: -------------------------------------------------------------------------------- 1 | Congrats! You deployed the [[ meta "pack.name" . ]] pack on Nomad. 2 | 3 | See the Alertmanager documentation for more information: 4 | https://prometheus.io/docs/alerting/latest/configuration/ 5 | -------------------------------------------------------------------------------- /packs/democratic_csi_nfs/templates/_resources.tpl: -------------------------------------------------------------------------------- 1 | [[- define "resources" ]] 2 | resources { 3 | cpu = [[ var "resources.cpu" . ]] 4 | memory = [[ var "resources.memory" . ]] 5 | } 6 | [[- end -]] 7 | -------------------------------------------------------------------------------- /packs/csi_openstack_cinder/.ci/vars-required.hcl: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | # this file needs to actually exist 5 | cloud_conf_file = "./packs/csi_openstack_cinder/metadata.hcl" 6 | -------------------------------------------------------------------------------- /packs/drone/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | [[- define "full_job_name" -]] 2 | [[- if eq (var "job_name" .) "" -]] 3 | [[- meta "pack.name" . | quote -]] 4 | [[- else -]] 5 | [[- var "job_name" . | quote -]] 6 | [[- end -]] 7 | [[- end -]] 8 | -------------------------------------------------------------------------------- /packs/fabio/outputs.tpl: -------------------------------------------------------------------------------- 1 | Congrats! You deployed the [[ meta "pack.name" . ]] pack on Nomad. 2 | 3 | See the Load Balancing with Fabio tutorial for more information: 4 | https://learn.hashicorp.com/tutorials/nomad/load-balancing-fabio 5 | -------------------------------------------------------------------------------- /packs/signoz/specs/password.nv.hcl: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corp. 2021, 2025 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | path = "RELEASE" 5 | namespace = "NAMESPACE" 6 | 7 | items { 8 | clickhouse_password = "PASSWORD" 9 | } 10 | -------------------------------------------------------------------------------- /packs/vector/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | [[- define "full_job_name" -]] 2 | [[- if eq (var "job_name" .) "" -]] 3 | [[- meta "pack.name" . | quote -]] 4 | [[- else -]] 5 | [[- var "job_name" . | quote -]] 6 | [[- end -]] 7 | [[- end -]] 8 | -------------------------------------------------------------------------------- /packs/prometheus/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | [[- define "full_job_name" -]] 2 | [[- if eq (var "job_name" .) "" -]] 3 | [[- meta "pack.name" . | quote -]] 4 | [[- else -]] 5 | [[- var "job_name" . | quote -]] 6 | [[- end -]] 7 | [[- end -]] 8 | -------------------------------------------------------------------------------- /packs/prometheus_consul_exporter/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | [[- define "job_name" -]] 2 | [[- if eq (var "job_name" .) "" -]] 3 | [[- meta "pack.name" . | quote -]] 4 | [[- else -]] 5 | [[- var "job_name" . | quote -]] 6 | [[- end -]] 7 | [[- end -]] 8 | -------------------------------------------------------------------------------- /packs/signoz/specs/policy.hcl: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corp. 2021, 2025 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | namespace "NAMESPACE" { 5 | variables { 6 | path "RELEASE" { 7 | capabilities = ["read"] 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /packs/csi_openstack_cinder/cloud.conf.example: -------------------------------------------------------------------------------- 1 | [Global] 2 | auth-url="https://keystone.cloud.example.net:5000/v3" 3 | application-credential-id="f9f4aaf8-3680-11ec-89d6-0242ac110002" 4 | application-credential-secret="imAvwSfkjuzw2ocaieF9t9+vAGRJ3YpBdnQ/+IUeoa0=" 5 | -------------------------------------------------------------------------------- /packs/hello_world/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.2.1 (July 15, 2025) 2 | 3 | - Add `node_pool` variable 4 | 5 | ## 0.2.0 (July 14, 2025) 6 | 7 | - Update to parser v2 8 | - Use Nomad provider for service registration 9 | 10 | ## 0.0.1 11 | 12 | - Initial Release 13 | -------------------------------------------------------------------------------- /packs/democratic_csi_nfs/templates/_location.tpl: -------------------------------------------------------------------------------- 1 | [[ define "location" ]] 2 | [[ template "region" . ]] 3 | [[ template "plugin_namespace" . ]] 4 | datacenters = [[ var "datacenters" . | toJson ]] 5 | node_pool = [[ var "node_pool" . | quote ]] 6 | [[- end -]] 7 | -------------------------------------------------------------------------------- /packs/kibana/kibana.yml: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corp. 2021, 2025 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | server.host: "0" 5 | server.shutdownTimeout: "5s" 6 | elasticsearch.hosts: [ "http://elasticsearch:9200" ] 7 | monitoring.ui.container.elasticsearch.enabled: true 8 | -------------------------------------------------------------------------------- /packs/prometheus_snmp_exporter/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | // Job name 2 | [[- define "full_job_name" -]] 3 | [[- if eq (var "job_name" .) "" -]] 4 | [[- meta "pack.name" . | quote -]] 5 | [[- else -]] 6 | [[- var "job_name" . | quote -]] 7 | [[- end -]] 8 | [[- end -]] 9 | -------------------------------------------------------------------------------- /packs/backstage/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | // allow nomad-pack to set the job name 2 | 3 | // only deploys to a region if specified 4 | [[ define "region" -]] 5 | [[- if not (eq (var "region" .) "") -]] 6 | region = [[ var "region" . | quote]] 7 | [[- end -]] 8 | [[- end -]] 9 | -------------------------------------------------------------------------------- /packs/ceph/templates/_location.tpl: -------------------------------------------------------------------------------- 1 | [[- define "location" ]] 2 | namespace = "[[ var "namespace" . ]]" 3 | region = "[[ var "region" . ]]" 4 | datacenters = [[ var "datacenters" . | toJson ]] 5 | node_pool = [[ var "node_pool" . | quote ]] 6 | [[- end -]] 7 | -------------------------------------------------------------------------------- /packs/csi_openstack_cinder/outputs.tpl: -------------------------------------------------------------------------------- 1 | Cinder CSI Plugin successfully deployed. 2 | 3 | See the Openstack Cinder CSI documentation for more information: 4 | https://github.com/kubernetes/cloud-provider-openstack/blob/master/docs/cinder-csi-plugin/using-cinder-csi-plugin.md 5 | -------------------------------------------------------------------------------- /packs/democratic_csi_nfs/.ci/vars-required.hcl: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | nfs_share_host = "test-localhost" 5 | nfs_controller_mount_path = "/tmp/test-controller-mount" 6 | nfs_share_base_path = "/test-export" 7 | -------------------------------------------------------------------------------- /packs/fabio/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | // allow nomad-pack to set the job name 2 | 3 | [[- define "job_name" -]] 4 | [[- if eq (var "job_name" .) "" -]] 5 | [[- meta "pack.name" . | quote -]] 6 | [[- else -]] 7 | [[- var "job_name" . | quote -]] 8 | [[- end -]] 9 | [[- end -]] 10 | -------------------------------------------------------------------------------- /packs/nomad_ingress_nginx/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | // allow nomad-pack to set the job name 2 | 3 | [[- define "job_name" -]] 4 | [[- if eq (var "job_name" .) "" -]] 5 | [[- meta "pack.name" . -]] 6 | [[- else -]] 7 | [[- var "job_name" . -]] 8 | [[- end -]] 9 | [[- end -]] 10 | -------------------------------------------------------------------------------- /packs/aws_ebs_csi/templates/_location.tpl: -------------------------------------------------------------------------------- 1 | [[- define "location" ]] 2 | namespace = "[[ var "plugin_namespace" . ]]" 3 | region = "[[ var "region" . ]]" 4 | datacenters = [[ var "datacenters" . | toJson ]] 5 | node_pool = [[ var "node_pool" . | quote ]] 6 | [[- end -]] 7 | -------------------------------------------------------------------------------- /packs/ceph_rbd_csi/templates/_location.tpl: -------------------------------------------------------------------------------- 1 | [[- define "location" -]] 2 | namespace = "[[ var "plugin_namespace" . ]]" 3 | region = "[[ var "region" . ]]" 4 | datacenters = [[ var "datacenters" . | toJson ]] 5 | node_pool = [[ var "node_pool" . | quote ]] 6 | [[- end -]] 7 | -------------------------------------------------------------------------------- /packs/tfe_fdo_nomad/outputs.tpl: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | Congrats! You deployed the terraform_enterprise_fdo pack on Nomad. 5 | 6 | You can view your instances of TFE running on the Nomad UI and reach it on the provided hostname. 7 | -------------------------------------------------------------------------------- /packs/hello_world/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | [[- define "job_name" -]] 2 | [[ coalesce ( var "job_name" .) (meta "pack.name" .) | quote ]] 3 | [[- end -]] 4 | 5 | [[ define "region" -]] 6 | [[- if var "region" . -]] 7 | region = "[[ var "region" . ]]" 8 | [[- end -]] 9 | [[- end -]] 10 | -------------------------------------------------------------------------------- /packs/jenkins/examples/vars.nomad: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corp. 2021, 2025 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | docker_jenkins_env_vars = { 5 | "java_opts": "-Dhudson.model.DownloadService.noSignatureCheck=true", 6 | } 7 | volume_name = "jenkins-volume" 8 | register_consul_service = true 9 | -------------------------------------------------------------------------------- /packs/faasd/vars.nomad: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corp. 2021, 2025 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | register_auth_consul_service = true 5 | register_nats_consul_service = true 6 | register_gateway_consul_service = true 7 | register_provider_consul_service = true 8 | dns_servers = ["192.168.105.151"] 9 | -------------------------------------------------------------------------------- /packs/prometheus_node_exporter/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | // allow nomad-pack to set the job name 2 | 3 | [[- define "job_name" -]] 4 | [[- if eq (var "job_name" .) "" -]] 5 | [[- meta "pack.name" . | quote -]] 6 | [[- else -]] 7 | [[- var "job_name" . | quote -]] 8 | [[- end -]] 9 | [[- end -]] 10 | -------------------------------------------------------------------------------- /packs/signoz/specs/volume-signoz.hcl: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | name = "signoz-data" 5 | type = "host" 6 | 7 | plugin_id = "mkdir" 8 | 9 | capability { 10 | access_mode = "single-node-single-writer" 11 | attachment_mode = "file-system" 12 | } 13 | -------------------------------------------------------------------------------- /packs/signoz/specs/volume-clickhouse.hcl: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | name = "clickhouse-data" 5 | type = "host" 6 | 7 | plugin_id = "mkdir" 8 | 9 | capability { 10 | access_mode = "single-node-single-writer" 11 | attachment_mode = "file-system" 12 | } 13 | -------------------------------------------------------------------------------- /packs/signoz/specs/volume-zookeeper.hcl: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | name = "zookeeper-data" 5 | type = "host" 6 | 7 | plugin_id = "mkdir" 8 | 9 | capability { 10 | access_mode = "single-node-single-writer" 11 | attachment_mode = "file-system" 12 | } 13 | -------------------------------------------------------------------------------- /packs/prometheus/alerts_vars.nomad: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corp. 2021, 2025 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | prometheus_task_app_rules_yaml = < | grep -A 8 -i allocation 10 | -------------------------------------------------------------------------------- /packs/loki/README.md: -------------------------------------------------------------------------------- 1 | # Loki 2 | 3 | [Loki](https://grafana.com/oss/loki/) is a horizontally-scalable, highly-available, multi-tenant log aggregation system written by [Grafana Labs](https://grafana.com/) inspired by Prometheus. 4 | 5 | This pack deploys a single instance of a Loki application using the `grafana/loki` Docker image and Consul Service named "loki". 6 | 7 | ## Dependencies 8 | 9 | This pack requires Linux clients to run properly. 10 | -------------------------------------------------------------------------------- /packs/jaeger/README.md: -------------------------------------------------------------------------------- 1 | # Jaeger 2 | 3 | [Jaeger](https://www.jaegertracing.io/) is open source software for tracing transactions between distributed services. It’s used for monitoring and troubleshooting complex microservices environments. 4 | 5 | This pack deploys a single instance of the Jaeger all-in-one docker image `jaegertracing/all-in-one` and a Consul Service named "jaeger". 6 | 7 | ## Dependencies 8 | 9 | This pack requires Linux clients to run properly. 10 | -------------------------------------------------------------------------------- /packs/ctfd/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | // allow nomad-pack to set the job name 2 | 3 | [[- define "job_name" -]] 4 | [[- if eq (var "job_name" .) "" -]] 5 | [[- meta "pack.name" . | quote -]] 6 | [[- else -]] 7 | [[- var "job_name" . | quote -]] 8 | [[- end -]] 9 | [[- end -]] 10 | 11 | // only deploys to a region if specified 12 | 13 | [[- define "region" -]] 14 | [[- if ne (var "region" .) "" -]] 15 | region = [[ var "region" . | quote]] 16 | [[- end -]] 17 | [[- end -]] 18 | -------------------------------------------------------------------------------- /packs/caddy/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | // allow nomad-pack to set the job name 2 | 3 | [[- define "job_name" -]] 4 | [[- if eq (var "job_name" .) "" -]] 5 | [[- meta "pack.name" . | quote -]] 6 | [[- else -]] 7 | [[- var "job_name" . | quote -]] 8 | [[- end -]] 9 | [[- end -]] 10 | 11 | // only deploys to a region if specified 12 | 13 | [[- define "region" -]] 14 | [[- if not (eq (var "region" .) "") -]] 15 | region = [[ var "region" . | quote]] 16 | [[- end -]] 17 | [[- end -]] 18 | -------------------------------------------------------------------------------- /packs/faasd/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | // allow nomad-pack to set the job name 2 | 3 | [[- define "job_name" -]] 4 | [[- if eq (var "job_name" .) "" -]] 5 | [[- meta "pack.name" . | quote -]] 6 | [[- else -]] 7 | [[- var "job_name" . | quote -]] 8 | [[- end -]] 9 | [[- end -]] 10 | 11 | // only deploys to a region if specified 12 | 13 | [[- define "region" -]] 14 | [[- if not (eq (var "region" .) "") -]] 15 | region = [[ var "region" . | quote]] 16 | [[- end -]] 17 | [[- end -]] 18 | -------------------------------------------------------------------------------- /packs/haproxy/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | // allow nomad-pack to set the job name 2 | 3 | [[- define "job_name" -]] 4 | [[- if eq (var "job_name" .) "" -]] 5 | [[- meta "pack.name" . | quote -]] 6 | [[- else -]] 7 | [[- var "job_name" . | quote -]] 8 | [[- end -]] 9 | [[- end -]] 10 | 11 | // only deploys to a region if specified 12 | 13 | [[- define "region" -]] 14 | [[- if not (eq (var "region" .) "") -]] 15 | region = [[ var "region" . | quote]] 16 | [[- end -]] 17 | [[- end -]] 18 | -------------------------------------------------------------------------------- /packs/jaeger/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | // allow nomad-pack to set the job name 2 | 3 | [[- define "job_name" -]] 4 | [[- if eq (var "job_name" .) "" -]] 5 | [[- meta "pack.name" . | quote -]] 6 | [[- else -]] 7 | [[- var "job_name" . | quote -]] 8 | [[- end -]] 9 | [[- end -]] 10 | 11 | // only deploys to a region if specified 12 | 13 | [[- define "region" -]] 14 | [[- if not (eq (var "region" .) "") -]] 15 | region = [[ var "region" . | quote]] 16 | [[- end -]] 17 | [[- end -]] 18 | -------------------------------------------------------------------------------- /packs/jenkins/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | // allow nomad-pack to set the job name 2 | 3 | [[- define "job_name" -]] 4 | [[- if eq (var "job_name" .) "" -]] 5 | [[- meta "pack.name" . | quote -]] 6 | [[- else -]] 7 | [[- var "job_name" . | quote -]] 8 | [[- end -]] 9 | [[- end -]] 10 | 11 | // only deploys to a region if specified 12 | 13 | [[- define "region" -]] 14 | [[- if not (eq (var "region" .) "") -]] 15 | region = [[ var "region" . | quote]] 16 | [[- end -]] 17 | [[- end -]] 18 | -------------------------------------------------------------------------------- /packs/kibana/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | // allow nomad-pack to set the job name 2 | 3 | [[- define "job_name" -]] 4 | [[- if eq (var "job_name" .) "" -]] 5 | [[- meta "pack.name" . | quote -]] 6 | [[- else -]] 7 | [[- var "job_name" . | quote -]] 8 | [[- end -]] 9 | [[- end -]] 10 | 11 | // only deploys to a region if specified 12 | 13 | [[- define "region" -]] 14 | [[- if not (eq (var "region" .) "") -]] 15 | region = [[ var "region" . | quote]] 16 | [[- end -]] 17 | [[- end -]] 18 | -------------------------------------------------------------------------------- /packs/loki/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | // allow nomad-pack to set the job name 2 | 3 | [[- define "job_name" -]] 4 | [[- if eq (var "job_name" .) "" -]] 5 | [[- meta "pack.name" . | quote -]] 6 | [[- else -]] 7 | [[- var "job_name" . | quote -]] 8 | [[- end -]] 9 | [[- end -]] 10 | 11 | // only deploys to a region if specified 12 | 13 | [[- define "region" -]] 14 | [[- if not (eq (var "region" .) "") -]] 15 | region = [[ var "region" . | quote]] 16 | [[- end -]] 17 | [[- end -]] 18 | -------------------------------------------------------------------------------- /packs/nginx/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | // allow nomad-pack to set the job name 2 | 3 | [[- define "job_name" -]] 4 | [[- if eq (var "job_name" .) "" -]] 5 | [[- meta "pack.name" . | quote -]] 6 | [[- else -]] 7 | [[- var "job_name" . | quote -]] 8 | [[- end -]] 9 | [[- end -]] 10 | 11 | // only deploys to a region if specified 12 | 13 | [[- define "region" -]] 14 | [[- if not (eq (var "region" .) "") -]] 15 | region = [[ var "region" . | quote]] 16 | [[- end -]] 17 | [[- end -]] 18 | -------------------------------------------------------------------------------- /packs/outline/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | // allow nomad-pack to set the job name 2 | 3 | [[- define "job_name" -]] 4 | [[- if eq (var "job_name" .) "" -]] 5 | [[- meta "pack.name" . | quote -]] 6 | [[- else -]] 7 | [[- var "job_name" . | quote -]] 8 | [[- end -]] 9 | [[- end -]] 10 | 11 | // only deploys to a region if specified 12 | 13 | [[- define "region" -]] 14 | [[- if not (eq (var "region" .) "") -]] 15 | region = [[ var "region" . | quote]] 16 | [[- end -]] 17 | [[- end -]] 18 | -------------------------------------------------------------------------------- /packs/redis/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | // allow nomad-pack to set the job name 2 | 3 | [[- define "job_name" -]] 4 | [[- if eq (var "job_name" .) "" -]] 5 | [[- meta "pack.name" . | quote -]] 6 | [[- else -]] 7 | [[- var "job_name" . | quote -]] 8 | [[- end -]] 9 | [[- end -]] 10 | 11 | // only deploys to a region if specified 12 | 13 | [[- define "region" -]] 14 | [[- if not (eq (var "region" .) "") -]] 15 | region = [[ var "region" . | quote]] 16 | [[- end -]] 17 | [[- end -]] 18 | -------------------------------------------------------------------------------- /packs/tempo/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | // allow nomad-pack to set the job name 2 | 3 | [[- define "job_name" -]] 4 | [[- if eq (var "job_name" .) "" -]] 5 | [[- meta "pack.name" . | quote -]] 6 | [[- else -]] 7 | [[- var "job_name" . | quote -]] 8 | [[- end -]] 9 | [[- end -]] 10 | 11 | // only deploys to a region if specified 12 | 13 | [[- define "region" -]] 14 | [[- if not (eq (var "region" .) "") -]] 15 | region = [[ var "region" . | quote]] 16 | [[- end -]] 17 | [[- end -]] 18 | -------------------------------------------------------------------------------- /packs/traefik/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | // allow nomad-pack to set the job name 2 | 3 | [[- define "job_name" -]] 4 | [[- if eq (var "job_name" .) "" -]] 5 | [[- meta "pack.name" . | quote -]] 6 | [[- else -]] 7 | [[- var "job_name" . | quote -]] 8 | [[- end -]] 9 | [[- end -]] 10 | 11 | // only deploys to a region if specified 12 | 13 | [[- define "region" -]] 14 | [[- if not (eq (var "region" .) "") -]] 15 | region = [[ var "region" . | quote]] 16 | [[- end -]] 17 | [[- end -]] 18 | -------------------------------------------------------------------------------- /packs/alertmanager/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | // allow nomad-pack to set the job name 2 | 3 | [[- define "job_name" -]] 4 | [[- if eq (var "job_name" .) "" -]] 5 | [[- meta "pack.name" . | quote -]] 6 | [[- else -]] 7 | [[- var "job_name" . | quote -]] 8 | [[- end -]] 9 | [[- end -]] 10 | 11 | // only deploys to a region if specified 12 | 13 | [[- define "region" -]] 14 | [[- if not (eq (var "region" .) "") -]] 15 | region = [[ var "region" . | quote]] 16 | [[- end -]] 17 | [[- end -]] 18 | -------------------------------------------------------------------------------- /packs/boundary/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | // allow nomad-pack to set the job name 2 | 3 | [[- define "job_name" -]] 4 | [[- if eq (var "job_name" .) "" -]] 5 | [[- meta "pack.name" . | quote -]] 6 | [[- else -]] 7 | [[- var "job_name" . | quote -]] 8 | [[- end -]] 9 | [[- end -]] 10 | 11 | // only deploys to a region if specified 12 | 13 | [[- define "region" -]] 14 | [[- if not (eq (var "region" .) "") -]] 15 | region = [[ var "region" . | quote]] 16 | [[- end -]] 17 | [[- end -]] 18 | -------------------------------------------------------------------------------- /packs/influxdb/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | // allow nomad-pack to set the job name 2 | 3 | [[- define "job_name" -]] 4 | [[- if eq (var "job_name" .) "" -]] 5 | [[- meta "pack.name" . | quote -]] 6 | [[- else -]] 7 | [[- var "job_name" . | quote -]] 8 | [[- end -]] 9 | [[- end -]] 10 | 11 | // only deploys to a region if specified 12 | 13 | [[- define "region" -]] 14 | [[- if not (eq (var "region" .) "") -]] 15 | region = [[ var "region" . | quote]] 16 | [[- end -]] 17 | [[- end -]] 18 | -------------------------------------------------------------------------------- /packs/sonarqube/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | // allow nomad-pack to set the job name 2 | 3 | [[- define "job_name" -]] 4 | [[- if eq (var "job_name" .) "" -]] 5 | [[- meta "pack.name" . | quote -]] 6 | [[- else -]] 7 | [[- var "job_name" . | quote -]] 8 | [[- end -]] 9 | [[- end -]] 10 | 11 | // only deploys to a region if specified 12 | 13 | [[- define "region" -]] 14 | [[- if not (eq (var "region" .) "") -]] 15 | region = [[ var "region" . | quote]] 16 | [[- end -]] 17 | [[- end -]] 18 | -------------------------------------------------------------------------------- /packs/wordpress/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | // allow nomad-pack to set the job name 2 | 3 | [[- define "job_name" -]] 4 | [[- if eq (var "job_name" .) "" -]] 5 | [[- meta "pack.name" . | quote -]] 6 | [[- else -]] 7 | [[- var "job_name" . | quote -]] 8 | [[- end -]] 9 | [[- end -]] 10 | 11 | // only deploys to a region if specified 12 | 13 | [[- define "region" -]] 14 | [[- if not (eq (var "region" .) "") -]] 15 | region = [[ var "region" . | quote]] 16 | [[- end -]] 17 | [[- end -]] 18 | -------------------------------------------------------------------------------- /packs/chaotic_ngine/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | // allow nomad-pack to set the job name 2 | 3 | [[- define "job_name" -]] 4 | [[- if eq (var "job_name" .) "" -]] 5 | [[- meta "pack.name" . | quote -]] 6 | [[- else -]] 7 | [[- var "job_name" . | quote -]] 8 | [[- end -]] 9 | [[- end -]] 10 | 11 | // only deploys to a region if specified 12 | 13 | [[- define "region" -]] 14 | [[- if not (eq (var "region" .) "") -]] 15 | region = [[ var "region" . | quote]] 16 | [[- end -]] 17 | [[- end -]] 18 | -------------------------------------------------------------------------------- /packs/simple_service/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | // allow nomad-pack to set the job name 2 | 3 | [[- define "job_name" -]] 4 | [[- if eq (var "job_name" .) "" -]] 5 | [[- meta "pack.name" . | quote -]] 6 | [[- else -]] 7 | [[- var "job_name" . | quote -]] 8 | [[- end -]] 9 | [[- end -]] 10 | 11 | // only deploys to a region if specified 12 | 13 | [[- define "region" -]] 14 | [[- if not (eq (var "region" .) "") -]] 15 | region = [[ var "region" . | quote]] 16 | [[- end -]] 17 | [[- end -]] 18 | -------------------------------------------------------------------------------- /scripts/fixem.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Copyright (c) HashiCorp, Inc. 3 | # SPDX-License-Identifier: MPL-2.0 4 | 5 | 6 | test -d packs || { 7 | echo 'please run this from the repo root' 8 | exit 1 9 | } 10 | 11 | mkdir -p fixlogs 12 | 13 | ls packs | while read -r p; do 14 | "$(dirname $0)/update-parser-v2.sh" "packs/$p" "$p" 2>&1 >> "./fixlogs/$p.log" && printf "💚" || printf "⭕" 15 | printf " $p\n" 16 | done 17 | 18 | tail fixlogs/* | grep -E '(Error|Filename|Position).*' 19 | -------------------------------------------------------------------------------- /packs/tfe_fdo_nomad/.ci/vars-required.hcl: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | tfe_hostname = "localhost" 5 | tfe_database_host = "localhost" 6 | tfe_redis_host = "localhost" 7 | 8 | tfe_object_storage_s3_endpoint = "s3-fakery" 9 | tfe_object_storage_s3_access_key_id = "s3-fake-id" 10 | 11 | # these aren't strictly required, 12 | # but default to non-existent namespaces 13 | tfe_namespace = "default" 14 | tfe_agent_namespace = "default" 15 | -------------------------------------------------------------------------------- /packs/rabbitmq/metadata.hcl: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corp. 2021, 2025 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | app { 5 | url = "https://www.rabbitmq.com" 6 | author = "VMWare" 7 | } 8 | 9 | pack { 10 | name = "rabbitmq" 11 | description = "A RabbitMQ Cluster" 12 | url = "https://github.com/hashicorp/nomad-pack-community-registry/rabbitmq" 13 | version = "0.2.1" 14 | } 15 | 16 | integration { 17 | identifier = "nomad/hashicorp/rabbitmq" 18 | name = "RabbitMQ" 19 | } 20 | -------------------------------------------------------------------------------- /packs/nextcloud/metadata.hcl: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corp. 2021, 2025 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | app { 5 | url = "https://nextcloud.com/" 6 | author = "Nextcloud GmbH" 7 | } 8 | 9 | pack { 10 | name = "nextcloud" 11 | description = "NextCloud" 12 | url = "https://github.com/hashicorp/nomad-pack-community-registry/nextcloud" 13 | version = "0.2.1" 14 | } 15 | 16 | integration { 17 | identifier = "nomad/hashicorp/nextcloud" 18 | name = "NextCloud" 19 | } 20 | -------------------------------------------------------------------------------- /packs/hello_world/metadata.hcl: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corp. 2021, 2025 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | app { 5 | url = "https://learn.hashicorp.com/tutorials/nomad/get-started-run?in=nomad/get-started" 6 | } 7 | 8 | pack { 9 | name = "hello_world" 10 | description = "This deploys a simple applicaton as a service with an optional associated Nomad service." 11 | version = "0.2.1" 12 | } 13 | 14 | integration { 15 | identifier = "nomad/hashicorp/hello-world" 16 | name = "Hello World" 17 | } 18 | -------------------------------------------------------------------------------- /packs/hashicups/metadata.hcl: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corp. 2021, 2025 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | app { 5 | url = "https://github.com/hashicorp-demoapp" 6 | author = "HashiCorp" 7 | } 8 | 9 | pack { 10 | name = "hashicups" 11 | description = "HashiCups Demo coffee application." 12 | url = "https://github.com/hashicorp/nomad-pack-community-registry/hashicups" 13 | version = "0.2.1" 14 | } 15 | 16 | integration { 17 | identifier = "nomad/hashicorp/hashicups" 18 | name = "HashiCups" 19 | } 20 | -------------------------------------------------------------------------------- /packs/signoz/metadata.hcl: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corp. 2021, 2025 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | app { 5 | url = "https://signoz.io" 6 | author = "SigNoz" 7 | } 8 | pack { 9 | name = "signoz" 10 | description = "SigNoz is an open-source observability platform that enables you to collect, store, and analyze distributed application traces, metrics, and logs using the OpenTelemetry" 11 | version = "0.1.0" 12 | url = "https://github.com/hashicorp/nomad-pack-community-registry/signoz" 13 | } 14 | -------------------------------------------------------------------------------- /packs/democratic_csi_nfs/metadata.hcl: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corp. 2021, 2025 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | app { 5 | url = "https://github.com/democratic-csi/democratic-csi" 6 | author = "Tim Gross " 7 | } 8 | 9 | pack { 10 | name = "democratic_csi_nfs" 11 | description = "This pack deploys the democratic-csi plugin, configured for use with NFS" 12 | url = "https://github.com/hashicorp/nomad-pack-community-registry/democratic_csi_nfs" 13 | version = "0.2.1" 14 | } 15 | -------------------------------------------------------------------------------- /packs/wordpress/metadata.hcl: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | app { 5 | url = "https://wordpress.org/" 6 | author = "WordPress contributors" 7 | } 8 | 9 | pack { 10 | name = "wordpress" 11 | description = "WordPress - Open-source CMS" 12 | url = "https://github.com/hashicorp/nomad-pack-community-registry/wordpress" 13 | version = "0.2.1" 14 | } 15 | 16 | integration { 17 | identifier = "nomad/hashicorp/wordpress" 18 | name = "Wordpress" 19 | } 20 | -------------------------------------------------------------------------------- /packs/vector/metadata.hcl: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | app { 5 | url = "https://vector.dev/" 6 | author = "Datadog" 7 | } 8 | 9 | pack { 10 | name = "vector" 11 | description = "Vector is a high-performance observability data pipeline." 12 | url = "https://github.com/hashicorp/nomad-pack-community-registry/tree/main/vector" 13 | version = "0.2.1" 14 | } 15 | 16 | integration { 17 | identifier = "nomad/hashicorp/vector" 18 | name = "Vector" 19 | } 20 | -------------------------------------------------------------------------------- /packs/backstage/metadata.hcl: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corp. 2021, 2025 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | app { 5 | url = "https://backstage.io" 6 | author = "Backstage community" 7 | } 8 | pack { 9 | name = "backstage" 10 | description = "An open platform for building developer portals" 11 | url = "https://github.com/hashicorp/nomad-pack-community-registry/backstage" 12 | version = "0.2.1" 13 | } 14 | 15 | integration { 16 | identifier = "nomad/hashicorp/backstage" 17 | name = "Backstage" 18 | } 19 | -------------------------------------------------------------------------------- /packs/ceph/metadata.hcl: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corp. 2021, 2025 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | app { 5 | url = "https://github.com/ceph/ceph-container" 6 | author = "Tim Gross " 7 | } 8 | 9 | pack { 10 | name = "ceph" 11 | description = "This pack deploys Ceph in demo mode" 12 | url = "https://github.com/hashicorp/nomad-pack-community-registry/ceph" 13 | version = "0.2.1" 14 | } 15 | 16 | integration { 17 | identifier = "nomad/hashicorp/ceph" 18 | name = "Ceph" 19 | } 20 | -------------------------------------------------------------------------------- /packs/ctfd/metadata.hcl: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corp. 2021, 2025 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | app { 5 | url = "https://ctfd.io/" 6 | author = "CTFd" 7 | } 8 | 9 | pack { 10 | name = "ctfd" 11 | description = "The open source Capture The Flag framework for hiring, training, and teaching hackers" 12 | url = "https://github.com/hashicorp/nomad-pack-community-registry/ctfd" 13 | version = "0.2.1" 14 | } 15 | 16 | integration { 17 | identifier = "nomad/hashicorp/ctfd" 18 | name = "CTFd" 19 | } 20 | -------------------------------------------------------------------------------- /packs/simple_service/outputs.tpl: -------------------------------------------------------------------------------- 1 | Congrats! You deployed the [[ meta "pack.name" . ]] pack on Nomad. 2 | 3 | There are [[ var "count" . ]] instances of your job now running. 4 | 5 | The service is using the image: [[ var "image" . | quote]] 6 | 7 | [[ if var "register_consul_service" . ]] 8 | You registered an associated Consul service named [[ var "consul_service_name" . ]]. 9 | 10 | [[ if var "has_health_check" . ]] 11 | This service has a health check at the path : [[ var "health_check.path" . | quote ]] 12 | [[ end ]] 13 | [[ end ]] 14 | 15 | -------------------------------------------------------------------------------- /packs/faasd/metadata.hcl: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corp. 2021, 2025 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | app { 5 | url = "https://www.openfaas.com" 6 | author = "Openfaas" 7 | } 8 | 9 | pack { 10 | name = "faasd" 11 | description = "Faasd is OpenFaaS reimagined, but without the cost and complexity of Kubernetes." 12 | url = "https://github.com/hashicorp/nomad-pack-community-registry/faasd" 13 | version = "0.2.1" 14 | } 15 | 16 | integration { 17 | identifier = "nomad/hashicorp/faasd" 18 | name = "Faasd" 19 | } 20 | -------------------------------------------------------------------------------- /packs/tfc_agent/metadata.hcl: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | app { 5 | url = "https://www.terraform.io/docs/cloud/agents/index.html" 6 | author = "HashiCorp" 7 | } 8 | 9 | pack { 10 | name = "tfc_agent" 11 | description = "Terraform Cloud Agent" 12 | url = "https://github.com/hashicorp/nomad-pack-community-registry/tree/main/tfc_agent" 13 | version = "0.2.1" 14 | } 15 | 16 | integration { 17 | identifier = "nomad/hashicorp/tfc-agent" 18 | name = "TFC Agent" 19 | } 20 | -------------------------------------------------------------------------------- /packs/drone/metadata.hcl: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corp. 2021, 2025 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | app { 5 | url = "https://drone.io/" 6 | author = "Harness" 7 | } 8 | 9 | pack { 10 | name = "drone" 11 | description = "Drone is a self-service Continuous Integration platform for busy development teams." 12 | url = "https://github.com/hashicorp/nomad-pack-community-registry/tree/main/drone" 13 | version = "0.2.1" 14 | } 15 | 16 | integration { 17 | identifier = "nomad/hashicorp/drone" 18 | name = "Drone" 19 | } 20 | -------------------------------------------------------------------------------- /packs/outline/metadata.hcl: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corp. 2021, 2025 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | app { 5 | url = "https://www.getoutline.com/" 6 | author = "General Outline, Inc. and contributors" 7 | } 8 | 9 | pack { 10 | name = "outline" 11 | description = "Outline - Wiki and knowledgebase for teams" 12 | url = "https://github.com/hashicorp/nomad-pack-community-registry/outline" 13 | version = "0.2.1" 14 | } 15 | 16 | integration { 17 | identifier = "nomad/hashicorp/outline" 18 | name = "Outline" 19 | } 20 | -------------------------------------------------------------------------------- /packs/redis/metadata.hcl: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corp. 2021, 2025 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | app { 5 | url = "https://github.com/redis/redis" 6 | author = "Redis" 7 | } 8 | 9 | pack { 10 | name = "redis" 11 | description = "Redis - Open-source, networked, in-memory, key-value data store -- STANDALONE INSTANCE" 12 | url = "https://github.com/hashicorp/nomad-pack-community-registry/redis" 13 | version = "0.2.1" 14 | } 15 | 16 | integration { 17 | identifier = "nomad/hashicorp/redis" 18 | name = "Redis" 19 | } 20 | -------------------------------------------------------------------------------- /packs/aws_ebs_csi/templates/_constraints.tpl: -------------------------------------------------------------------------------- 1 | [[- define "constraints" -]] 2 | constraint { 3 | attribute = "${attr.kernel.name}" 4 | value = "linux" 5 | } 6 | 7 | [[ range $idx, $constraint := var "constraints" . ]] 8 | constraint { 9 | attribute = [[ $constraint.attribute | quote ]] 10 | [[- if $constraint.value ]] 11 | value = [[ $constraint.value | quote ]] 12 | [[- end ]] 13 | [[- if $constraint.operator ]] 14 | operator = [[ $constraint.operator | quote ]] 15 | [[- end ]] 16 | } 17 | [[- end ]][[- end ]] 18 | -------------------------------------------------------------------------------- /packs/jenkins/examples/vars_jasc.nomad: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corp. 2021, 2025 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | docker_jenkins_env_vars = { 5 | "java_opts": "-Djava.awt.headless=true -Djenkins.install.runSetupWizard=false", 6 | } 7 | volume_name = "jenkins-volume" 8 | register_consul_service = true 9 | plugins = ["configuration-as-code", "job-dsl"] 10 | jasc_config = < 15 | job('jobdsl_test') { 16 | steps { 17 | shell('whoami') 18 | } 19 | } 20 | EOF 21 | -------------------------------------------------------------------------------- /packs/ceph_rbd_csi/templates/_constraints.tpl: -------------------------------------------------------------------------------- 1 | [[ define "constraints" ]] 2 | constraint { 3 | attribute = "${attr.kernel.name}" 4 | value = "linux" 5 | } 6 | 7 | [[ range $idx, $constraint := var "constraints" . ]] 8 | constraint { 9 | attribute = [[ $constraint.attribute | quote ]] 10 | [[- if $constraint.value ]] 11 | value = [[ $constraint.value | quote ]] 12 | [[- end ]] 13 | [[- if $constraint.operator ]] 14 | operator = [[ $constraint.operator | quote ]] 15 | [[- end ]] 16 | } 17 | [[- end ]][[- end ]] 18 | -------------------------------------------------------------------------------- /packs/grafana/metadata.hcl: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corp. 2021, 2025 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | app { 5 | url = "https://grafana.com/" 6 | author = "Grafana" 7 | } 8 | 9 | pack { 10 | name = "grafana" 11 | description = "Grafana is a multi-platform open source analytics and interactive visualization web application." 12 | url = "https://github.com/hashicorp/nomad-pack-community-registry/grafana" 13 | version = "0.2.1" 14 | } 15 | 16 | integration { 17 | identifier = "nomad/hashicorp/grafana" 18 | name = "Grafana" 19 | } 20 | -------------------------------------------------------------------------------- /packs/traefik/metadata.hcl: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | app { 5 | url = "https://traefik.io/" 6 | author = "Traefik Labs" 7 | } 8 | 9 | pack { 10 | name = "traefik" 11 | description = "Traefik is a modern reverse proxy and load balancer. It runs as a Nomad system job." 12 | url = "https://github.com/hashicorp/nomad-pack-community-registry/tree/main/traefik" 13 | version = "0.2.1" 14 | } 15 | 16 | integration { 17 | identifier = "nomad/hashicorp/traefik" 18 | name = "Traefik" 19 | } 20 | -------------------------------------------------------------------------------- /packs/prometheus/metadata.hcl: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corp. 2021, 2025 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | app { 5 | url = "https://prometheus.io/" 6 | author = "Prometheus" 7 | } 8 | 9 | pack { 10 | name = "prometheus" 11 | description = "Prometheus is used to collect telemetry data and make it queryable." 12 | url = "https://github.com/hashicorp/nomad-pack-community-registry/tree/main/prometheus" 13 | version = "0.2.1" 14 | } 15 | 16 | integration { 17 | identifier = "nomad/hashicorp/prometheus-pack" 18 | name = "Prometheus" 19 | } 20 | -------------------------------------------------------------------------------- /packs/ceph_rbd_csi/metadata.hcl: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corp. 2021, 2025 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | app { 5 | url = "https://github.com/ceph/ceph-csi" 6 | author = "Tim Gross " 7 | } 8 | 9 | pack { 10 | name = "ceph_rbd_csi" 11 | description = "This pack deploys the Ceph RBD CSI plugin" 12 | url = "https://github.com/hashicorp/nomad-pack-community-registry/ceph_rbd_csi" 13 | version = "0.2.1" 14 | } 15 | 16 | integration { 17 | identifier = "nomad/hashicorp/ceph-rbd-csi" 18 | name = "Ceph RBD CSI" 19 | } 20 | -------------------------------------------------------------------------------- /packs/influxdb/metadata.hcl: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corp. 2021, 2025 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | app { 5 | url = "https://www.influxdata.com/" 6 | author = "InfluxDB" 7 | } 8 | 9 | pack { 10 | name = "influxdb" 11 | description = "InfluxDB is an open source time series database for recording metrics, events, and analytics." 12 | url = "https://github.com/hashicorp/nomad-pack-community-registry/influxdb" 13 | version = "0.2.1" 14 | } 15 | 16 | integration { 17 | identifier = "nomad/hashicorp/influxdb" 18 | name = "InfluxDB" 19 | } 20 | -------------------------------------------------------------------------------- /packs/nomad_ingress_nginx/outputs.tpl: -------------------------------------------------------------------------------- 1 | Nomad Ingress Nginx successfully deployed. 2 | 3 | Define service meta values or tags to start using it. 4 | 5 | service { 6 | name = "webapp" 7 | port = "http" 8 | 9 | tags = [ 10 | "nomad_ingress_enabled=true", 11 | "nomad_ingress_hostname=webapp.example.com", 12 | ] 13 | } 14 | 15 | service { 16 | name = "webapp" 17 | port = "http" 18 | 19 | meta { 20 | nomad_ingress_enabled = true 21 | nomad_ingress_hostname = "webapp.example.com" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /packs/kibana/vars.nomad: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corp. 2021, 2025 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | docker_kibana_env_vars = { 5 | "server_name": "kibana.example.org", 6 | "server_host": "0.0.0.0", 7 | "monitoring_enabled": "false", 8 | "monitoring_ui_container_elasticsearch_enabled": "false", 9 | "telemetry_enabled" = "false", 10 | "status_allowanonymous" = "true", 11 | "xpack_security_enabled" = "false", 12 | } 13 | config_volume_name = "kibana_config" 14 | kibana_config_file_path = "kibana.yml" 15 | kibana_keystore_name = "keystore" 16 | register_consul_service = true 17 | -------------------------------------------------------------------------------- /packs/loki/metadata.hcl: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corp. 2021, 2025 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | app { 5 | url = "https://grafana.com/oss/loki/" 6 | author = "Grafana Labs" 7 | } 8 | 9 | pack { 10 | name = "loki" 11 | description = "Loki is a horizontally-scalable, highly-available, multi-tenant log aggregation system inspired by Prometheus." 12 | url = "https://github.com/hashicorp/nomad-pack-community-registry/loki" 13 | version = "0.2.1" 14 | } 15 | 16 | integration { 17 | identifier = "nomad/hashicorp/loki" 18 | name = "Loki" 19 | } 20 | -------------------------------------------------------------------------------- /packs/chaotic_ngine/metadata.hcl: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corp. 2021, 2025 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | app { 5 | url = "https://github.com/ngine-io/chaotic" 6 | author = "René Moser (@resmo)" 7 | } 8 | 9 | pack { 10 | name = "chaotic_ngine" 11 | description = "Chaotic is a fault injection tool which runs periodically as a batch job in Nomad" 12 | url = "https://github.com/hashicorp/nomad-pack-community-registry/chaotic_ngine" 13 | version = "0.2.1" 14 | } 15 | 16 | integration { 17 | identifier = "nomad/hashicorp/chaotic-ngine" 18 | name = "Chaotic Ngine" 19 | } 20 | -------------------------------------------------------------------------------- /packs/aws_ebs_csi/metadata.hcl: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corp. 2021, 2025 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | app { 5 | url = "https://github.com/kubernetes-sigs/aws-ebs-csi-driver" 6 | author = "Tim Gross " 7 | } 8 | 9 | pack { 10 | name = "aws_ebs_csi" 11 | description = "This pack deploys the AWS EBS CSI plugin" 12 | url = "https://github.com/hashicorp/nomad-pack-community-registry/aws_ebs_csi" 13 | version = "0.2.1" 14 | } 15 | 16 | integration { 17 | identifier = "nomad/hashicorp/aws-ebs-csi" 18 | name = "AWS EBS CSI" 19 | } 20 | -------------------------------------------------------------------------------- /packs/kibana/metadata.hcl: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corp. 2021, 2025 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | app { 5 | url = "https://www.elastic.co/" 6 | author = "elastic" 7 | } 8 | 9 | pack { 10 | name = "kibana" 11 | description = "Kibana is a free and open user interface that lets you visualize your Elasticsearch data and navigate the Elastic Stack." 12 | url = "https://github.com/hashicorp/nomad-pack-community-registry/kibana" 13 | version = "0.2.1" 14 | } 15 | 16 | integration { 17 | identifier = "nomad/hashicorp/kibana" 18 | name = "Kibana" 19 | } 20 | -------------------------------------------------------------------------------- /packs/opentelemetry_collector/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.2.1 (July 15, 2025) 2 | 3 | - Add `node_pool` variable 4 | 5 | ## 0.2.0 (June 19, 2025) 6 | 7 | - Update to parser v2 8 | - fix typo in `additional_templates` variable's object definition 9 | 10 | ## 0.0.2 (May 17, 2022) 11 | 12 | - Update OpenTelemetry Collector image to 0.50.0 and add configs for Traefik with HTTP and gRPC. [[GH-128](https://github.com/hashicorp/nomad-pack-community-registry/pull/128)] 13 | 14 | ## 0.0.1 (February 3, 2022) 15 | 16 | - Initial release [[GH-86](https://github.com/hashicorp/nomad-pack-community-registry/pull/86)] 17 | -------------------------------------------------------------------------------- /packs/boundary/metadata.hcl: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corp. 2021, 2025 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | app { 5 | url = "https://www.boundaryproject.io/" 6 | author = "HashiCorp" 7 | } 8 | 9 | pack { 10 | name = "boundary" 11 | description = "Boundary is an intelligent proxy that creates granular, identity-based access controls for dynamic infrastructure." 12 | url = "https://github.com/hashicorp/nomad-pack-community-registry/boundary" 13 | version = "0.2.1" 14 | } 15 | 16 | integration { 17 | identifier = "nomad/hashicorp/boundary" 18 | name = "Boundary" 19 | } 20 | -------------------------------------------------------------------------------- /packs/fabio/metadata.hcl: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corp. 2021, 2025 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | app { 5 | url = "https://fabiolb.net/" 6 | author = "Education Networks of America" 7 | } 8 | 9 | pack { 10 | name = "fabio" 11 | description = "Fabio is an HTTP and TCP reverse proxy that configures itself with data from Consul and that runs as a Nomad system job." 12 | url = "https://github.com/hashicorp/nomad-pack-community-registry/fabio" 13 | version = "0.2.1" 14 | } 15 | 16 | integration { 17 | identifier = "nomad/hashicorp/fabio" 18 | name = "Fabio" 19 | } 20 | -------------------------------------------------------------------------------- /packs/jaeger/metadata.hcl: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corp. 2021, 2025 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | app { 5 | url = "https://www.jaegertracing.io/" 6 | author = "The Jaeger Authors" 7 | } 8 | 9 | pack { 10 | name = "jaeger" 11 | description = "Open source, end-to-end distributed tracing. Monitor and troubleshoot transactions in complex distributed systems" 12 | url = "https://github.com/hashicorp/nomad-pack-community-registry/jaeger" 13 | version = "0.2.1" 14 | } 15 | 16 | integration { 17 | identifier = "nomad/hashicorp/jaeger" 18 | name = "Jaeger" 19 | } 20 | -------------------------------------------------------------------------------- /packs/prometheus_consul_exporter/outputs.tpl: -------------------------------------------------------------------------------- 1 | Prometheus Consul Exporter successfully deployed. 2 | 3 | [[- if var "consul_exporter_task_services" . ]] 4 | 5 | The following example Prometheus config yaml can be used to scrape the Consul 6 | exporter. The `consul_sd_configs.server` entry will need updating to match your 7 | environment and deployment. 8 | 9 | - job_name: "consul_exporter" 10 | metrics_path: "/metrics" 11 | consul_sd_configs: 12 | - server: "consul.example.com:8500" 13 | services: 14 | - [[ (index var "consul_exporter_task_services" . 0).service_name | quote ]] 15 | [[- end ]] 16 | -------------------------------------------------------------------------------- /packs/tempo/README.md: -------------------------------------------------------------------------------- 1 | # tempo 2 | 3 | Grafana [Tempo](https://grafana.com/oss/tempo/) is an open source, easy-to-use and high-scale distributed tracing backend. Tempo is cost-efficient, requiring only object storage to operate, and is deeply integrated with Grafana, Prometheus, and Loki. Tempo can be used with any of the open source tracing protocols, including Jaeger, Zipkin, and OpenTelemetry. 4 | 5 | This pack deploys a single instance of a tempo application using the `grafana/tempo` Docker image and Consul Service named "tempo". 6 | 7 | ## Dependencies 8 | 9 | This pack requires Linux clients to run properly. 10 | -------------------------------------------------------------------------------- /packs/alertmanager/README.md: -------------------------------------------------------------------------------- 1 | # alertmanager 2 | 3 | The [Alertmanager](hhttps://github.com/prometheus/alertmanager) handles alerts sent by client applications such as the Prometheus server. It takes care of deduplicating, grouping, and routing them to the correct receiver integrations such as email, PagerDuty, or OpsGenie. It also takes care of silencing and inhibition of alerts. 4 | 5 | This pack deploys a single instance of an alertmanager application using the `prom/alertmanager` Docker image and Consul Service named "alertmanager". 6 | 7 | ## Dependencies 8 | 9 | This pack requires Linux clients to run properly. 10 | -------------------------------------------------------------------------------- /packs/aws_efs_csi/metadata.hcl: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corp. 2021, 2025 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | app { 5 | url = "https://github.com/kubernetes-sigs/aws-efs-csi-driver" 6 | author = "Kubernetes SIGs" 7 | } 8 | 9 | pack { 10 | name = "aws_efs_csi" 11 | description = "Configures a set of nodes to run the AWS EFS CSI volume plugin." 12 | url = "https://github.com/hashicorp/nomad-pack-community-registry/tree/main/aws-efs-csi-driver" 13 | version = "0.2.1" 14 | } 15 | 16 | integration { 17 | identifier = "nomad/hashicorp/aws-efs-csi" 18 | name = "AWS EFS CSI" 19 | } 20 | -------------------------------------------------------------------------------- /packs/influxdb/vars.nomad: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corp. 2021, 2025 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | docker_influxdb_env_vars = { 5 | "docker_influxdb_init_mode" : "setup", 6 | "docker_influxdb_init_retention" : "1w", 7 | "docker_influxdb_init_admin_token" : "my-super-secret-auth-token", 8 | "docker_influxdb_init_username" : "my-user", 9 | "docker_influxdb_init_password" : "my-password", 10 | "docker_influxdb_init_org" : "my-org", 11 | "docker_influxdb_init_bucket" : "my-bucket", 12 | } 13 | config_volume_name = "config_volume" 14 | data_volume_name = "data_volume" 15 | register_consul_service = true 16 | -------------------------------------------------------------------------------- /packs/jenkins/metadata.hcl: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corp. 2021, 2025 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | app { 5 | url = "https://www.jenkins.io/" 6 | author = "CloudBees" 7 | } 8 | 9 | pack { 10 | name = "jenkins" 11 | description = "Jenkins is an open source automation server which enables developers around the world to reliably build, test, and deploy their software." 12 | url = "https://github.com/hashicorp/nomad-pack-community-registry/jenkins" 13 | version = "0.2.1" 14 | } 15 | 16 | integration { 17 | identifier = "nomad/hashicorp/jenkins" 18 | name = "Jenkins" 19 | } 20 | -------------------------------------------------------------------------------- /packs/grafana/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.2.1 (July 15, 2025) 2 | 3 | - Add `node_pool` variable 4 | 5 | ## 0.2.0 (June 27, 2025) 6 | 7 | - Update to parser v2 8 | 9 | ## 0.1.1 Support for grafana.ini and vault 10 | 11 | ## 0.1.0 Redesign of Pack 12 | 13 | - Breaking Change: all Variables related to Grafana are prefixed with `grafana_` 14 | - added `grafana_volume` for persistent data 15 | - added `grafana_task_artifacts` for custom Artifacts in Grafana 16 | - added `grafana_task_config_dashboards`, `grafana_task_config_datasources` and `grafana_task_config_plugins` for automatic Grafana setup 17 | 18 | ## 0.0.1 Initial Release 19 | -------------------------------------------------------------------------------- /packs/nginx/metadata.hcl: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corp. 2021, 2025 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | app { 5 | url = "https://www.nginx.com/" 6 | author = "F5 Networks" 7 | } 8 | 9 | pack { 10 | name = "nginx" 11 | description = "Nginx is a web server that can also be used as a reverse proxy, load balancer, mail proxy and HTTP cache. This pack runs it runs as a Nomad system job for load balancing." 12 | url = "https://github.com/hashicorp/nomad-pack-community-registry/nginx" 13 | version = "0.2.1" 14 | } 15 | 16 | integration { 17 | identifier = "nomad/hashicorp/nginx" 18 | name = "Nginx" 19 | } 20 | -------------------------------------------------------------------------------- /packs/promtail/metadata.hcl: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corp. 2021, 2025 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | app { 5 | url = "https://grafana.com/docs/promtail/latest/clients/promtail" 6 | author = "Grafana" 7 | } 8 | 9 | pack { 10 | name = "promtail" 11 | description = "Promtail is an agent which ships the contents of local logs to a private Loki instance or Grafana Cloud." 12 | url = "https://github.com/hashicorp/nomad-pack-community-registry/promtail" 13 | version = "0.2.1" 14 | } 15 | 16 | integration { 17 | identifier = "nomad/hashicorp/promtail" 18 | name = "Promtail" 19 | } 20 | -------------------------------------------------------------------------------- /packs/caddy/metadata.hcl: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corp. 2021, 2025 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | app { 5 | url = "https://caddyserver.com" 6 | author = "Matthew Holt" 7 | } 8 | 9 | pack { 10 | name = "caddy" 11 | description = "Caddy 2 is a powerful, enterprise-ready, open source web server with automatic HTTPS written in Go. This pack runs it as a Nomad system job for load balancing." 12 | url = "https://github.com/hashicorp/nomad-pack-community-registry/caddy" 13 | version = "0.2.1" 14 | } 15 | 16 | integration { 17 | identifier = "nomad/hashicorp/caddy" 18 | name = "Caddy" 19 | } 20 | -------------------------------------------------------------------------------- /packs/haproxy/metadata.hcl: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corp. 2021, 2025 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | app { 5 | url = "https://www.haproxy.org/" 6 | author = "Willy Tarreau" 7 | } 8 | 9 | pack { 10 | name = "haproxy" 11 | description = "HAProxy is a free, very fast and reliable solution offering high availability, load balancing, and proxying for TCP and HTTP-based applications. It runs as a Nomad system job." 12 | url = "https://github.com/hashicorp/nomad-pack-community-registry/haproxy" 13 | version = "0.2.1" 14 | } 15 | 16 | integration { 17 | identifier = "nomad/hashicorp/haproxy" 18 | name = "HAProxy" 19 | } 20 | -------------------------------------------------------------------------------- /packs/simple_service/metadata.hcl: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | app { 5 | url = "https://learn.hashicorp.com/tutorials/nomad/get-started-run?in=nomad/get-started" 6 | author = "HashiCorp" 7 | } 8 | 9 | pack { 10 | name = "simple_service" 11 | description = "This deploys a simple service job to Nomad that runs a docker container." 12 | url = "https://github.com/hashicorp/nomad-pack-community-registry/simple_service" 13 | version = "0.2.1" 14 | } 15 | 16 | integration { 17 | identifier = "nomad/hashicorp/simple-service" 18 | name = "Simple Service" 19 | } 20 | -------------------------------------------------------------------------------- /packs/democratic_csi_nfs/outputs.tpl: -------------------------------------------------------------------------------- 1 | type = "csi" 2 | id = "[[ var "volume_id" . ]]" 3 | namespace = "[[ var "volume_namespace" . ]]" 4 | name = "[[ var "volume_id" . ]]" 5 | plugin_id = "[[ var "plugin_id" . ]]" 6 | 7 | capability { 8 | access_mode = "multi-node-multi-writer" 9 | attachment_mode = "file-system" 10 | } 11 | 12 | capability { 13 | access_mode = "single-node-writer" 14 | attachment_mode = "file-system" 15 | } 16 | 17 | capability { 18 | access_mode = "single-node-reader-only" 19 | attachment_mode = "file-system" 20 | } 21 | 22 | mount_options { 23 | mount_flags = ["noatime"] 24 | } 25 | -------------------------------------------------------------------------------- /packs/nomad_ingress_nginx/metadata.hcl: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corp. 2021, 2025 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | app { 5 | url = "https://www.nginx.com/" 6 | author = "F5 Networks" 7 | } 8 | 9 | pack { 10 | name = "nomad_ingress_nginx" 11 | description = "Provides ingress capability to Nomad jobs using Nginx as reverse proxy and configured via service tags or meta values." 12 | url = "https://github.com/hashicorp/nomad-pack-community-registry/nomad_ingress_nginx" 13 | version = "0.2.1" 14 | } 15 | 16 | integration { 17 | identifier = "nomad/hashicorp/nomad-ingress-nginx" 18 | name = "Nomad Ingress Nginx" 19 | } 20 | -------------------------------------------------------------------------------- /packs/prometheus_snmp_exporter/metadata.hcl: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corp. 2021, 2025 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | app { 5 | url = "https://github.com/prometheus/snmp_exporter" 6 | author = "Prometheus" 7 | } 8 | 9 | pack { 10 | name = "prometheus_snmp_exporter" 11 | description = "The Prometheus SNMP exporter alows prometheus to collect SNMP data" 12 | url = "https://github.com/hashicorp/nomad-pack-community-registry/tree/main/prometheus_snmp_exporter" 13 | version = "0.2.1" 14 | } 15 | 16 | integration { 17 | identifier = "nomad/hashicorp/prometheus-snmp-exporter" 18 | name = "Prometheus SNMP Exporter" 19 | } 20 | -------------------------------------------------------------------------------- /packs/prometheus_consul_exporter/metadata.hcl: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corp. 2021, 2025 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | app { 5 | url = "https://github.com/prometheus/consul_exporter" 6 | author = "Prometheus" 7 | } 8 | 9 | pack { 10 | name = "prometheus_consul_exporter" 11 | description = "The Prometheus Consul Exporter exposes Consul service health to Prometheus." 12 | url = "https://github.com/hashicorp/nomad-pack-community-registry/tree/main/prometheus_consul_exporter" 13 | version = "0.2.1" 14 | } 15 | 16 | integration { 17 | identifier = "nomad/hashicorp/prometheus-consul-exporter" 18 | name = "Prometheus Consul Exporter" 19 | } 20 | -------------------------------------------------------------------------------- /packs/prometheus_node_exporter/metadata.hcl: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corp. 2021, 2025 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | app { 5 | url = "https://prometheus.io/docs/guides/node-exporter/" 6 | author = "Prometheus" 7 | } 8 | 9 | pack { 10 | name = "prometheus_node_exporter" 11 | description = "The Prometheus Node Exporter exposes a wide variety of hardware and kernel related metrics." 12 | url = "https://github.com/hashicorp/nomad-pack-community-registry/tree/main/prometheus_node_exporter" 13 | version = "0.2.1" 14 | } 15 | 16 | integration { 17 | identifier = "nomad/hashicorp/prometheus-node-exporter" 18 | name = "Prometheus Node Exporter" 19 | } 20 | -------------------------------------------------------------------------------- /packs/ceph/templates/_constraints.tpl: -------------------------------------------------------------------------------- 1 | [[ define "constraints" ]] 2 | constraint { 3 | attribute = "${attr.kernel.name}" 4 | value = "linux" 5 | } 6 | 7 | constraint { 8 | attribute = "${attr.driver.docker.privileged.enabled}" 9 | value = true 10 | } 11 | 12 | [[ range $idx, $constraint := var "constraints" . ]] 13 | constraint { 14 | attribute = [[ $constraint.attribute | quote ]] 15 | [[- if $constraint.value ]] 16 | value = [[ $constraint.value | quote ]] 17 | [[- end ]] 18 | [[- if $constraint.operator ]] 19 | operator = [[ $constraint.operator | quote ]] 20 | [[- end ]] 21 | } 22 | [[- end ]][[- end ]] 23 | -------------------------------------------------------------------------------- /packs/nomad_autoscaler/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | [[- define "full_job_name" -]] 2 | [[- if eq (var "job_name" .) "" -]] 3 | [[- meta "pack.name" . | quote -]] 4 | [[- else -]] 5 | [[- var "job_name" . | quote -]] 6 | [[- end -]] 7 | [[- end -]] 8 | 9 | [[- define "full_args" -]] 10 | [[- $fullArgs := prepend (var "autoscaler_agent_task.additional_cli_args" .) "agent" -]] 11 | [[- if var "autoscaler_agent_task.scaling_policy_files" . ]][[ $fullArgs = append $fullArgs "-policy-dir=${NOMAD_TASK_DIR}/policies" ]][[- end -]] 12 | [[- if var "autoscaler_agent_task.config_files" . ]][[ $fullArgs = append $fullArgs "-config=${NOMAD_TASK_DIR}/config" ]][[- end -]] 13 | [[ $fullArgs | toPrettyJson ]] 14 | [[- end -]] 15 | -------------------------------------------------------------------------------- /packs/democratic_csi_nfs/templates/_constraints.tpl: -------------------------------------------------------------------------------- 1 | [[- define "constraints" -]] 2 | constraint { 3 | attribute = "${attr.kernel.name}" 4 | value = "linux" 5 | } 6 | 7 | constraint { 8 | attribute = "${attr.driver.docker.privileged.enabled}" 9 | value = true 10 | } 11 | 12 | [[ range $idx, $constraint := var "constraints" . ]] 13 | constraint { 14 | attribute = [[ $constraint.attribute | quote ]] 15 | [[- if $constraint.value ]] 16 | value = [[ $constraint.value | quote ]] 17 | [[- end ]] 18 | [[- if $constraint.operator ]] 19 | operator = [[ $constraint.operator | quote ]] 20 | [[- end ]] 21 | } 22 | [[- end ]][[- end ]] 23 | -------------------------------------------------------------------------------- /.github/workflows/copywrite.yml: -------------------------------------------------------------------------------- 1 | name: Check Copywrite Headers 2 | 3 | on: 4 | pull_request: 5 | push: 6 | branches: 7 | - 'main' 8 | 9 | jobs: 10 | copywrite: 11 | runs-on: ubuntu-latest 12 | steps: 13 | - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 14 | - uses: hashicorp/setup-copywrite@32638da2d4e81d56a0764aa1547882fc4d209636 # v1.1.3 15 | name: Setup Copywrite 16 | with: 17 | version: v0.22.0 18 | archive-checksum: 072863a5c35e61587dc24f7a8201a9ab9d1158989235334abc4fe2fb412095ed 19 | - name: Check Header Compliance 20 | run: copywrite headers --plan 21 | 22 | permissions: 23 | contents: read 24 | -------------------------------------------------------------------------------- /packs/opentelemetry_collector/metadata.hcl: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corp. 2021, 2025 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | app { 5 | url = "https://github.com/open-telemetry/opentelemetry-collector" 6 | author = "OpenTelemetry" 7 | } 8 | 9 | pack { 10 | name = "opentelemetry_collector" 11 | description = "The OpenTelemetry Collector offers a vendor-agnostic implementation on how to receive, process and export telemetry data." 12 | url = "https://github.com/hashicorp/nomad-pack-community-registry/tree/main/opentelemetry_collector" 13 | version = "0.2.1" 14 | } 15 | 16 | integration { 17 | identifier = "nomad/hashicorp/opentelemetry-collector" 18 | name = "OpenTelemetry Collector" 19 | } 20 | -------------------------------------------------------------------------------- /packs/ceph/outputs.tpl: -------------------------------------------------------------------------------- 1 | For the Ceph RBD CSI pack, you'll need the ceph_cluster_id and 2 | ceph_monitor_service_name variables. If you haven't set ceph_cluster_id, it 3 | will have been automatically generated and you can find it in the Ceph 4 | allocation file system. Get the "fsid" value here: 5 | 6 | nomad alloc fs :alloc_id ceph/local/ceph/ceph.conf | awk -F' = ' '/fsid/{print $2}' 7 | 8 | To create volumes, you'll need the client.admin key value from the Ceph mon 9 | keyring. Read that with: 10 | 11 | nomad alloc fs :alloc_id ceph/local/ceph/ceph.mon.keyring 12 | 13 | You'll set this value in the volume secrets block. For example: 14 | 15 | secrets { 16 | userID = "admin" 17 | userKey = "AQDsIoxgHqpe..ZdIzA==" 18 | } 19 | -------------------------------------------------------------------------------- /packs/sonarqube/metadata.hcl: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | app { 5 | url = "https://www.sonarqube.org/" 6 | author = "SonarSource" 7 | } 8 | 9 | pack { 10 | name = "sonarqube" 11 | description = "SonarQube is an open-source platform developed by SonarSource for continuous inspection of code quality to perform automatic reviews with static analysis of code to detect bugs, code smells, and security vulnerabilities on 20+ programming languages." 12 | url = "https://github.com/hashicorp/nomad-pack-community-registry/sonarqube" 13 | version = "0.2.1" 14 | } 15 | 16 | integration { 17 | identifier = "nomad/hashicorp/sonarqube" 18 | name = "SonarQube" 19 | } 20 | -------------------------------------------------------------------------------- /packs/nomad_autoscaler/metadata.hcl: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corp. 2021, 2025 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | app { 5 | url = "https://www.nomadproject.io/docs/autoscaling" 6 | author = "HashiCorp" 7 | } 8 | 9 | pack { 10 | name = "nomad_autoscaler" 11 | description = "The Nomad Autoscaler is an autoscaling daemon for Nomad, architectured around plugins to allow for easy extensibility in terms of supported metrics sources, scaling targets and scaling algorithms." 12 | url = "https://github.com/hashicorp/nomad-pack-community-registry/tree/main/nomad_autoscaler" 13 | version = "0.2.1" 14 | } 15 | 16 | integration { 17 | identifier = "nomad/hashicorp/nomad-autoscaler" 18 | name = "Nomad Autoscaler" 19 | } 20 | -------------------------------------------------------------------------------- /packs/csi_openstack_cinder/metadata.hcl: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corp. 2021, 2025 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | app { 5 | url = "https://github.com/kubernetes/cloud-provider-openstack/blob/master/docs/cinder-csi-plugin/using-cinder-csi-plugin.md" 6 | author = "Kubernetes" 7 | } 8 | 9 | pack { 10 | name = "csi_openstack_cinder" 11 | description = "The Cinder CSI Driver is a CSI Specification compliant driver used by Container Orchestrators to manage the lifecycle of OpenStack Cinder Volumes." 12 | url = "https://github.com/hashicorp/nomad-pack-community-registry/tree/main/packs/csi_openstack_cinder" 13 | version = "0.2.1" 14 | } 15 | 16 | integration { 17 | identifier = "nomad/hashicorp/csi-openstack-cinder" 18 | name = "CSI OpenStack Cinder" 19 | } 20 | -------------------------------------------------------------------------------- /packs/signoz/configs/clickhouse/custom-function.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | executable 6 | histogramQuantile 7 | Float64 8 | 9 | Array(Float64) 10 | buckets 11 | 12 | 13 | Array(Float64) 14 | counts 15 | 16 | 17 | Float64 18 | quantile 19 | 20 | CSV 21 | ./histogramQuantile 22 | 23 | 24 | -------------------------------------------------------------------------------- /packs/tempo/metadata.hcl: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | app { 5 | url = "https://grafana.com/oss/tempo/" 6 | author = "Grafana Labs" 7 | } 8 | 9 | pack { 10 | name = "tempo" 11 | description = "Grafana Tempo is an open source, easy-to-use and high-scale distributed tracing backend. Tempo is cost-efficient, requiring only object storage to operate, and is deeply integrated with Grafana, Prometheus, and Loki. Tempo can be used with any of the open source tracing protocols, including Jaeger, Zipkin, and OpenTelemetry." 12 | url = "https://github.com/hashicorp/nomad-pack-community-registry/tempo" 13 | version = "0.2.1" 14 | } 15 | 16 | integration { 17 | identifier = "nomad/hashicorp/tempo" 18 | name = "Grafana Tempo" 19 | } 20 | -------------------------------------------------------------------------------- /packs/alertmanager/metadata.hcl: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corp. 2021, 2025 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | app { 5 | url = "https://github.com/prometheus/alertmanager" 6 | author = "Prometheus Maintainers" 7 | } 8 | 9 | pack { 10 | name = "alertmanager" 11 | description = "The Alertmanager handles alerts sent by client applications such as the Prometheus server. It takes care of deduplicating, grouping, and routing them to the correct receiver integrations such as email, PagerDuty, or OpsGenie. It also takes care of silencing and inhibition of alerts." 12 | url = "https://github.com/hashicorp/nomad-pack-community-registry/alertmanager" 13 | version = "0.2.1" 14 | } 15 | 16 | integration { 17 | identifier = "nomad/hashicorp/alertmanager" 18 | name = "Alertmanager" 19 | } 20 | -------------------------------------------------------------------------------- /packs/democratic_csi_nfs/templates/_plugin_config_file.tpl: -------------------------------------------------------------------------------- 1 | [[- define "plugin_config_file" ]] 2 | [[- if not (var "nfs_share_host" .) ]][[ fail "nfs_share_host variable must be provided" ]][[ end -]] 3 | [[- if not (var "nfs_share_base_path" .) ]][[ fail "nfs_share_base_path variable must be provided" ]][[ end -]] 4 | template { 5 | destination = "${NOMAD_TASK_DIR}/driver-config-file.yaml" 6 | 7 | data = <` 6 | - [ ] The pack plans properly with `nomad-pack plan ` 7 | - [ ] The pack runs properly with `nomad-pack runs ` 8 | - [ ] If applicable, a screenshot of the running application is attached to the PR. 9 | - [ ] The default variable values result in a syntactically valid pack. 10 | - [ ] Non-default variables values have been tested. Conditional code paths in the template have been tested, and confirmed to render/plan properly. 11 | - [ ] If applicable, the pack includes constraints necessary to run the pack safely (I.E. a linux-only constraint for applications that require linux). -------------------------------------------------------------------------------- /packs/ceph/config/ceph.conf: -------------------------------------------------------------------------------- 1 | [global] 2 | fsid = 2c4ef9a0-f963-4dcf-9944-e1bd71f3fbad 3 | mon initial members = nomad-client1 4 | mon host = v2:10.0.2.15:3300/0 5 | 6 | osd crush chooseleaf type = 0 7 | osd journal size = 100 8 | public network = 0.0.0.0/0 9 | cluster network = 0.0.0.0/0 10 | osd pool default size = 1 11 | mon warn on pool no redundancy = false 12 | osd_memory_target = 939524096 13 | osd_memory_base = 251947008 14 | osd_memory_cache_min = 351706112 15 | osd objectstore = bluestore 16 | 17 | [osd.0] 18 | osd data = /var/lib/ceph/osd/ceph-0 19 | 20 | [client.rgw.linux] 21 | rgw dns name = nomad-client1 22 | rgw enable usage log = true 23 | rgw usage log tick interval = 1 24 | rgw usage log flush threshold = 1 25 | rgw usage max shards = 32 26 | rgw usage max user shards = 1 27 | log file = /var/log/ceph/client.rgw.linux.log 28 | rgw frontends = beast endpoint=0.0.0.0:8080 29 | -------------------------------------------------------------------------------- /packs/ceph_rbd_csi/outputs.tpl: -------------------------------------------------------------------------------- 1 | id = "[[ var "volume_id" . ]]" 2 | name = "[[ var "volume_id" . ]]" 3 | namespace = "[[ var "volume_namespace" . ]]" 4 | type = "csi" 5 | plugin_id = "[[ var "plugin_id" . ]]" 6 | 7 | capacity_min = "[[ var "volume_min_capacity" . ]]" 8 | capacity_max = "[[ var "volume_max_capacity" . ]]" 9 | 10 | capability { 11 | access_mode = "single-node-writer" 12 | attachment_mode = "file-system" 13 | } 14 | 15 | capability { 16 | access_mode = "single-node-writer" 17 | attachment_mode = "block-device" 18 | } 19 | 20 | # get this secret from the Ceph allocation: 21 | # /etc/ceph/ceph.client.admin.keyring 22 | secrets { 23 | userID = "admin" 24 | userKey = "AQDsIoxgHqpe...spTbvwZdIzA==" 25 | } 26 | 27 | parameters { 28 | clusterID = "[[ var "ceph_cluster_id" . ]]" 29 | pool = "rbd" 30 | imageFeatures = "layering" 31 | } 32 | -------------------------------------------------------------------------------- /packs/aws_ebs_csi/templates/controller.nomad.tpl: -------------------------------------------------------------------------------- 1 | job "[[ var "job_name" . ]]_controller" { 2 | 3 | [[ template "location" . ]] 4 | 5 | group "controllers" { 6 | 7 | count = [[ var "controller_count" . ]] 8 | 9 | [[ template "constraints" . ]] 10 | 11 | constraint { 12 | operator = "distinct_hosts" 13 | value = "true" 14 | } 15 | 16 | task "plugin" { 17 | driver = "docker" 18 | 19 | config { 20 | image = "[[ var "plugin_image" . ]]" 21 | 22 | args = [ 23 | "controller", 24 | "--endpoint=${CSI_ENDPOINT}", 25 | "--logtostderr", 26 | "--v=5", 27 | ] 28 | } 29 | 30 | csi_plugin { 31 | id = "[[ var "plugin_id" . ]]" 32 | type = "controller" 33 | mount_dir = "/csi" 34 | } 35 | 36 | [[ template "resources" . ]] 37 | 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /packs/rabbitmq/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | // allow nomad-pack to set the job name 2 | 3 | [[- define "job_name" -]] 4 | [[- if eq (var "job_name" .) "" -]] 5 | [[- meta "pack.name" . | quote -]] 6 | [[- else -]] 7 | [[- var "job_name" . | quote -]] 8 | [[- end -]] 9 | [[- end -]] 10 | 11 | 12 | // if additional plugins are defined, return this: 13 | // "[rabbitmq_peer_discovery_consul,rabbitmq_management]." 14 | // if nothing is defined, return only consul: 15 | // "[rabbitmq_peer_discovery_consul]." 16 | [[- define "rabbit_plugins" ]] 17 | [[- if var "enabled_plugins" . -]] 18 | "[rabbitmq_peer_discovery_consul, 19 | [[- range $index, $name := var "enabled_plugins" . -]] 20 | [[if $index]],[[end]][[ $name ]] 21 | [[- end -]] 22 | ]." 23 | [[- else -]] 24 | "[rabbitmq_peer_discovery_consul]." 25 | [[- end -]] 26 | [[- end -]] 27 | 28 | 29 | [[- define "port" ]] 30 | [[- if . ]] 31 | static = [[ . ]] 32 | [[- end -]] 33 | [[- end -]] 34 | -------------------------------------------------------------------------------- /packs/aws_ebs_csi/templates/node.nomad.tpl: -------------------------------------------------------------------------------- 1 | job "[[ var "job_name" . ]]_node" { 2 | 3 | # you can run node plugins as service jobs as well, but this ensures 4 | # that all nodes in the DC have a copy. 5 | type = "system" 6 | [[ template "location" . ]] 7 | 8 | group "nodes" { 9 | 10 | [[ template "constraints" . ]] 11 | 12 | constraint { 13 | attribute = "${attr.driver.docker.privileged.enabled}" 14 | value = true 15 | } 16 | 17 | task "plugin" { 18 | driver = "docker" 19 | 20 | config { 21 | image = "[[ var "plugin_image" . ]]" 22 | 23 | args = [ 24 | "node", 25 | "--endpoint=${CSI_ENDPOINT}", 26 | "--logtostderr", 27 | "--v=5", 28 | ] 29 | 30 | privileged = true 31 | } 32 | 33 | csi_plugin { 34 | id = "[[ var "plugin_id" . ]]" 35 | type = "node" 36 | mount_dir = "/csi" 37 | } 38 | 39 | [[ template "resources" . ]] 40 | 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /packs/aws_ebs_csi/outputs.tpl: -------------------------------------------------------------------------------- 1 | type = "csi" 2 | id = "[[ var "volume_id" . ]]" 3 | namespace = "[[ var "volume_namespace" . ]]" 4 | plugin_id = "[[ var "plugin_id" . ]]" 5 | 6 | # this is used as the AWS EBS volume's CSIVolumeName tag, and 7 | # must be unique per region 8 | name = "[[ uuidv4 ]]" 9 | 10 | capacity_min = "[[ var "volume_min_capacity" . ]]" 11 | capacity_max = "[[ var "volume_max_capacity" . ]]" 12 | 13 | capability { 14 | access_mode = "single-node-writer" 15 | attachment_mode = "file-system" 16 | } 17 | 18 | capability { 19 | access_mode = "single-node-writer" 20 | attachment_mode = "block-device" 21 | } 22 | 23 | parameters { 24 | type = "[[ var "volume_type" . ]]" 25 | } 26 | 27 | topology_request { 28 | required { 29 | topology { 30 | segments { 31 | [[ if var "availability_zones" . -]][[ range $idx, $az := var "availability_zones" . ]] 32 | "topology.ebs.csi.aws.com/zone" = "[[ $az ]]" 33 | [[- end -]] 34 | [[- end ]] 35 | } 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /packs/jaeger/templates/jaeger.nomad.tpl: -------------------------------------------------------------------------------- 1 | job [[ template "job_name" . ]] { 2 | [[ template "region" . ]] 3 | datacenters = [[ var "datacenters" . | toStringList ]] 4 | node_pool = [[ var "node_pool" . | quote ]] 5 | 6 | group "jaeger" { 7 | count = 1 8 | 9 | network { 10 | port "http_ui" { 11 | to = [[ var "http_ui_port" . ]] 12 | } 13 | port "http_collector" { 14 | to = [[ var "http_collector_port" . ]] 15 | } 16 | } 17 | 18 | service { 19 | name = "jaeger" 20 | port = "[[ var "http_ui_port" . ]]" 21 | } 22 | 23 | task "jaeger" { 24 | driver = "docker" 25 | 26 | config { 27 | image = "jaegertracing/all-in-one:[[ var "version_tag" . ]]" 28 | ports = ["http_ui", "http_collector"] 29 | } 30 | 31 | env { 32 | SPAN_STORAGE_TYPE = "memory" 33 | } 34 | 35 | resources { 36 | cpu = [[ var "resources.cpu" . ]] 37 | memory = [[ var "resources.memory" . ]] 38 | } 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /packs/nginx/README.md: -------------------------------------------------------------------------------- 1 | # Nginx 2 | 3 | This pack contains a single system job that runs Nginx across all Nomad clients. 4 | 5 | See the [Load Balancing with Nginx](https://developer.hashicorp.com/nomad/tutorials/load-balancing/load-balancing-nginx) tutorial for more information. 6 | 7 | ## Dependencies 8 | 9 | This pack requires Linux clients to run. 10 | 11 | ## Variables 12 | 13 | - `http_port` (number) - The Nomad client port that routes to the Nginx. This port will be where you visit your load balanced application 14 | - `service_name` (string) - The consul service you wish to load balance 15 | - `version_tag` (string) - The docker image version. For options, see https://hub.docker.com/_/nginx 16 | - `resources` (object) - The resource to assign to the Nginx system task that runs on every client 17 | - `job_name` (string) - The name to use as the job name which overrides using the pack name 18 | - `datacenters` (list of string) - A list of datacenters in the region which are eligible for task placement 19 | - `region` (string) - The region where the job should be placed 20 | -------------------------------------------------------------------------------- /packs/tfc_agent/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | // allow nomad-pack to set the job name 2 | 3 | [[- define "job_name" -]] 4 | [[- if eq (var "job_name" .) "" -]] 5 | [[- meta "pack.name" . | quote -]] 6 | [[- else -]] 7 | [[- var "job_name" . | quote -]] 8 | [[- end -]] 9 | [[- end -]] 10 | 11 | // only deploys to a region if specified 12 | 13 | [[- define "region" -]] 14 | [[- if not (eq (var "region" .) "") -]] 15 | region = [[ var "region" . | quote]] 16 | [[- end -]] 17 | [[- end -]] 18 | 19 | // format the list of datacenters 20 | 21 | [[- define "datacenters" -]] 22 | datacenters = [[ var "datacenters" . | toStringList ]] 23 | [[- end -]] 24 | 25 | // only specify a namespace when given 26 | [[- define "namespace" -]] 27 | [[- if ne (var "namespace" .) "" -]] 28 | namespace = [[ var "namespace" . | quote ]] 29 | [[- end -]] 30 | [[- end -]] 31 | 32 | // only sets the OTLP cert file when appropriate 33 | 34 | [[- define "otlp_cert_file" -]] 35 | [[- if eq (var "agent_otlp_cert" .) "" -]] 36 | "" 37 | [[- else -]] 38 | "/home/tfc-agent/certs/otlp.pem" 39 | [[- end -]] 40 | [[- end -]] 41 | -------------------------------------------------------------------------------- /packs/signoz/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | ## header 2 | [[ define "header" -]] 3 | datacenters = [[ var "datacenters" . | toStringList ]] 4 | namespace = [[ var "namespace" . | quote ]] 5 | node_pool = [[ var "node_pool" . | quote ]] 6 | [[- end -]] 7 | 8 | ## `clickhouse_password` helper 9 | [[ define "clickhouse_password" ]] 10 | template { 11 | destination = "${NOMAD_SECRETS_DIR}/env.vars" 12 | env = true 13 | change_mode = "restart" 14 | data = < 2 | 3 | 4 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /packs/signoz/setup.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Copyright IBM Corp. 2021, 2025 3 | # SPDX-License-Identifier: MPL-2.0 4 | 5 | set -eu 6 | 7 | RELEASE=${RELEASE:-signoz} 8 | NAMESPACE=${NAMESPACE:-default} 9 | CLICKHOUSE_PASSWORD=${CLICKHOUSE_PASSWORD:-} 10 | 11 | if [ ! -n "$CLICKHOUSE_PASSWORD" ]; then 12 | echo "ERROR: CLICKHOUSE_PASSWORD is unset" 13 | exit 1 14 | fi 15 | 16 | sed -e "s/NAMESPACE/${NAMESPACE}/" \ 17 | -e "s/RELEASE/${RELEASE}/" \ 18 | -e "s/PASSWORD/${CLICKHOUSE_PASSWORD}/" \ 19 | ./specs/password.nv.hcl | nomad var put -in=hcl - 20 | 21 | nomad volume create \ 22 | -namespace "$NAMESPACE" \ 23 | ./specs/volume-clickhouse.hcl 24 | 25 | nomad volume create \ 26 | -namespace "$NAMESPACE" \ 27 | ./specs/volume-signoz.hcl 28 | 29 | nomad volume create \ 30 | -namespace "$NAMESPACE" \ 31 | ./specs/volume-zookeeper.hcl 32 | 33 | for job in signoz clickhouse otel_collector schema_migrator_sync schema_migrator_async; 34 | do 35 | sed -e "s/NAMESPACE/${NAMESPACE}/" \ 36 | -e "s/RELEASE/${RELEASE}/" \ 37 | ./specs/policy.hcl | nomad acl policy apply \ 38 | -namespace "$NAMESPACE" \ 39 | -description "SigNoz Shared Variables policy" \ 40 | -job "${RELEASE}_$job" \ 41 | "${RELEASE}_$job" - 42 | 43 | done 44 | -------------------------------------------------------------------------------- /packs/democratic_csi_nfs/templates/node.nomad.tpl: -------------------------------------------------------------------------------- 1 | job "[[ var "job_name" . ]]_node" { 2 | 3 | # you can run node plugins as service jobs as well, but this ensures 4 | # that all nodes in the DC have a copy. 5 | type = "system" 6 | 7 | [[ template "location" . ]] 8 | 9 | group "node" { 10 | 11 | [[ template "constraints" . ]] 12 | 13 | task "plugin" { 14 | driver = "docker" 15 | 16 | env { 17 | CSI_NODE_ID = "${attr.unique.hostname}" 18 | } 19 | 20 | config { 21 | image = "[[ var "plugin_image" . ]]" 22 | 23 | args = [ 24 | "--csi-version=[[ var "plugin_csi_spec_version" . ]]", 25 | "--csi-name=[[ var "plugin_id" . ]]", 26 | "--driver-config-file=${NOMAD_TASK_DIR}/driver-config-file.yaml", 27 | "--log-level=[[ var "plugin_log_level" . ]]", 28 | "--csi-mode=node", 29 | "--server-socket=${CSI_ENDPOINT}", 30 | ] 31 | 32 | # node plugins must run as privileged jobs because they 33 | # mount disks to the host 34 | privileged = true 35 | ipc_mode = "host" 36 | network_mode = "host" 37 | } 38 | 39 | [[ template "plugin_config_file" . ]] 40 | 41 | [[ template "resources" . ]] 42 | 43 | csi_plugin { 44 | id = "[[ var "plugin_id" . ]]" 45 | type = "node" 46 | mount_dir = "/csi" 47 | } 48 | 49 | } 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /packs/traefik/examples/traefik.hcl: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | job_name = "traefik" 5 | 6 | traefik_task = { 7 | driver = "docker" 8 | version = "v2.6.1" 9 | network_mode = "host" 10 | } 11 | 12 | traefik_group_network = { 13 | mode = "host" 14 | 15 | ports = { 16 | http = 80 17 | api = 8080 18 | } 19 | } 20 | 21 | traefik_task_services = [ 22 | { 23 | service_name = "traefik-dashboard" 24 | service_port_label = "http" 25 | service_tags = [ 26 | "traefik.enable=true", 27 | "traefik.http.routers.dashboard.rule=Host(`traefik.localhost`)", 28 | "traefik.http.routers.dashboard.service=api@internal", 29 | "traefik.http.routers.dashboard.entrypoints=web", 30 | ] 31 | 32 | check_enabled = true 33 | check_type = "tcp" 34 | check_path = "" 35 | check_interval = "10s" 36 | check_timeout = "5s" 37 | }, 38 | ] 39 | 40 | traefik_task_app_config = <= kill_timeout 48 | progress_deadline = "2h" 49 | } 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /packs/opentelemetry_collector/examples/traefik_vars.hcl: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corp. 2021, 2025 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | job_name = "traefik" 5 | 6 | traefik_task = { 7 | driver = "docker" 8 | version = "v2.6.1" 9 | network_mode = "host" 10 | } 11 | 12 | traefik_group_network = { 13 | mode = "host" 14 | 15 | ports = { 16 | http = 80 17 | api = 8080 18 | metrics = 8082 19 | grpc = 7233 20 | } 21 | } 22 | 23 | traefik_task_services = [ 24 | { 25 | service_name = "traefik-endpoint-grpc" 26 | service_port_label = "grpc" 27 | check_enabled = true 28 | check_type = "tcp" 29 | check_path = "" 30 | check_interval = "10s" 31 | check_timeout = "5s" 32 | }, 33 | { 34 | service_name = "traefik-dashboard" 35 | service_port_label = "http" 36 | service_tags = [ 37 | "traefik.enable=true", 38 | "traefik.http.routers.dashboard.rule=Host(`traefik.localhost`)", 39 | "traefik.http.routers.dashboard.service=api@internal", 40 | "traefik.http.routers.dashboard.entrypoints=web", 41 | ] 42 | 43 | check_enabled = true 44 | check_type = "tcp" 45 | check_path = "" 46 | check_interval = "10s" 47 | check_timeout = "5s" 48 | }, 49 | ] 50 | 51 | traefik_task_app_config = < 2 | 3 | 4 | 5 | 6 | 7 | 10485760 8 | 9 | 10 | s3 11 | 17 | https://BUCKET-NAME.s3-REGION-NAME.amazonaws.com/data/ 18 | ACCESS-KEY-ID 19 | SECRET-ACCESS-KEY 20 | 22 | 23 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | default 33 | 34 | 35 | s3 36 | 0 37 | 38 | 39 | 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /packs/hashicups/variables.hcl: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corp. 2021, 2025 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | variable "datacenters" { 5 | description = "A list of datacenters in the region which are eligible for task placement." 6 | type = list(string) 7 | default = ["dc1"] 8 | } 9 | 10 | variable "node_pool" { 11 | description = "The node pool where the job should be placed." 12 | type = string 13 | default = "default" 14 | } 15 | 16 | variable "region" { 17 | description = "The region where the job should be placed." 18 | type = string 19 | default = "global" 20 | } 21 | 22 | variable "frontend_version" { 23 | description = "Docker version tag" 24 | default = "v1.0.2" 25 | } 26 | 27 | variable "public_api_version" { 28 | description = "Docker version tag" 29 | default = "v0.0.6" 30 | } 31 | 32 | variable "payments_version" { 33 | description = "Docker version tag" 34 | default = "v0.0.12" 35 | } 36 | 37 | variable "product_api_version" { 38 | description = "Docker version tag" 39 | default = "v0.0.20" 40 | } 41 | 42 | variable "product_api_db_version" { 43 | description = "Docker version tag" 44 | default = "v0.0.20" 45 | } 46 | 47 | variable "postgres_db" { 48 | description = "Postgres DB name" 49 | default = "products" 50 | } 51 | 52 | variable "postgres_user" { 53 | description = "Postgres DB User" 54 | default = "postgres" 55 | } 56 | 57 | variable "postgres_password" { 58 | description = "Postgres DB Password" 59 | default = "password" 60 | } 61 | 62 | variable "product_api_port" { 63 | description = "Product API Port" 64 | default = 9090 65 | } 66 | 67 | variable "frontend_port" { 68 | description = "Frontend Port" 69 | default = 3000 70 | } 71 | 72 | variable "payments_api_port" { 73 | description = "Payments API Port" 74 | default = 8080 75 | } 76 | 77 | variable "public_api_port" { 78 | description = "Public API Port" 79 | default = 8081 80 | } 81 | 82 | variable "nginx_port" { 83 | description = "Nginx Port" 84 | default = 80 85 | } 86 | -------------------------------------------------------------------------------- /packs/grafana/README.md: -------------------------------------------------------------------------------- 1 | # Grafana 2 | 3 | [Grafana](https://grafana.com/oss/loki/) is a multi-platform open source analytics and interactive visualization web application. It provides charts, graphs, and alerts for the web when connected to supported data sources. 4 | 5 | This pack deploys a single instance of the Grafana docker image `grafana/grafana` and a Consul Service named "grafana". This Consul Service can be connected to other upstream Consul services deployed using Nomad. These other services are defined using the `upstreams` variable. 6 | 7 | ## Variables 8 | 9 | - `job_name` (string "") - The name to use as the job name which overrides using the pack name. 10 | - `datacenters` (list(string) ["dc1"]) - A list of datacenters in the region which are eligible for 11 | task placement. 12 | - `region` (string "global") - The region where the job should be placed. 13 | - `dns` (object) - Network DNS configuration 14 | - `grafana_version_tag` (string "latest" ) - The version of Grafana Image 15 | - `grafana_http_port` (number "3000" ) - The Grafana Port for http 16 | - `grafana_upstreams` (list(object)) - Upstream configuration for sidecar proxy 17 | - `grafana_resources` (object) - CPU and Memory configuration for Grafana 18 | - `grafana_consul_tags` (list(string)) - Service tag definition for Consul 19 | - `grafana_volume` (object) - Persistent Volume configuration for Grafana 20 | - `grafana_env_vars` (list(object)) - Environment Variables for Grafana 21 | - `grafana_task_artifacts` (list(object)) - Nomad Artifacts for Grafana 22 | - `grafana_task_config_dashboards` (string) - Yaml configuration for automatic provision of dashboards 23 | - `grafana_task_config_datasources` (string) - Yaml configuration for automatic provision of datasources 24 | - `grafana_task_config_ini` (string) - ini string for grafana.ini 25 | - `grafana_task_config_plugins` (string) - yaml configuration for automatic provision of plugins 26 | - `grafana_vault` list(string) - List of Vault Policies. 27 | 28 | ## Dependencies 29 | 30 | This pack requires Linux clients to run properly. 31 | -------------------------------------------------------------------------------- /packs/jenkins/README.md: -------------------------------------------------------------------------------- 1 | # jenkins 2 | 3 | This pack contains all you need to deploy jenkins (version 2 by default) in Nomad. It uses Docker driver. 4 | 5 | 6 | ## Variables 7 | 8 | - `job_name` (string) - The name to use as the job name which overrides using the pack name. 9 | - `region` (string) - The region where jobs will be deployed. 10 | - `datacenters` (list of strings) - A list of datacenters in the region which are eligible for task placement. 11 | - `plugins` (list of strings) - A list of jenkins plugins to install. 12 | - `jasc_config` (string) - Use the Jenkins as Code plugin to configure jenkins. 13 | - `namespace` (string) - The namespace where the job should be placed. 14 | - `constraints` (string) - Constraints to apply to the entire job. 15 | - `image_name` (string) - The docker image name. 16 | - `image_tag` (string) - The docker image tag. 17 | - `task_resources` (object, number number) Resources used by Jenkins task 18 | - `register_consul_service` (bool) - If you want to register a consul service for the job 19 | - `consul_service_name` (string) - The consul service name for the hello-world application 20 | - `consul_service_tags` (list of string) - The consul service name for the hello-world application 21 | - `volume_name` (string) - The name of the volume you want Jenkins to use 22 | - `volume_type` (string) - The type of the volume you want Jenkins to use 23 | - `docker_jenkins_env_vars` (map of string) - Environment variables to pass to Docker container 24 | 25 | ## Jenkins Environment Variables 26 | 27 | You can pass the right environment variables to Jenkins. 28 | An example of the `docker_jenkins_env_vars` to use is in the `examples/vars.nomad` file. 29 | 30 | ## Jenkins as Code 31 | 32 | An example as to how use the `configuration-as-code` plugin can be used to create and configure jenkins is in the `examples/vars_jasc.nomad` file. 33 | 34 | ## Nomad Job Runners 35 | 36 | An example as to how the `nomad` plugin can be used to create and configure autoscaling jenkins workers in nomad itself is in the `examples/vars_cloud.nomad` file. 37 | -------------------------------------------------------------------------------- /packs/hello_world/variables.hcl: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corp. 2021, 2025 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | variable "job_name" { 5 | # If "", the pack name will be used 6 | description = "The name to use as the job name which overrides using the pack name" 7 | type = string 8 | default = "" 9 | } 10 | 11 | variable "region" { 12 | description = "The region where jobs will be deployed" 13 | type = string 14 | default = "" 15 | } 16 | 17 | variable "datacenters" { 18 | description = "A list of datacenters in the region which are eligible for task placement" 19 | type = list(string) 20 | default = ["*"] 21 | } 22 | 23 | variable "node_pool" { 24 | description = "The node pool where the job should be placed." 25 | type = string 26 | default = "default" 27 | } 28 | 29 | variable "count" { 30 | description = "The number of app instances to deploy" 31 | type = number 32 | default = 2 33 | } 34 | 35 | variable "message" { 36 | description = "The message your application will render" 37 | type = string 38 | default = "Hello World!" 39 | } 40 | 41 | variable "register_service" { 42 | description = "If you want to register a Nomad service for the job" 43 | type = bool 44 | default = false 45 | } 46 | 47 | variable "service_name" { 48 | description = "The service name for the hello_world application" 49 | type = string 50 | default = "webapp" 51 | } 52 | 53 | variable "service_tags" { 54 | description = "The service tags for the hello_world application" 55 | type = list(string) 56 | # The default value is shaped to integrate with Traefik 57 | # This routes at the root path "/", to route to this service from 58 | # another path, change "urlprefix-/" to "urlprefix-/" and 59 | # "traefik.http.routers.http.rule=Path(∫/∫)" to 60 | # "traefik.http.routers.http.rule=Path(∫/∫)" 61 | default = [ 62 | "urlprefix-/", 63 | "traefik.enable=true", 64 | "traefik.http.routers.http.rule=Path(`/`)", 65 | ] 66 | } 67 | -------------------------------------------------------------------------------- /scripts/update-parser-v2.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Copyright (c) HashiCorp, Inc. 3 | # SPDX-License-Identifier: MPL-2.0 4 | 5 | 6 | set -u 7 | 8 | if [ $# -ne 2 ]; then 9 | cat < 13 | 14 | E.g.: $0 ./packs/hello_world hello_world 15 | EOF 16 | exit 1 17 | fi 18 | 19 | path="$1" 20 | test -d "$path" 21 | pack="$2" 22 | 23 | mkdir -p fixlogs 24 | log="./fixlogs/$pack.log" 25 | # output `set -x` to a log file 26 | exec 19>"$log" 27 | BASH_XTRACEFD=19 28 | set -x 29 | 30 | replace() { 31 | local f="$1" 32 | # meta vars 33 | # meta "pack.var" . 34 | sed -i -r 's~\.nomad_pack\.([0-9a-z_\.]+)~meta "\1" .~g' "$f" 35 | # pack vars 36 | # var "some_var" . 37 | sed -i -r "s~\.($pack|my)\.([0-9a-z_\.]+)~var \"\2\" .~g" "$f" 38 | # parentheses 39 | # (var "some_var" .) 40 | sed -i -r 's~(not|eq|ne|keys|prepend) var "([0-9a-z_\.]+)"\s+(\S+)~\1 (var "\2" \3)~g' "$f" 41 | # template 42 | # template "tmpl_name" . 43 | sed -i -r "s~(template \"[0-9a-z_]+\"\s+\.)$pack~\1~g" "$f" 44 | 45 | # BELOW HERE IS MADNESS, err increasingly specific 46 | 47 | # printf for nomad autoscaler 48 | sed -i -r 's~(printf "\S+")\s+(var \S+ \.)~\1 (\2)~g' "$f" 49 | 50 | # more var - inline var references without a prefixed ".$pack" 51 | # note: this can be overzealous within a [[ define ... ]] template definition 52 | sed -i -r 's~(\[\[[-\s]+ if)\s+\.([0-9a-z_\.]+)~\1 var "\2" .~g' "$f" 53 | sed -i -r 's~(\[\[)\s+\.([0-9a-z_\.]+)~\1 var "\2" .~g' "$f" 54 | 55 | # checking two variables (kibana, democratic_csi_nfs) 56 | sed -i -r 's~(and|all) (var "[0-9a-z_\.]+" \.) (var "[0-9a-z_\.]+" \.)~\1 (\2) (\3)~' "$f" 57 | 58 | # assignment (opentelemetry_collector, prometheus_snmp_exporter, rabbitmq) 59 | sed -i -r 's~(\[\[.*:=\s+)\.([0-9a-z_\]+)~\1var "\2" .~g' "$f" 60 | } 61 | 62 | find "$path" -type f -name '*.tpl' | while read -r tpl; do 63 | replace "$tpl" 64 | done 65 | 66 | set -e 67 | 68 | $(dirname $0)/validate.sh "$path" 69 | 70 | # delete the log if all went well 71 | rm "$log" 72 | -------------------------------------------------------------------------------- /packs/chaotic_ngine/README.md: -------------------------------------------------------------------------------- 1 | # Chaotic Ngine 2 | 3 | This pack contains a batch job that runs [Chaotic](https://github.com/ngine-io/chaotic). 4 | 5 | ## Dependencies 6 | 7 | None 8 | 9 | ## Variables 10 | - `nomad_addr` (string) - Address to the Nomad API, e.g. "http://172.17.0.1:4646" 11 | - `config_template_url` (string) - URL to the config resource in JSON format. Mutually exclusive with `config`. 12 | - `config` (string) - Config to be used. Mutually exclusive with `config_template_url`. 13 | - `cron` (string) - The cron, when the batch job should run, default "13 * * * * *" 14 | - `timezone` (string) - The timezone, default "Etc/UTC" 15 | - `image_version` (string) - The docker image version. For options, see: https://gitlab.com/ngine/docker-images/chaotic/container_registry/ 16 | - `job_name` (string) - The name to use as the job name which overrides using the pack name 17 | - `datacenters` (list of string) - A list of datacenters in the region which are eligible for task placement 18 | - `region` (string) - The region where the job should be placed 19 | - `namespace` (string) - The namespace where the job should be placed in 20 | - `priority` (number) - The job priority 21 | 22 | ### `constraints` List of Objects 23 | 24 | [Nomad job specification constraints][job_constraint] allows restricting the set of eligible nodes 25 | on which the Chaotic task will run. 26 | 27 | - `attribute` (string) - Specifies the name or reference of the attribute to examine for the 28 | constraint. 29 | - `operator` (string) - Specifies the comparison operator. The ordering is compared lexically. 30 | - `value` (string) - Specifies the value to compare the attribute against using the specified 31 | operation. 32 | 33 | The default value constrains the job to run on client whose kernel name is `linux`. The HCL 34 | variable list of objects is shown below and uses a double dollar sign for escaping: 35 | ```hcl 36 | [ 37 | { 38 | attribute = "$${attr.kernel.name}", 39 | value = "linux", 40 | operator = "", 41 | } 42 | ] 43 | ``` 44 | 45 | [job_constraint]: (https://www.nomadproject.io/docs/job-specification/constraint) 46 | -------------------------------------------------------------------------------- /packs/haproxy/templates/haproxy.nomad.tpl: -------------------------------------------------------------------------------- 1 | job [[ template "job_name" . ]] { 2 | [[ template "region" . ]] 3 | datacenters = [[ var "datacenters" . | toStringList ]] 4 | node_pool = [[ var "node_pool" . | quote ]] 5 | 6 | type = "service" 7 | 8 | // must have linux for network mode 9 | constraint { 10 | attribute = "${attr.kernel.name}" 11 | value = "linux" 12 | } 13 | 14 | group "haproxy" { 15 | count = 1 16 | 17 | network { 18 | port "http" { 19 | static = [[ var "http_port" . ]] 20 | } 21 | 22 | port "haproxy_ui" { 23 | static = [[ var "ui_port" . ]] 24 | } 25 | } 26 | 27 | service { 28 | name = "haproxy" 29 | 30 | check { 31 | name = "alive" 32 | type = "tcp" 33 | port = "http" 34 | interval = "10s" 35 | timeout = "2s" 36 | } 37 | } 38 | 39 | task "haproxy" { 40 | driver = "docker" 41 | 42 | config { 43 | image = "haproxy:[[var "version" .]]" 44 | network_mode = "host" 45 | 46 | volumes = [ 47 | "local/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg", 48 | ] 49 | } 50 | 51 | template { 52 | data = <> "$GITHUB_OUTPUT" 30 | 31 | notify_release: 32 | runs-on: ubuntu-latest 33 | needs: determine_identifiers 34 | strategy: 35 | matrix: 36 | integration_identifier: ${{fromJson(needs.determine_identifiers.outputs.identifiers)}} 37 | steps: 38 | - name: Checkout this repo 39 | uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 40 | - id: calculate_version 41 | name: Calculate Version 42 | run: | 43 | version="$(./.github/scripts/version-from-identifier.sh ${{ matrix.integration_identifier }})" 44 | echo "Computed Version: $version" 45 | echo "releaseVersion=$version" >> "$GITHUB_OUTPUT" 46 | - name: Checkout integration-release-action 47 | uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 48 | with: 49 | repository: hashicorp/integration-release-action 50 | path: ./integration-release-action 51 | - name: Notify Release 52 | uses: ./integration-release-action 53 | with: 54 | integration_identifier: ${{ matrix.integration_identifier }} 55 | release_version: ${{ steps.calculate_version.outputs.releaseVersion }} 56 | release_sha: ${{ github.ref }} 57 | github_token: ${{ secrets.GITHUB_TOKEN }} 58 | integration_strategy: 'nomad-pack' 59 | -------------------------------------------------------------------------------- /packs/kibana/README.md: -------------------------------------------------------------------------------- 1 | # Kibana 2 | 3 | This pack contains all you need to deploy Kibana (version 2 by default) in Nomad. It uses Docker driver. 4 | 5 | ## Variables 6 | 7 | - `job_name` (string) - The name to use as the job name which overrides using the pack name. 8 | - `region` (string) - The region where jobs will be deployed. 9 | - `datacenters` (list of strings) - A list of datacenters in the region which are eligible for task placement. 10 | - `namespace` (string) - The namespace where the job should be placed. 11 | - `constraints` (string) - Constraints to apply to the entire job. 12 | - `image_name` (string) - The docker image name. 13 | - `image_tag` (string) - The docker image tag. 14 | - `task_resources` (object, number number) Resources used by Kibana task 15 | - `register_consul_service` (bool) - If you want to register a consul service for the job 16 | - `consul_service_name` (string) - The consul service name for the Kibana application 17 | - `consul_service_tags` (list of string) - The consul service name for the Kibana application 18 | - `config_volume_name` (string) - The name of the configuration dedicated volume you want Kibana to use 19 | - `config_volume_type` (string) - The type of the configuration dedicated volume you want Kibana to use 20 | - `kibana_keystore_name` (string) - The name of the file to persist Kibana secure settings 21 | - `docker_kibana_env_vars` (map of string) - Environment variables to pass to Docker container 22 | - `kibana_config_file_path` (string) - Kibana configuration file path 23 | 24 | ## Automated Setup and Persisted Configuration 25 | 26 | You have two options: 27 | 28 | - __Environment variables way__: 29 | If you pass the right environment variables to the pack, you can automatically set up Kibana. 30 | An example of the `docker_kibana_env_vars` to use is in the `vars.nomad` file. 31 | 32 | - __Configuration file through volume__: 33 | You can also mount a volume to persist the configuration file that you can pass through the variable `kibana_config_file_path`. 34 | You have also to set the `config_volume_name` variable that allows you to mount the volume where you can save the configuration file. Also this in `vars.nomad`. 35 | 36 | Pay attention that, if you pass environment variables to set up Kibana AND you use the configuration file volume, the docker environment variables have the precedence. 37 | 38 | ## Persist the Kibana keystore 39 | 40 | To persist your secure settings, use the `kibana-keystore` utility setting `kibana_keystore_name` variable. 41 | -------------------------------------------------------------------------------- /packs/nomad_ingress_nginx/templates/nginx.nomad.tpl: -------------------------------------------------------------------------------- 1 | job "[[template "job_name" .]]" { 2 | type = "[[var "job_type" .]]" 3 | 4 | region = "[[var "region" .]]" 5 | datacenters = [[var "datacenters" . | toStringList]] 6 | namespace = "[[var "namespace" .]]" 7 | 8 | constraint { 9 | attribute = "${attr.consul.version}" 10 | operator = "is_set" 11 | } 12 | 13 | group "nginx" { 14 | count = [[var "nginx_count" .]] 15 | 16 | network { 17 | port "http" { 18 | static = [[var "http_port" .]] 19 | [[- if var "http_port_host_network" .]] 20 | host_network = [[var "http_port_host_network" .]] 21 | [[- end]] 22 | } 23 | 24 | [[range var "nginx_extra_ports" .]] 25 | port "[[.name]]" { 26 | static = [[.port]] 27 | [[- if var "host_network" .]] 28 | host_network = "[[.host_network]]" 29 | [[- end]] 30 | } 31 | [[end]] 32 | } 33 | 34 | service { 35 | name = "nomad-ingress-nginx" 36 | port = "http" 37 | 38 | check { 39 | type = "http" 40 | port = "http" 41 | path = "/health" 42 | interval = "5s" 43 | timeout = "2s" 44 | } 45 | } 46 | 47 | task "nginx" { 48 | driver = "docker" 49 | 50 | config { 51 | image = "[[var "nginx_image" .]]" 52 | 53 | ports = [ 54 | "http", 55 | [[- range var "nginx_extra_ports" .]] 56 | "[[.name]]", 57 | [[- end]] 58 | ] 59 | 60 | volumes = [ 61 | "local:/etc/nginx/conf.d", 62 | ] 63 | } 64 | 65 | template { 66 | data = < 73 | job('nomad') { 74 | label('nomad') 75 | steps { 76 | shell('whoami') 77 | } 78 | } 79 | EOF 80 | plugins = ["configuration-as-code", "hashicorp-vault-plugin", "job-dsl", "nomad"] 81 | register_consul_service = true 82 | volume_name = "jenkins" 83 | -------------------------------------------------------------------------------- /packs/nomad_autoscaler/variables.hcl: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corp. 2021, 2025 2 | # SPDX-License-Identifier: MPL-2.0 3 | 4 | variable "job_name" { 5 | description = "The name to use as the job name which overrides using the pack name." 6 | type = string 7 | default = "" 8 | } 9 | 10 | variable "datacenters" { 11 | description = "A list of datacenters in the region which are eligible for task placement." 12 | type = list(string) 13 | default = ["dc1"] 14 | } 15 | 16 | variable "node_pool" { 17 | description = "The node pool where the job should be placed." 18 | type = string 19 | default = "default" 20 | } 21 | 22 | variable "region" { 23 | description = "The region where the job should be placed." 24 | type = string 25 | default = "global" 26 | } 27 | 28 | variable "namespace" { 29 | description = "The namespace where the job should be placed." 30 | type = string 31 | default = "default" 32 | } 33 | 34 | variable "autoscaler_agent_network" { 35 | description = "The Nomad Autoscaler network configuration options." 36 | type = object({ 37 | autoscaler_http_port_label = string 38 | }) 39 | default = { 40 | autoscaler_http_port_label = "http", 41 | } 42 | } 43 | 44 | variable "autoscaler_agent_task" { 45 | description = "Details configuration options for the Nomad Autoscaler agent task." 46 | type = object({ 47 | driver = string 48 | version = string 49 | additional_cli_args = list(string) 50 | config_files = list(string) 51 | scaling_policy_files = list(string) 52 | }) 53 | default = { 54 | driver = "docker", 55 | version = "0.3.3", 56 | additional_cli_args = ["-nomad-address=http://$${attr.unique.network.ip-address}:4646", "-http-bind-address=0.0.0.0"], 57 | config_files = [], 58 | scaling_policy_files = [] 59 | } 60 | } 61 | 62 | variable "autoscaler_agent_task_resources" { 63 | description = "The resource to assign to the Nomad Autoscaler task." 64 | type = object({ 65 | cpu = number 66 | memory = number 67 | }) 68 | default = { 69 | cpu = 500, 70 | memory = 256 71 | } 72 | } 73 | 74 | variable "autoscaler_agent_task_service" { 75 | description = "Configuration options of the Nomad Autoscaler service and check." 76 | type = object({ 77 | enabled = bool 78 | service_name = string 79 | service_tags = list(string) 80 | check_interval = string 81 | check_timeout = string 82 | }) 83 | default = { 84 | enabled = true 85 | service_name = "nomad-autoscaler", 86 | service_tags = [], 87 | check_interval = "3s", 88 | check_timeout = "1s", 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /packs/sonarqube/templates/sonarqube.nomad.tpl: -------------------------------------------------------------------------------- 1 | job [[ template "job_name" . ]] { 2 | [[ template "region" . ]] 3 | datacenters = [[ var "datacenters" . | toStringList ]] 4 | node_pool = [[ var "node_pool" . | quote ]] 5 | [[- if var "namespace" . ]] 6 | namespace = [[ var "namespace" . | quote ]] 7 | [[- end ]] 8 | [[- if var "constraints" . ]][[ range $idx, $constraint := var "constraints" . ]] 9 | constraint { 10 | [[- if ne $constraint.attribute "" ]] 11 | attribute = [[ $constraint.attribute | quote ]] 12 | [[- end ]] 13 | [[- if ne $constraint.value "" ]] 14 | value = [[ $constraint.value | quote ]] 15 | [[- end ]] 16 | [[- if ne $constraint.operator "" ]] 17 | operator = [[ $constraint.operator | quote ]] 18 | [[- end ]] 19 | } 20 | [[- end ]] 21 | [[- end ]] 22 | 23 | group [[ template "job_name" . ]] { 24 | count = 1 25 | 26 | network { 27 | port "http" { 28 | to = 9000 29 | } 30 | } 31 | 32 | [[- if var "register_consul_service" . ]] 33 | service { 34 | name = "[[ var "consul_service_name" . ]]" 35 | [[- if ne (len (var "consul_service_tags" .)) 0 ]] 36 | tags = [[ var "consul_service_tags" . | toStringList ]] 37 | [[- end ]] 38 | port = "http" 39 | check { 40 | name = "alive" 41 | type = "http" 42 | path = "/" 43 | interval = "10s" 44 | timeout = "2s" 45 | } 46 | } 47 | [[- end ]] 48 | 49 | [[- if var "volume_name" . ]] 50 | volume "[[var "volume_name" .]]" { 51 | type = "[[var "volume_type" .]]" 52 | read_only = false 53 | source = "[[var "volume_name" .]]" 54 | } 55 | [[- end ]] 56 | 57 | restart { 58 | attempts = 2 59 | interval = "5m" 60 | delay = "15s" 61 | mode = "fail" 62 | } 63 | 64 | task [[ template "job_name" . ]] { 65 | driver = "docker" 66 | 67 | [[- if var "volume_name" . ]] 68 | volume_mount { 69 | volume = "[[ var "volume_name" . ]]" 70 | destination = "/opt/sonarqube/data" 71 | read_only = false 72 | } 73 | [[- end ]] 74 | 75 | config { 76 | image = "[[ var "image_name" . ]]:[[ var "image_tag" . ]]" 77 | ports = ["http"] 78 | } 79 | 80 | [[if ne (len (var "sonarqube_env_vars" .)) 0 ]] 81 | env { 82 | [[ range $key, $var := var "sonarqube_env_vars" . ]] 83 | [[if ne (len $var) 0 ]][[ $key | upper ]] = [[ $var | quote ]][[ end ]] 84 | [[ end ]] 85 | } 86 | [[ end ]] 87 | 88 | resources { 89 | cpu = [[ var "task_resources.cpu" . ]] 90 | memory = [[ var "task_resources.memory" . ]] 91 | } 92 | } 93 | } 94 | } 95 | --------------------------------------------------------------------------------