From e017e4906ef47ea7abb40349d0f16b76eea441cb Mon Sep 17 00:00:00 2001 From: emile Date: Mon, 14 Sep 2015 15:38:58 +0200 Subject: [PATCH] config template, backends --- docs/img/backends.png | Bin 25739 -> 24787 bytes templates/configuration.tmpl | 33 +++--- traefik.sample.toml | 205 +++++++++++++++++++++++++++++++++++ traefik.toml | 14 +-- 4 files changed, 225 insertions(+), 27 deletions(-) create mode 100644 traefik.sample.toml diff --git a/docs/img/backends.png b/docs/img/backends.png index 7e387c6bcdd0ffa937c071f6d6331d10f129b70e..75b07abf8b7521fd6ec80dc8fdeec17504572539 100644 GIT binary patch literal 24787 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 diff --git a/templates/configuration.tmpl b/templates/configuration.tmpl index 6b9b4ef62..4f5eed9bf 100644 --- a/templates/configuration.tmpl +++ b/templates/configuration.tmpl @@ -1,7 +1,7 @@ - Traefik + /ˈTræfɪk/ @@ -16,23 +16,16 @@ -
-
+
+

/ˈTræfɪk/

+
-
-
Backends
-
+
+
+ {{range $keyBackends, $valueBackends := .Configuration.Backends}}
{{$keyBackends}}
@@ -52,12 +45,12 @@
{{end}} -
+
-
-
Routes
-
+
+ {{range $keyRoutes, $valueRoutes := .Configuration.Routes}}
{{$keyRoutes}}
@@ -83,7 +76,7 @@
{{end}} -
+
diff --git a/traefik.sample.toml b/traefik.sample.toml new file mode 100644 index 000000000..d3726ba4e --- /dev/null +++ b/traefik.sample.toml @@ -0,0 +1,205 @@ +################################################################ +# Global configuration +################################################################ + +# Reverse proxy port +# +# Optional +# Default: ":80" +# +# port = ":80" + +# Timeout in seconds. +# Duration to give active requests a chance to finish during hot-reloads +# +# Optional +# Default: 10 +# +# graceTimeOut = 10 + +# Traefik logs file +# +# Optional +# +# traefikLogsFile = "log/traefik.log" + +# Traefik log to standard output +# +# Optional +# Default: true +# +# traefikLogsStdout = true + +# Access logs file +# +# Optional +# +# accessLogsFile = "log/access.log" + +# Log level +# +# Optional +# Default: "ERROR" +# +# logLevel = "ERROR" + +# SSL certificate and key used +# +# Optional +# +# CertFile = "traefik.crt" +# KeyFile = "traefik.key" + +################################################################ +# Web configuration backend +################################################################ + +# Enable web configuration backend +# +# Optional +# +# [web] + +# Web administration port +# +# Required +# +# address = ":8080" + + +################################################################ +# File configuration backend +################################################################ + +# Enable file configuration backend +# +# Optional +# +# [file] + +# Rules file +# If defined, traefik will load rules from this file, +# otherwise, it will load rules from current file (cf Sample rules below). +# +# Optional +# +# filename = "rules.toml" + +# Enable watch file changes +# +# Optional +# +# watch = true + + +################################################################ +# Docker configuration backend +################################################################ + +# Enable Docker configuration backend +# +# Optional +# +# [docker] + +# Docker server endpoint. Can be a tcp or a unix socket endpoint. +# +# Required +# +# endpoint = "unix:///var/run/docker.sock" + +# Enable watch docker changes +# +# Optional +# +# watch = true + +# Default domain used. +# Can be overridden by setting the "traefik.domain" label on a container. +# +# Required +# +# domain = "docker.localhost" + +# Override default configuration template. For advanced users :) +# +# Optional +# +# filename = "docker.tmpl" + + +################################################################ +# Mesos/Marathon configuration backend +################################################################ + +# Enable Marathon configuration backend +# +# Optional +# +# [marathon] + +# Marathon server endpoint. +# You can also specify multiple endpoint for Marathon: +# endpoint := "http://10.241.1.71:8080,10.241.1.72:8080,10.241.1.73:8080" +# +# Required +# +# endpoint = "http://127.0.0.1:8080" + +# Network interface used to call Marathon web services +# Optional +# Default: "eth0" +# +# networkInterface = "eth0" + +# Enable watch Marathon changes +# +# Optional +# +# watch = true + +# Default domain used. +# Can be overridden by setting the "traefik.domain" label on an application. +# +# Required +# +# domain = "marathon.localhost" + +# Override default configuration template. For advanced users :) +# +# Optional +# +# filename = "marathon.tmpl" + + + +################################################################ +# Sample rules +################################################################ +# [backends] +# [backends.backend1] +# [backends.backend1.servers.server1] +# url = "http://172.17.0.2:80" +# weight = 10 +# [backends.backend1.servers.server2] +# url = "http://172.17.0.3:80" +# weight = 1 +# [backends.backend2] +# [backends.backend2.servers.server1] +# url = "http://172.17.0.4:80" +# weight = 1 +# [backends.backend2.servers.server2] +# url = "http://172.17.0.5:80" +# weight = 2 +# +# [routes] +# [routes.route1] +# backend = "backend2" +# [routes.route1.rules.test_1] +# category = "Host" +# value = "test.localhost" +# [routes.route2] +# backend = "backend1" +# [routes.route2.rules.test_2] +# category = "Path" +# value = "/test" diff --git a/traefik.toml b/traefik.toml index d3726ba4e..43a7dadee 100644 --- a/traefik.toml +++ b/traefik.toml @@ -7,7 +7,7 @@ # Optional # Default: ":80" # -# port = ":80" +port = ":8081" # Timeout in seconds. # Duration to give active requests a chance to finish during hot-reloads @@ -58,13 +58,13 @@ # # Optional # -# [web] +[web] # Web administration port # # Required # -# address = ":8080" +address = ":8082" ################################################################ @@ -100,26 +100,26 @@ # # Optional # -# [docker] +[docker] # Docker server endpoint. Can be a tcp or a unix socket endpoint. # # Required # -# endpoint = "unix:///var/run/docker.sock" +endpoint = "unix:///var/run/docker.sock" # Enable watch docker changes # # Optional # -# watch = true +watch = true # Default domain used. # Can be overridden by setting the "traefik.domain" label on a container. # # Required # -# domain = "docker.localhost" +domain = "docker.localhost" # Override default configuration template. For advanced users :) #