Compare commits
	
		
			2 commits
		
	
	
		
			master
			...
			feature/up
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 2e2a86b52e | |||
| d4be3972d8 | 
					 5 changed files with 70 additions and 67 deletions
				
			
		
							
								
								
									
										16
									
								
								README.md
									
										
									
									
									
								
							
							
						
						
									
										16
									
								
								README.md
									
										
									
									
									
								
							|  | @ -13,19 +13,21 @@ Role Variables | ||||||
| -------------- | -------------- | ||||||
| 
 | 
 | ||||||
| ``` | ``` | ||||||
|  | traefik_install_user: {{ ansible_user } | ||||||
|  | traefik_install_path: /home/{{ traefik_install_user }} | ||||||
|  | traefik_letsencrypt_email:  | ||||||
| traefik_virtual_host: localhost | traefik_virtual_host: localhost | ||||||
| traefik: | traefik_expose_internally: True | ||||||
|   expose_internally: True | traefik_expose_externally: False | ||||||
|   expose_externally: False | traefik_use_acme_staging: True | ||||||
|   use_acme_staging: True | traefik_dns_challenge_provider: False | ||||||
|   dns_challenge_provider: False |  | ||||||
| # NOT WORKING YET! | # NOT WORKING YET! | ||||||
| # Extra mapping, for name -> internal address, like myservice: 'http://otherhost:12345' | # Extra mapping, for name -> internal address, like myservice: 'http://otherhost:12345' | ||||||
|   #extra_mapping: | #traefik_extra_mapping: | ||||||
| #   myservice: http://otherhost:12345 | #   myservice: http://otherhost:12345 | ||||||
| # use key:value pairs here to add additional environment variables to your traefik docker image. | # use key:value pairs here to add additional environment variables to your traefik docker image. | ||||||
| # for instance, if you're using a dns challenge provider place your api keys etc here. | # for instance, if you're using a dns challenge provider place your api keys etc here. | ||||||
|   #additional_env_vars: | #traefik_additional_env_vars: | ||||||
| #  # DUMMY_KEY: DUMMY_VALUE | #  # DUMMY_KEY: DUMMY_VALUE | ||||||
| #  CLOUDFLARE_EMAIL: EMAIL | #  CLOUDFLARE_EMAIL: EMAIL | ||||||
| #  CLOUDFLARE_API_KEY: API_KEY | #  CLOUDFLARE_API_KEY: API_KEY | ||||||
|  |  | ||||||
|  | @ -1,19 +1,20 @@ | ||||||
| --- | --- | ||||||
| # defaults file for traefik | # defaults file for traefik | ||||||
|  | traefik_install_user: '{{ ansible_user }}' # This user must be present on the host | ||||||
|  | traefik_install_path: '/home/{{ traefik_install_user }}' | ||||||
| traefik_virtual_host: localhost | traefik_virtual_host: localhost | ||||||
| traefik: | traefik_expose_internally: True | ||||||
|   expose_internally: True | traefik_expose_externally: False | ||||||
|   expose_externally: False | traefik_enable_acme: False | ||||||
|   enable_acme: False | traefik_use_acme_staging: True | ||||||
|   use_acme_staging: True | traefik_dns_challenge_provider: False | ||||||
|   dns_challenge_provider: False |  | ||||||
| # NOT WORKING YET! | # NOT WORKING YET! | ||||||
| # Extra mapping, for name -> internal address, like myservice: 'http://otherhost:12345' | # Extra mapping, for name -> internal address, like myservice: 'http://otherhost:12345' | ||||||
|   #extra_mapping: | #traefik_extra_mapping: | ||||||
|   #   myservice: http://otherhost:12345 | #  - myservice: http://otherhost:12345 | ||||||
| # use key:value pairs here to add additional environment variables to your traefik docker image. | # use key:value pairs here to add additional environment variables to your traefik docker image. | ||||||
| # for instance, if you're using a dns challenge provider place your api keys etc here. | # for instance, if you're using a dns challenge provider place your api keys etc here. | ||||||
|   #additional_env_vars: | #traefik_additional_env_vars: | ||||||
| #  # DUMMY_KEY: DUMMY_VALUE | #  # DUMMY_KEY: DUMMY_VALUE | ||||||
| #  CLOUDFLARE_EMAIL: EMAIL | #  CLOUDFLARE_EMAIL: EMAIL | ||||||
| #  CLOUDFLARE_API_KEY: API_KEY | #  CLOUDFLARE_API_KEY: API_KEY | ||||||
|  | @ -3,64 +3,64 @@ | ||||||
| 
 | 
 | ||||||
| - name: Ensure traefik config directory exists | - name: Ensure traefik config directory exists | ||||||
|   file: |   file: | ||||||
|     path: /home/{{ docker_user }}/traefik |     path: "{{ traefik_install_path }}/traefik" | ||||||
|     state: directory |     state: directory | ||||||
|     owner: '{{ docker_user }}' |     owner: '{{ traefik_install_user }}' | ||||||
|     group: '{{ docker_user }}' |     group: '{{ traefik_install_user }}' | ||||||
|   tags: config |   tags: config | ||||||
| 
 | 
 | ||||||
| - name: Ensure traefik rules directory exists | - name: Ensure traefik rules directory exists | ||||||
|   file: |   file: | ||||||
|     path: /home/{{ docker_user }}/traefik/rules |     path: "{{ traefik_install_path }}/traefik/rules" | ||||||
|     state: directory |     state: directory | ||||||
|     owner: '{{ docker_user }}' |     owner: '{{ traefik_install_user }}' | ||||||
|     group: '{{ docker_user }}' |     group: '{{ traefik_install_user }}' | ||||||
|   tags: config |   tags: config | ||||||
| 
 | 
 | ||||||
| - name: Provide TLS default options | - name: Provide TLS default options | ||||||
|   template: |   template: | ||||||
|     src: templates/t2-rules-tls-options.toml.j2 |     src: templates/t2-rules-tls-options.toml.j2 | ||||||
|     dest: /home/{{ docker_user }}/traefik/rules/tls-options.toml |     dest: "{{ traefik_install_path }}/traefik/rules/tls-options.toml" | ||||||
|     owner: "{{ docker_user }}" |     owner: "{{ traefik_install_user }}" | ||||||
|     group: "{{ docker_user }}" |     group: "{{ traefik_install_user }}" | ||||||
|     mode: '0644' |     mode: '0644' | ||||||
|   tags: config |   tags: config | ||||||
| 
 | 
 | ||||||
| - name: Provide docker-compose.yml | - name: Provide docker-compose.yml | ||||||
|   template: |   template: | ||||||
|     src: templates/docker-compose.traefik.yml.j2 |     src: templates/docker-compose.traefik.yml.j2 | ||||||
|     dest: /home/{{ docker_user }}/traefik/docker-compose.yml |     dest: "{{ traefik_install_path }}/traefik/docker-compose.yml" | ||||||
|     owner: "{{ docker_user }}" |     owner: "{{ traefik_install_user }}" | ||||||
|     group: "{{ docker_user }}" |     group: "{{ traefik_install_user }}" | ||||||
|     mode: '0644' |     mode: '0644' | ||||||
|   tags: config |   tags: config | ||||||
| 
 | 
 | ||||||
| - name: Provide traefik.toml | - name: Provide traefik.toml | ||||||
|   template: |   template: | ||||||
|     src: templates/traefik.toml.j2 |     src: templates/traefik.toml.j2 | ||||||
|     dest: /home/{{ docker_user }}/traefik/traefik.toml |     dest: "{{ traefik_install_path }}/traefik/traefik.toml" | ||||||
|     owner: "{{ docker_user }}" |     owner: "{{ traefik_install_user }}" | ||||||
|     group: "{{ docker_user }}" |     group: "{{ traefik_install_user }}" | ||||||
|     mode: '0644' |     mode: '0644' | ||||||
|   tags: config |   tags: config | ||||||
| 
 | 
 | ||||||
| - name: Configure SSL | - name: Configure SSL (if no existing certificates are found on the server) | ||||||
|   copy: |   copy: | ||||||
|     content: "" |     content: "{}" | ||||||
|     force: no |     force: no | ||||||
|     dest: /home/{{ docker_user }}/traefik/acme.json |     dest: "{{ traefik_install_path }}/traefik/acme.json" | ||||||
|     mode: 0600 |     mode: 0600 | ||||||
|   tags: config |   tags: config | ||||||
| 
 | 
 | ||||||
| - name: "docker-compose: Teardown existing Traefik service (only removes the containers)" | - name: "docker-compose: Teardown existing Traefik service (only removes the containers)" | ||||||
|   docker_compose: |   docker_compose: | ||||||
|     project_src: "/home/{{ docker_user }}/traefik/" |     project_src: "{{ traefik_install_path }}/traefik/" | ||||||
|     state: absent |     state: absent | ||||||
|   tags: ['never', 'teardown'] |   tags: ['never', 'teardown'] | ||||||
| 
 | 
 | ||||||
| - name: "docker-compose: Start Traefik service" | - name: "docker-compose: Start Traefik service" | ||||||
|   docker_compose: |   docker_compose: | ||||||
|     project_src: "/home/{{ docker_user }}/traefik/" |     project_src: "{{ traefik_install_path }}/traefik/" | ||||||
|   register: output |   register: output | ||||||
|   tags: service_start |   tags: service_start | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -8,28 +8,28 @@ networks: | ||||||
| services: | services: | ||||||
|   # Load Balancer / SSL / Web Server |   # Load Balancer / SSL / Web Server | ||||||
|   revproxy: |   revproxy: | ||||||
|     image: traefik:v2.2 |     image: traefik:v2.5 | ||||||
|     restart: always |     restart: unless-stopped | ||||||
|     networks: |     networks: | ||||||
|       - public |       - public | ||||||
|     ports: |     ports: | ||||||
| {% if traefik.expose_internally | default(False) %} | {% if traefik_expose_internally | default(False) %} | ||||||
|       - "8181:8080" |       - "8181:8080" | ||||||
| {% endif %} | {% endif %} | ||||||
|       - "80:80" |       - "80:80" | ||||||
|       - "443:443" |       - "443:443" | ||||||
| {% if traefik.additional_env_vars | default(False) %} | {% if traefik_additional_env_vars | default(False) %} | ||||||
|     environment: |     environment: | ||||||
| {% for item in traefik.additional_env_vars | dict2items %} | {% for item in traefik_additional_env_vars | dict2items %} | ||||||
|       - {{item.key}}={{item.value}} |       - {{item.key}}={{item.value}} | ||||||
| {% endfor %} | {% endfor %} | ||||||
| {% endif %} | {% endif %} | ||||||
|     volumes: |     volumes: | ||||||
|       - /var/run/docker.sock:/var/run/docker.sock |       - /var/run/docker.sock:/var/run/docker.sock | ||||||
|       - /home/{{ docker_user }}/traefik/traefik.toml:/traefik.toml |       - {{ traefik_install_path }}/traefik/traefik.toml:/traefik.toml | ||||||
|       - /home/{{ docker_user }}/traefik/acme.json:/acme.json |       - {{ traefik_install_path }}/traefik/acme.json:/acme.json | ||||||
|       - /home/{{ docker_user }}/traefik/rules:/rules |       - {{ traefik_install_path }}/traefik/rules:/rules | ||||||
| {% if traefik.expose_externally | default(False) %} | {% if traefik_expose_externally | default(False) %} | ||||||
|     labels: |     labels: | ||||||
|       - "traefik.enable=true" |       - "traefik.enable=true" | ||||||
|       - "traefik.docker.network=traefik" |       - "traefik.docker.network=traefik" | ||||||
|  |  | ||||||
|  | @ -26,29 +26,29 @@ defaultEntryPoints = ["web", "websecure"] | ||||||
|   directory = "/rules" |   directory = "/rules" | ||||||
|   watch = true |   watch = true | ||||||
| 
 | 
 | ||||||
| {% if traefik.enable_acme %} | {% if traefik_enable_acme %} | ||||||
| [certificatesResolvers.defaultresolver.acme] | [certificatesResolvers.defaultresolver.acme] | ||||||
| {% if traefik.use_acme_staging %} | {% if traefik_use_acme_staging %} | ||||||
|   caServer = "https://acme-staging-v02.api.letsencrypt.org/directory" |   caServer = "https://acme-staging-v02.api.letsencrypt.org/directory" | ||||||
| {% endif %} | {% endif %} | ||||||
|   email = "{{ letsencrypt_email }}" |   email = "{{ traefik_letsencrypt_email }}" | ||||||
|   storage = "acme.json" |   storage = "acme.json" | ||||||
|   [certificatesResolvers.defaultresolver.acme.httpChallenge] |   [certificatesResolvers.defaultresolver.acme.httpChallenge] | ||||||
|     entryPoint = "web" |     entryPoint = "web" | ||||||
| {% endif %} | {% endif %} | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| {% if traefik.extra_mapping | default(False) %} | {% if traefik_extra_mapping | default(False) %} | ||||||
| ### NOT WORKING YET! | ### NOT WORKING YET! | ||||||
| #[backends] | #[backends] | ||||||
| {% for service_name in traefik.extra_mapping %} | {% for service_name in traefik_extra_mapping %} | ||||||
| #[backends.{{ service_name }}_backend] | #[backends.{{ service_name }}_backend] | ||||||
| #    [backends.{{ service_name }}_backend.servers.server1] | #    [backends.{{ service_name }}_backend.servers.server1] | ||||||
| #    url = "{{ traefik.extra_mapping[service_name] }}" | #    url = "{{ traefik_extra_mapping[service_name] }}" | ||||||
| {% endfor %} | {% endfor %} | ||||||
| # | # | ||||||
| #[frontends] | #[frontends] | ||||||
| {% for service_name in traefik.extra_mapping %} | {% for service_name in traefik_extra_mapping %} | ||||||
| #  [frontends.{{ service_name }}_frontend] | #  [frontends.{{ service_name }}_frontend] | ||||||
| #  backend = "{{ service_name }}_backend" | #  backend = "{{ service_name }}_backend" | ||||||
| #  [frontends.{{ service_name }}_frontend.routes.test_1] | #  [frontends.{{ service_name }}_frontend.routes.test_1] | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue