Update host networks and proxy mapping
This commit is contained in:
parent
2ac0a3a15a
commit
aff7fd0186
1
.gitignore
vendored
1
.gitignore
vendored
@ -1 +1,2 @@
|
|||||||
roles/
|
roles/
|
||||||
|
venv/
|
||||||
|
29
Makefile
29
Makefile
@ -10,14 +10,19 @@ rm-nomad:
|
|||||||
--ssh-target-user $(SSH_USER) \
|
--ssh-target-user $(SSH_USER) \
|
||||||
--ssh-target-sudo-pass $(SSH_TARGET_SUDO_PASS)
|
--ssh-target-sudo-pass $(SSH_TARGET_SUDO_PASS)
|
||||||
|
|
||||||
.PHONY: nomad
|
.PHONY: nomad-up
|
||||||
nomad:
|
nomad-up:
|
||||||
hashi-up nomad install \
|
hashi-up nomad install \
|
||||||
--ssh-target-addr $(SERVER) \
|
--ssh-target-addr $(SERVER) \
|
||||||
--ssh-target-key $(SSH_KEY) \
|
--ssh-target-key $(SSH_KEY) \
|
||||||
--ssh-target-user $(SSH_USER) \
|
--ssh-target-user $(SSH_USER) \
|
||||||
--ssh-target-sudo-pass $(SSH_TARGET_SUDO_PASS) \
|
--ssh-target-sudo-pass $(SSH_TARGET_SUDO_PASS) \
|
||||||
--server --client
|
--server --client
|
||||||
|
hashi-up nomad start \
|
||||||
|
--ssh-target-addr $(SERVER) \
|
||||||
|
--ssh-target-key $(SSH_KEY) \
|
||||||
|
--ssh-target-user $(SSH_USER) \
|
||||||
|
--ssh-target-sudo-pass $(SSH_TARGET_SUDO_PASS)
|
||||||
|
|
||||||
.PHONY: rm-consul
|
.PHONY: rm-consul
|
||||||
rm-consul:
|
rm-consul:
|
||||||
@ -27,21 +32,29 @@ rm-consul:
|
|||||||
--ssh-target-user $(SSH_USER) \
|
--ssh-target-user $(SSH_USER) \
|
||||||
--ssh-target-sudo-pass $(SSH_TARGET_SUDO_PASS)
|
--ssh-target-sudo-pass $(SSH_TARGET_SUDO_PASS)
|
||||||
|
|
||||||
.PHONY: consul
|
.PHONY: consul-up
|
||||||
consul:
|
consul-up:
|
||||||
hashi-up consul install \
|
hashi-up consul install \
|
||||||
--ssh-target-addr $(SERVER) \
|
--ssh-target-addr $(SERVER) \
|
||||||
--advertise-addr $(SERVER) \
|
|
||||||
--client-addr 0.0.0.0 \
|
|
||||||
--http-addr 0.0.0.0 \
|
|
||||||
--ssh-target-key $(SSH_KEY) \
|
--ssh-target-key $(SSH_KEY) \
|
||||||
--ssh-target-user $(SSH_USER) \
|
--ssh-target-user $(SSH_USER) \
|
||||||
--ssh-target-sudo-pass $(SSH_TARGET_SUDO_PASS) \
|
--ssh-target-sudo-pass $(SSH_TARGET_SUDO_PASS) \
|
||||||
|
--advertise-addr $(SERVER) \
|
||||||
|
--client-addr 0.0.0.0 \
|
||||||
|
--http-addr 0.0.0.0 \
|
||||||
--connect \
|
--connect \
|
||||||
--server
|
--server
|
||||||
|
hashi-up consul start \
|
||||||
|
--ssh-target-addr $(SERVER) \
|
||||||
|
--ssh-target-key $(SSH_KEY) \
|
||||||
|
--ssh-target-user $(SSH_USER) \
|
||||||
|
--ssh-target-sudo-pass $(SSH_TARGET_SUDO_PASS)
|
||||||
|
|
||||||
.PHONY: cluster
|
.PHONY: cluster
|
||||||
cluster:
|
cluster: consul-up nomad-up
|
||||||
|
|
||||||
|
.PHONY: ansible-cluster
|
||||||
|
ansible-cluster:
|
||||||
ansible-galaxy install -p roles -r roles/requirements.yml
|
ansible-galaxy install -p roles -r roles/requirements.yml
|
||||||
ansible-playbook -K -vv -i ansible_hosts -M roles/ ./setup-cluster.yml
|
ansible-playbook -K -vv -i ansible_hosts -M roles/ ./setup-cluster.yml
|
||||||
|
|
||||||
|
@ -15,28 +15,37 @@ job "adminer" {
|
|||||||
network {
|
network {
|
||||||
mode = "bridge"
|
mode = "bridge"
|
||||||
port "adminer" {
|
port "adminer" {
|
||||||
static = 8080
|
host_network = "loopback"
|
||||||
to = 8080
|
to = 8080
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
service {
|
service {
|
||||||
name = "adminer"
|
|
||||||
port = "adminer"
|
port = "adminer"
|
||||||
|
|
||||||
connect {
|
connect {
|
||||||
sidecar_service {
|
sidecar_service {
|
||||||
proxy {
|
proxy {
|
||||||
|
local_service_port = 8080
|
||||||
|
|
||||||
upstreams {
|
upstreams {
|
||||||
destination_name = "mysql-server"
|
destination_name = "mysql-server"
|
||||||
# TODO: how do I get these to not bind to the host eth0 address
|
# TODO: how do I get these to not bind to the host eth0 address
|
||||||
local_bind_port = 4040
|
local_bind_port = 4040
|
||||||
}
|
}
|
||||||
|
|
||||||
config {
|
config {
|
||||||
protocol = "tcp"
|
protocol = "tcp"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sidecar_task {
|
||||||
|
resources {
|
||||||
|
cpu = 50
|
||||||
|
memory = 25
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
tags = [
|
tags = [
|
||||||
|
@ -4,7 +4,6 @@ job "mysql-server" {
|
|||||||
|
|
||||||
group "mysql-server" {
|
group "mysql-server" {
|
||||||
count = 1
|
count = 1
|
||||||
# Some affinity to stateful hosts?
|
|
||||||
|
|
||||||
restart {
|
restart {
|
||||||
attempts = 10
|
attempts = 10
|
||||||
@ -17,6 +16,7 @@ job "mysql-server" {
|
|||||||
mode = "bridge"
|
mode = "bridge"
|
||||||
port "db" {
|
port "db" {
|
||||||
static = 3306
|
static = 3306
|
||||||
|
to = 3306
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -34,6 +34,7 @@ job "mysql-server" {
|
|||||||
sidecar_service {}
|
sidecar_service {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Can't use a tcp check with bridge network or proxy
|
||||||
# check {
|
# check {
|
||||||
# type = "tcp"
|
# type = "tcp"
|
||||||
# interval = "10s"
|
# interval = "10s"
|
||||||
@ -52,6 +53,7 @@ job "mysql-server" {
|
|||||||
|
|
||||||
env = {
|
env = {
|
||||||
"MYSQL_ROOT_PASSWORD" = "supersecretpassword"
|
"MYSQL_ROOT_PASSWORD" = "supersecretpassword"
|
||||||
|
# Allow connections from any host
|
||||||
"MYSQL_ROOT_HOST" = "%"
|
"MYSQL_ROOT_HOST" = "%"
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -61,7 +63,7 @@ job "mysql-server" {
|
|||||||
}
|
}
|
||||||
|
|
||||||
resources {
|
resources {
|
||||||
cpu = 500
|
cpu = 300
|
||||||
memory = 1024
|
memory = 1024
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
30
services.tf
30
services.tf
@ -1,28 +1,28 @@
|
|||||||
# Configure Consul provider
|
# Configure Consul provider
|
||||||
variable "consul_address" {
|
variable "consul_address" {
|
||||||
type = string
|
type = string
|
||||||
default = "http://192.168.2.41:8500"
|
default = "http://192.168.2.41:8500"
|
||||||
}
|
}
|
||||||
|
|
||||||
provider "consul" {
|
provider "consul" {
|
||||||
address = "${var.consul_address}"
|
address = var.consul_address
|
||||||
}
|
}
|
||||||
|
|
||||||
# Get Nomad client from Consul
|
# Get Nomad client from Consul
|
||||||
data "consul_service" "read-nomad-cluster" {
|
data "consul_service" "read-nomad-cluster" {
|
||||||
name = "nomad-client"
|
name = "nomad-client"
|
||||||
# name = "nomad-clients"
|
# name = "nomad-clients"
|
||||||
}
|
}
|
||||||
|
|
||||||
locals {
|
locals {
|
||||||
nomad_node = "${data.consul_service.read-nomad-cluster.service[0]}"
|
nomad_node = data.consul_service.read-nomad-cluster.service[0]
|
||||||
nomad_node_address = "http://${local.nomad_node.node_address}:${local.nomad_node.port}"
|
nomad_node_address = "http://${local.nomad_node.node_address}:${local.nomad_node.port}"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Configure the Consul provider
|
# Configure the Consul provider
|
||||||
provider "nomad" {
|
provider "nomad" {
|
||||||
# address = "http://services.thefij:4646"
|
# address = "http://services.thefij:4646"
|
||||||
address = "${local.nomad_node_address}"
|
address = local.nomad_node_address
|
||||||
region = "global"
|
region = "global"
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -64,3 +64,21 @@ resource "nomad_job" "whoami" {
|
|||||||
|
|
||||||
jobspec = file("${path.module}/whoami.nomad")
|
jobspec = file("${path.module}/whoami.nomad")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Create a sample host
|
||||||
|
resource "nomad_job" "nextcloud-bootstrap" {
|
||||||
|
hcl2 {
|
||||||
|
enabled = true
|
||||||
|
}
|
||||||
|
|
||||||
|
jobspec = file("${path.module}/nextcloud-bootstrap.nomad")
|
||||||
|
}
|
||||||
|
|
||||||
|
# Create a sample host
|
||||||
|
resource "nomad_job" "nextcloud" {
|
||||||
|
hcl2 {
|
||||||
|
enabled = true
|
||||||
|
}
|
||||||
|
|
||||||
|
jobspec = file("${path.module}/nextcloud.nomad")
|
||||||
|
}
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
# value: Hello from Ansible!
|
# value: Hello from Ansible!
|
||||||
# execute_once: true
|
# execute_once: true
|
||||||
|
|
||||||
- name: Build Consul cluster
|
- name: Build Nomad cluster
|
||||||
hosts: nomad_instances
|
hosts: nomad_instances
|
||||||
any_errors_fatal: true
|
any_errors_fatal: true
|
||||||
become: true
|
become: true
|
||||||
@ -39,6 +39,21 @@
|
|||||||
nomad_cni_enable: true
|
nomad_cni_enable: true
|
||||||
nomad_docker_enable: true
|
nomad_docker_enable: true
|
||||||
# nomad_use_consul: true
|
# nomad_use_consul: true
|
||||||
|
nomad_bind_address: 0.0.0.0
|
||||||
|
|
||||||
|
nomad_host_networks:
|
||||||
|
# - name: public
|
||||||
|
# cidr: 192.168.0.0/16
|
||||||
|
- name: private
|
||||||
|
cidr: 10.0.0.0/8
|
||||||
|
reserved_ports: "22"
|
||||||
|
- name: nomad-bridge
|
||||||
|
# cidr: 172.26.64.0/20
|
||||||
|
interface: nomad
|
||||||
|
reserved_ports: "22"
|
||||||
|
- name: loopback
|
||||||
|
interface: lo
|
||||||
|
reserved_ports: "22"
|
||||||
|
|
||||||
# TODO: this should probably be based on host
|
# TODO: this should probably be based on host
|
||||||
nomad_host_volumes:
|
nomad_host_volumes:
|
||||||
|
@ -63,7 +63,7 @@ job "traefik" {
|
|||||||
"--entryPoints.web.address=:80",
|
"--entryPoints.web.address=:80",
|
||||||
"--entryPoints.websecure.address=:443",
|
"--entryPoints.websecure.address=:443",
|
||||||
# "--entryPoints.websecure.tls=true",
|
# "--entryPoints.websecure.tls=true",
|
||||||
# "--entrypoints.web.http.redirections.entryPoint.to=websecure",
|
"--entrypoints.web.http.redirections.entryPoint.to=websecure",
|
||||||
# "--entryPoints.admin.address=:8080",
|
# "--entryPoints.admin.address=:8080",
|
||||||
"--accesslog=true",
|
"--accesslog=true",
|
||||||
"--api=true",
|
"--api=true",
|
||||||
@ -91,8 +91,8 @@ job "traefik" {
|
|||||||
}
|
}
|
||||||
|
|
||||||
resources {
|
resources {
|
||||||
cpu = 500
|
cpu = 50
|
||||||
memory = 100
|
memory = 50
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
17
whoami.nomad
17
whoami.nomad
@ -16,16 +16,27 @@ job "whoami" {
|
|||||||
network {
|
network {
|
||||||
mode = "bridge"
|
mode = "bridge"
|
||||||
port "web" {
|
port "web" {
|
||||||
# to = 80
|
host_network = "loopback"
|
||||||
|
to = 80
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
service {
|
service {
|
||||||
name = "whoami"
|
|
||||||
port = "web"
|
port = "web"
|
||||||
|
|
||||||
connect {
|
connect {
|
||||||
sidecar_service {}
|
sidecar_service {
|
||||||
|
proxy {
|
||||||
|
local_service_port = 80
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sidecar_task {
|
||||||
|
resources {
|
||||||
|
cpu = 50
|
||||||
|
memory = 50
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
check {
|
check {
|
||||||
|
Loading…
Reference in New Issue
Block a user