Giter Site home page Giter Site logo

nomad-pack-community-registry's Introduction

Nomad Pack Community Registry

This is a registry of community-maintained packs for Nomad Pack.

Writing your own Packs

For guidance on writing your own packs, see the Writing Packs Guide in the Nomad Pack repository.

Contributions and Feedback

Contributions are welcome in any form.

Pull Requests with new packs are highly encouraged! These packs could be common applications that you believe other Nomad users will want to deploy, tools to learn Nomad better, or examples of common patterns.

When submitting a Pack, please ensure you add a Readme that explains what the pack is and mention any dependencies that the pack has (such as Consul, Vault, Volumes, or Drivers).

Suggestions on helpful packs to add can found in the Repo Issues. Upvotes and comments on packs you are interested in will help the Nomad team and community prioritize which packs to write.

nomad-pack-community-registry's People

Contributors

attachmentgenie avatar avillela avatar brandonromano avatar carloslozano avatar davasny avatar derekstrickland avatar efbar avatar ferhatvurucu avatar gjpin avatar groggemans avatar hashicorp-copywrite[bot] avatar huazhihao avatar jharley avatar jrasell avatar lgfa29 avatar maetis avatar mikenomitch avatar mohammed90 avatar nmaggioni avatar nodyhub avatar pondidum avatar rendanic avatar resmo avatar rickygrassmuck avatar ryanuber avatar schmichael avatar tcassaert avatar tgross avatar tokongs avatar tunzor avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nomad-pack-community-registry's Issues

How does Nomad Pack pull these packs from the github repo?

I was curious if Nomad Pack is getting pack sources from github or a server that's hosting the sources, updating the server cache after the github repo is updated. Just asking out of curiosity. The only way to get a list of all the files in a subdirectory of the repository would be a git pull of the entire repository (perhaps without the entire repo history) or using the GitHub API. I would imagine it's against GH's terms to serve content from GitHub for an application integration like this.

pack: add demo pack to deploy Prometheus and Grafana to replace Nomad integrations dir

Nomad has an integrations directory which includes some example configuration and dashboarding for Prometheus and Grafana. This directory is stale and does not provide a great amount of value; whereas a demo pack would provide greater value.

I propose adding a new demo_promtheus_grafana pack which deploys a single job with these two applications. It will include basic configuration and example dashboards which can be used for demos, as well as to gain initial insight into running these applications as a Nomad job.

Once the pack is available, the files from Nomad should be removed with a marker file pointing to the new pack.

Pack: Basic system job

A pack which deploys a system job with basic parameterization would be helpful for educational purposes.

Pack: Basic cron batch job

A pack which deploys a cron batch job with basic parameterization would be helpful for educational purposes.

This could be part of the geberal basic cron job pack, or its own pack.

nomad_ingress_nginx Multiple job rendering failed

Hi ,I started multiple jobs using the same service, but I found that when I started the second job, it would fail and lose the first one that has been rendered successfully. Normally, I want an ingress load to work with multiple jobs

Clarification on stateful workloads

Hi!

I am looking to send a PR for a Listmonk pack. It requires to run a PostgreSQL database as a dependency. What would be the best way to create volume/mount config blocks here? Should we assume a CSI plugin is used and create a volume resource in the pack? Or keep it simple and provide an example with host_volumes (Note: That also requires the user to enable them)

bug: simple_service fails to parse outputs

Running this command

nomad-pack run simple_service --var="count=4"

Generates the following error.

! Failed To Render Output Template

    Error:   failed to render outputs.tpl: template: outputs.tpl:7:18: executing "outputs.tpl" at <.hello_world.register_consul_service>: nil pointer evaluating interface {}.register_consul_service
    Type:    *errors.errorString
    Context: 
             - Pack Name: simple_service

Defined Standards & Best Practices for Packs

Hello!

While creating a couple of packs to submit to the registry I immediately noticed some areas where there were multiple ways a scenario could be handled. A few scenarios that came up:

  1. Application configuration files handling
  2. Setting up Vault configurations.
  3. Configuring task mounts.

For the packs I ended up creating, I ultimately decided to go with the "Provide a sane default while allowing the user to customize/override this" approach which I realized quickly could be implemented in many different ways.

Common scenarios like template blocks for configuration files, vault blocks for secrets, and custom mount configurations needed for users specific environments will pop up in nearly all packs and it would make life for both end-users and pack creators much simpler if there were some well defined guidelines for how these common scenarios should be implemented.

For example, handling vault configurations. Per the Nomad Job Specification, this block can be defined from Job level scope all the way down to individual Task level scopes. If a pack provides task(s) that allow for passing in configuration options, I think it makes sense for that package to facilitate enabling vault access as needed in the job spec so that users can securely provide those options if they choose to.

In order to provide a consistent experience across the official packs in the community, there should exist a standard way for "enabling" vault usage in a pack. This would include providing a set of standard variables declarations as well as boilerplate template (or possibly creating a predefined builtin function/template with sprig) code that should be added to the job template.

IMHO, defining, implementing and documenting these sorts of standards early on will greatly reduce the learning curve by providing concrete ways to handle some of the most common implementation details.

Just wanted to throw the idea out there and see if this was something that had been considered or is worth having a discussion about.

Thanks!

Podman should be an option instead of hard coding docker driver

Packs that use docker images all use the docker driver. Not sure about other nomad drivers but podman should also work in the templates. I can fork the repo and find/replace the docker driver with podman, but it would be nice if it was a variable with docker as the default.

Pack: Basic exec service job

A pack which deploys an exec service job with basic parameterization would be helpful for educational purposes.

Pack: Mastodon

creating a mastodon pack, based on this docker compose file seems to be 5 moving parts

Postgres
Redis
One or more rails web application processes
One or more worker processes
One or more node streaming processes

Here’s the docker compose file:
https://github.com/mastodon/mastodon/blob/main/docker-compose.yml

I know at least one other potential user, so I’m opening this issue to see if anyone more experienced with nomad pack would be up for collaborating on creating this.

Pack: Redis

Would be great to have a Redis pack.

Some guidance/explanation on volumes would be great too. :)

Pack: Basic batch job

A pack which deploys a batch job with basic parameterization would be helpful for educational purposes.

Issues with heredoc within included hcl variables

I'm writing my own version of the traefik pack (needs a lot of modification for internal use) and this:

variable "toml_config" {
	type = string
	description = "traefik.toml config"
	default     = <<EOF
[entryPoints]
  [entryPoints.http]
  address = ":8080"
  [entryPoints.traefik]
  address = ":1936"
[api]
  dashboard = true
  insecure = true
[providers.consulCatalog]
  prefix           = "traefik"
  exposedByDefault = false
[providers.consulCatalog.endpoint]
  address = "{{ env "attr.unique.network.ip-address" }}:8500"
  scheme  = "http"
EOF
}

Produces exactly that block, no problems.

However, when doing nomad-pack render -f vars.hcl . where vars.hcl contains

toml_config = <<EOF
[example]
  toml-config
EOF

The error is

! Failed To Process Pack

	Error:   No closing marker was found for the string.
	Type:    *errors.errorString
	Context:
	         - HCL Range: test.hcl:28,4-4
	         - Registry Name: dev
	         - Pack Name: traefik
	         - Pack Ref: dev

I've gotten through everything else but this problem without too much trouble, but this one really has me stuck...

I can use a string literal here (and I am, for now) but that's really unmaintainable long-term.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.