@@ -1,8 +0,0 @@
|
||||
{
|
||||
"version": 4,
|
||||
"terraform_version": "1.1.7",
|
||||
"serial": 3,
|
||||
"lineage": "024f69f1-cac1-435f-fdb1-d90b3bfd0638",
|
||||
"outputs": {},
|
||||
"resources": []
|
||||
}
|
16
woodpecker/main.tf
Normal file
16
woodpecker/main.tf
Normal file
@@ -0,0 +1,16 @@
|
||||
provider "nomad" {}
|
||||
//Set everything via environment variables
|
||||
|
||||
resource "nomad_job" "woodpecker-server" {
|
||||
jobspec = file("./woodpecker-server.nomad")
|
||||
hcl2 {
|
||||
enabled = true
|
||||
}
|
||||
}
|
||||
|
||||
resource "nomad_job" "woodpecker-agent" {
|
||||
jobspec = file("./woodpecker-agent.nomad")
|
||||
hcl2 {
|
||||
enabled = true
|
||||
}
|
||||
}
|
57
woodpecker/woodpecker-agent.nomad
Normal file
57
woodpecker/woodpecker-agent.nomad
Normal file
@@ -0,0 +1,57 @@
|
||||
job "woodpecker-agent" {
|
||||
region = "global"
|
||||
datacenters = [ "nazrin" ]
|
||||
type = "service"
|
||||
group "svc" {
|
||||
count = 1
|
||||
network {
|
||||
mode = "bridge"
|
||||
}
|
||||
|
||||
vault {
|
||||
policies = [ "woodpecker-agent" ]
|
||||
}
|
||||
|
||||
service {
|
||||
connect {
|
||||
sidecar_service {
|
||||
proxy {
|
||||
upstreams {
|
||||
destination_name = "woodpecker-grpc"
|
||||
local_bind_port = 9000
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
task "woodpecker" {
|
||||
driver = "docker"
|
||||
|
||||
config {
|
||||
image = "woodpeckerci/woodpecker-agent:latest"
|
||||
command = "agent"
|
||||
volumes = [ "/var/run/docker.sock:/var/run/docker.sock"]
|
||||
}
|
||||
|
||||
resources {
|
||||
cpu = 2048
|
||||
memory = 2048
|
||||
}
|
||||
|
||||
template {
|
||||
data = <<EOF
|
||||
WOODPECKER_LOG_LEVEL=info
|
||||
WOODPECKER_USERNAME=Marisa
|
||||
WOODPECKER_AGENT_SECRET={{ with secret "kv/data/woodpecker/agent" }}{{ .Data.data.agent_secret }}{{ end }}
|
||||
WOODPECKER_MAX_PROCS=2
|
||||
WOODPECKER_SERVER={{ env "NOMAD_UPSTREAM_ADDR_woodpecker_grpc" }}
|
||||
EOF
|
||||
env = true
|
||||
change_mode = "restart"
|
||||
destination = "${NOMAD_SECRETS_DIR}/data.env"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
113
woodpecker/woodpecker-server.nomad
Normal file
113
woodpecker/woodpecker-server.nomad
Normal file
@@ -0,0 +1,113 @@
|
||||
job "woodpecker-server" {
|
||||
region = "global"
|
||||
datacenters = [ "nazrin" ]
|
||||
type = "service"
|
||||
|
||||
group "svc" {
|
||||
count = 1
|
||||
network {
|
||||
mode = "bridge"
|
||||
port "db" {
|
||||
to = 5432
|
||||
}
|
||||
port "http" {
|
||||
static = "6666"
|
||||
to = "8000"
|
||||
}
|
||||
port "grpc" {
|
||||
to = "9000"
|
||||
}
|
||||
}
|
||||
|
||||
vault {
|
||||
policies = [ "woodpecker-server" ]
|
||||
}
|
||||
|
||||
service {
|
||||
name = "woodpecker-grpc"
|
||||
port = "9000"
|
||||
connect {
|
||||
sidecar_service {}
|
||||
}
|
||||
}
|
||||
|
||||
service {
|
||||
name = "woodpecker-db"
|
||||
port = "db"
|
||||
}
|
||||
|
||||
service {
|
||||
name = "woodpecker-http"
|
||||
port = "http"
|
||||
}
|
||||
|
||||
task "db" {
|
||||
template {
|
||||
data = <<EOF
|
||||
{{ with secret "kv/data/woodpecker/db" }}{{ .Data.data.pass }}{{ end }}
|
||||
EOF
|
||||
destination = "${NOMAD_SECRETS_DIR}/db.pass"
|
||||
}
|
||||
driver = "docker"
|
||||
config {
|
||||
image = "postgres:alpine"
|
||||
ports = [ "db" ]
|
||||
volumes = [ "/var/lib/nomad-st/postgres-woodpecker:/var/lib/postgresql/data" ]
|
||||
}
|
||||
env {
|
||||
POSTGRES_USER = "woodpecker"
|
||||
POSTGRES_PASSWORD_FILE="${NOMAD_SECRETS_DIR}/db.pass"
|
||||
POSTGRES_DB = "woodpecker"
|
||||
}
|
||||
resources {
|
||||
cpu = 250
|
||||
memory = 128
|
||||
}
|
||||
}
|
||||
task "woodpecker" {
|
||||
driver = "docker"
|
||||
config {
|
||||
image = "woodpeckerci/woodpecker-server:latest"
|
||||
command = "web"
|
||||
image_pull_timeout = "30m"
|
||||
ports = [ "http" ]
|
||||
}
|
||||
|
||||
resources {
|
||||
cpu = 250
|
||||
memory = 128
|
||||
}
|
||||
|
||||
template {
|
||||
data = <<EOF
|
||||
{{ with secret "kv/data/woodpecker/keys" }}
|
||||
WOODPECKER_LOG_LEVEL=info
|
||||
WOODPECKER_HOST={{ .Data.data.external_host }}
|
||||
WOODPECKER_AGENT_SECRET={{ .Data.data.agent_secret }}
|
||||
{{end}}
|
||||
|
||||
{{ with secret "kv/data/woodpecker/admin" }}
|
||||
WOODPECKER_ADMIN={{ .Data.data.users }}
|
||||
{{ end }}
|
||||
|
||||
WOODPECKER_OPEN=true
|
||||
WOODPECKER_DATABASE_DRIVER=postgres
|
||||
|
||||
{{ with secret "kv/data/woodpecker/db" }}
|
||||
WOODPECKER_DATABASE_DATASOURCE=postgres://woodpecker:{{ .Data.data.pass }}@localhost:{{ env "NOMAD_PORT_db" }}/woodpecker?sslmode=disable
|
||||
{{ end }}
|
||||
|
||||
{{ with secret "kv/data/woodpecker/gitea" }}
|
||||
WOODPECKER_GITEA=true
|
||||
WOODPECKER_GITEA_URL={{ .Data.data.url }}
|
||||
WOODPECKER_GITEA_CLIENT={{ .Data.data.client }}
|
||||
WOODPECKER_GITEA_SECRET={{ .Data.data.secret }}
|
||||
{{ end }}
|
||||
EOF
|
||||
env = true
|
||||
change_mode = "restart"
|
||||
destination = "${NOMAD_SECRETS_DIR}/data.env"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user