MCPcopy Index your code
hub / github.com/bsdpot/nomad-pot-driver

github.com/bsdpot/nomad-pot-driver @v0.10.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.10.0 ↗ · + Follow
79 symbols 190 edges 8 files 28 documented · 35%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Pot task Driver

Name: pot-task-driver

The Pot task driver provides an interface for using pot for dynamically running applications inside a FreeBSD Jail. You can download the external pot-task-driver here.

This version of the driver requires pot 0.15.0 or greater.

Complete job example

job "example" {
  datacenters = ["datacenter"]
  type        = "service"

  group "group1" {
    count = 1

    task "www1" {
      driver = "pot"

      service {
        tags = ["nginx", "www"]
        name = "nginx-example-service"
        port = "http"

         check {
            type     = "tcp"
            name     = "tcp"
            interval = "60s"
            timeout  = "30s"
          }
      }

      config {
        image = "https://potluck.honeyguide.net/nginx-nomad"
        pot = "nginx-nomad-amd64-13_1"
        tag = "1.1.13"
        command = "nginx"
        args = ["-g","'daemon off;'"]

        copy = [
          "/mnt/s3/web/nginx.conf:/usr/local/etc/nginx/nginx.conf",
        ]
        mount = [
          "/mnt/s3/web/www:/mnt"
        ]
        port_map = {
          http = "80"
        }
      }

      resources {
        cpu = 200
        memory = 64

        network {
          mbits = 10
          port "http" {}
        }
      }
    }
  }
}

Task Configuration

task "nginx-pot" {
    driver = "pot"

    config {
      image = "https://potluck.honeyguide.net/nginx-nomad"
      pot = "nginx-nomad-amd64-13_1"
      tag = "1.1.13"
      command = "nginx"
      args = ["-g","'daemon off;'"]

      copy = [
        "/mnt/s3/web/nginx.conf:/usr/local/etc/nginx/nginx.conf",
      ]
      mount = [
        "/mnt/s3/web/www:/mnt"
      ]
      port_map = {
        http = "80"
      }
    }
}

The pot task driver supports the following parameters:

  • image - The url for the http registry from where to get the image.

  • pot - Name of the image in the registry.

  • tag - Version of the image.

  • commad - (Optional) Command that is going to be executed once the jail is started.

  • args - (Optional. Depends on commad) Array of arguments to append to the command.

  • network_mode - (Optional) Defines the network mode of the pot. Default: "public-bridge"

Possible values are:

"public-bridge" pot creates an internal virtual network with a NAT table where all traffic is going to be sent.

"host" pot bounds the jail directly to a host port.

  • port_map - (Optional) Sets the port on which the application is listening inside of the jail. If not set, the application will inherit the port configuration from the image.

  • copy - (Optional) Copies a file from the host machine to the pot jail in the given directory.

  • mount - (Optional) Mounts a read/write folder from the host machine to the pot jail.

  • mount_read_only - (Optional) Mounts a read only directory inside the pot jail.

  • attributes - (Optional) List of colon separated KEY:VALUE pairs of pot jail attributes (e.g. devfs_ruleset:3), see pot help set-attr for possible values.

Client Requirements

pot-task-driver requires the following:

  • 64-bit FreeBSD 12.4-RELEASE or 13.2-RELEASE host .
  • The FreeBSD's Nomad binary (available as a package).
  • The pot-task-driver binary placed in the plugin_dir directory.
  • Installing pot, version 0.15.6 or greater, and following the install guide.
  • Webserver from where to serve the images. (simple file server)
  • Following lines need to be included in your rc.conf
nomad_user="root"
nomad_env="PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/sbin:/bin"

Core symbols most depended-on inside this repo

Get
called by 12
driver/state.go
Close
called by 10
driver/prepare.go
destroyContainer
called by 8
driver/pot.go
isClosedError
called by 3
driver/exec_utils.go
checkContainerAlive
called by 3
driver/pot.go
TaskStatus
called by 2
driver/handle.go
run
called by 2
driver/handle.go
prepareContainer
called by 2
driver/prepare.go

Shape

Method 49
Function 18
Struct 12

Languages

Go100%

Modules by API surface

driver/driver.go28 symbols
driver/pot.go15 symbols
driver/prepare.go10 symbols
driver/exec_utils.go9 symbols
driver/handle.go7 symbols
driver/state.go5 symbols
driver/pty_unix.go3 symbols
main.go2 symbols

For agents

$ claude mcp add nomad-pot-driver \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page