├── .gitignore ├── LICENSE ├── README.md ├── Slides_english.pdf ├── Slides_german.pdf ├── acl └── README.md ├── checks ├── README.md ├── check_failed.sh ├── check_green.sh ├── consul.json └── start_consul.sh ├── dns ├── README.md ├── consul.json └── start_consul.sh ├── events_watches_locks ├── README.md ├── consul.json └── start_consul.sh ├── http_api ├── README.md ├── consul.json ├── service.json └── start_consul.sh ├── showcase ├── .gitignore ├── Vagrantfile ├── bin │ ├── fetch-dist.sh │ ├── readme.md │ ├── vag-get-base-image.sh │ └── vag-write-sshconfig.sh ├── exchange │ └── readme.md ├── puppet │ ├── manifests │ │ ├── consul.pp │ │ ├── ha.pp │ │ ├── ts1.pp │ │ ├── ts2.pp │ │ ├── ts3.pp │ │ └── ui.pp │ └── modules │ │ ├── consul-template │ │ ├── manifests │ │ │ ├── init.pp │ │ │ ├── install.pp │ │ │ └── service.pp │ │ └── templates │ │ │ └── etc │ │ │ ├── consul-template.conf │ │ │ └── init │ │ │ └── consul-template.conf │ │ ├── consul │ │ ├── files │ │ │ ├── 0.5.0 │ │ │ │ ├── index.html │ │ │ │ └── static │ │ │ │ │ ├── application.min.js │ │ │ │ │ ├── base.css │ │ │ │ │ ├── base.css.map │ │ │ │ │ ├── bootstrap.min.css │ │ │ │ │ ├── consul-logo.png │ │ │ │ │ ├── favicon.png │ │ │ │ │ └── loading-cylon-purple.svg │ │ │ └── 0.5.2 │ │ │ │ ├── index.html │ │ │ │ └── static │ │ │ │ ├── application.min.js │ │ │ │ ├── base.css │ │ │ │ ├── base.css.map │ │ │ │ ├── bootstrap.min.css │ │ │ │ ├── consul-logo.png │ │ │ │ ├── favicon.png │ │ │ │ └── loading-cylon-purple.svg │ │ ├── manifests │ │ │ ├── init.pp │ │ │ ├── install.pp │ │ │ └── service.pp │ │ └── templates │ │ │ └── etc │ │ │ ├── consul.conf │ │ │ ├── consul.d │ │ │ └── readme.md │ │ │ └── init │ │ │ └── consul.conf │ │ ├── eop │ │ └── manifests │ │ │ └── init.pp │ │ ├── haproxy │ │ ├── files │ │ │ └── etc │ │ │ │ ├── consul-template.d │ │ │ │ └── haproxy.cfg.ctmpl │ │ │ │ ├── default │ │ │ │ └── haproxy │ │ │ │ └── haproxy │ │ │ │ └── haproxy.cfg │ │ └── manifests │ │ │ ├── init.pp │ │ │ ├── install.pp │ │ │ └── service.pp │ │ ├── java7 │ │ └── manifests │ │ │ └── init.pp │ │ ├── networking │ │ └── manifests │ │ │ └── init.pp │ │ ├── timeservice │ │ ├── manifests │ │ │ ├── init.pp │ │ │ ├── install.pp │ │ │ └── service.pp │ │ └── templates │ │ │ └── etc │ │ │ ├── consul.d │ │ │ ├── check-ts-http-alive.json │ │ │ ├── readme.md │ │ │ └── service-ts.json │ │ │ └── init │ │ │ └── timeservice.conf │ │ └── update │ │ └── manifests │ │ └── init.pp ├── readme.adoc ├── readme.md ├── showcase-script.md ├── showcase.alias └── templates │ ├── all-datacenters.ctmpl │ ├── all-services-by-state.ctmpl │ ├── all-services-simple.ctmpl │ ├── all-services.ctmpl │ └── readme.md └── ui ├── index.html └── static ├── application.min.js ├── base.css ├── base.css.map ├── bootstrap.min.css ├── consul-logo.png ├── favicon.png └── loading-cylon-purple.svg /.gitignore: -------------------------------------------------------------------------------- 1 | *~ 2 | *.swp 3 | *.iml 4 | *.idea 5 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "{}" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright {yyyy} {name of copyright owner} 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | 203 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Consul examples 2 | 3 | This repository contains example setups for certain functionality of [consul](http://consul.io). 4 | 5 | ## Simple examples 6 | 7 | These examples focus on specific functionality. 8 | 9 | The examples are: 10 | 11 | * [Simple DNS Setup](dns/) 12 | * [Using the http-api](http_api/) 13 | * [Service Checks](checks/) 14 | * [Locks, Watches and Events](events_watches_locks/) 15 | 16 | ### General usage 17 | 18 | You will need a local installation of consul. 19 | 20 | To use the examples you have to checkout this repository, change into the directory of the example and then follow the instructions the README file of the respective example. 21 | 22 | ### Consul UI 23 | 24 | All examples are setup in a way, that consul UI is started too. Therefore the folder [ui](ui/) contains the official consul ui files. It is configured in all simple examples. 25 | 26 | Point your browser to [http://localhost:8500/ui](http://localhost:8500/ui) 27 | 28 | ## Complex showcase 29 | 30 | There is also a [complex showcase](showcase/) which demonstrates the combined usage of Consul, [Consul-Template](https://github.com/hashicorp/consul-template) and [HAProxy](http://www.haproxy.org) to enable Service Discovery. 31 | 32 | ## Presentation slides 33 | 34 | The slides of the presentation in german can also be found in this repository: 35 | 36 | * [German slides](Slides_german.pdf) -------------------------------------------------------------------------------- /Slides_english.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JoergM/consul-examples/0d6c2e6151b96fe967de62520eb86df608eb31a3/Slides_english.pdf -------------------------------------------------------------------------------- /Slides_german.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JoergM/consul-examples/0d6c2e6151b96fe967de62520eb86df608eb31a3/Slides_german.pdf -------------------------------------------------------------------------------- /acl/README.md: -------------------------------------------------------------------------------- 1 | TODO 2 | -------------------------------------------------------------------------------- /checks/README.md: -------------------------------------------------------------------------------- 1 | # Service Checks 2 | 3 | This example shows service checks based on scripts. Please take a look at consul.json to see how the services and checks are configured. 4 | 5 | ## Starting Consul 6 | 7 | There is a script that starts consul with the configuration in consul.json: 8 | 9 | ``` 10 | ./start_consul.sh 11 | ``` 12 | 13 | If you started the DNS example before, the script can not delete the content in /tmp/consul because it was run as root Please delete it manually using: 14 | 15 | ``` 16 | sudo rm -rf /tmp/consul 17 | ``` 18 | 19 | ## The Check-Scripts 20 | 21 | There are two services defined and each has one check-script associated. One script always returns good and one always failes. The failing script is shown below. 22 | 23 | ``` 24 | #!/bin/sh 25 | 26 | echo "This failed badly" 27 | exit 2 28 | ``` 29 | 30 | The conventions in consul are simple. a return value of 0 means no problems, 1 means warning and everything else is critical. 31 | 32 | ## Show checks in Consul-UI 33 | 34 | When you open [http://localhost:8500/ui](http://localhost:8500/ui) you will see both services. One of them will be failed, the other will be ok. 35 | 36 | If example_green is not ok, wait a few seconds and reload. The checks are configured to run every 15 seconds. 37 | 38 | ## Validating Checks via http-api 39 | 40 | Using the Http-API to find the status of checks for a service: 41 | 42 | ``` 43 | curl localhost:8500/v1/health/service/example_green 44 | ``` 45 | 46 | The same for the failing service: 47 | ``` 48 | curl localhost:8500/v1/health/service/example_failed 49 | ``` 50 | 51 | The results look like this: 52 | 53 | ``` 54 | [ 55 | { 56 | "Node": { 57 | "Node": "tatooine", 58 | "Address": "192.168.178.42" 59 | }, 60 | "Service": { 61 | "ID": "example_failed", 62 | "Service": "example_failed", 63 | "Tags": null, 64 | "Address": "127.0.0.1", 65 | "Port": 4567 66 | }, 67 | "Checks": [ 68 | { 69 | "Node": "tatooine", 70 | "CheckID": "service:example_failed", 71 | "Name": "Service 'example_failed' check", 72 | "Status": "critical", 73 | "Notes": "", 74 | "Output": "", 75 | "ServiceID": "example_failed", 76 | "ServiceName": "example_failed" 77 | }, 78 | { 79 | "Node": "tatooine", 80 | "CheckID": "serfHealth", 81 | "Name": "Serf Health Status", 82 | "Status": "passing", 83 | "Notes": "", 84 | "Output": "Agent alive and reachable", 85 | "ServiceID": "", 86 | "ServiceName": "" 87 | } 88 | ] 89 | } 90 | ] 91 | ``` 92 | 93 | Even if there is only one check defined there is a second check. This is based on the health of the node itself. It failes when the node is not reachable. 94 | 95 | ## Overview of multiple checks 96 | 97 | The Http-API also allows to list all service-checks in a certain state. To see all services in critical state use: 98 | 99 | ``` 100 | curl localhost:8500/v1/health/state/critical 101 | ``` 102 | 103 | In our example the result is: 104 | 105 | ``` 106 | [ 107 | { 108 | "Node": "tatooine", 109 | "CheckID": "service:example_failed", 110 | "Name": "Service 'example_failed' check", 111 | "Status": "critical", 112 | "Notes": "", 113 | "Output": "", 114 | "ServiceID": "example_failed", 115 | "ServiceName": "example_failed" 116 | } 117 | ] 118 | ``` 119 | 120 | This is pretty useful for monitoring the consul network without knowledge of a specific service-name. -------------------------------------------------------------------------------- /checks/check_failed.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | echo "This failed badly" 4 | exit 2 5 | -------------------------------------------------------------------------------- /checks/check_green.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | echo "Everything is awesome" 4 | exit 0 5 | -------------------------------------------------------------------------------- /checks/consul.json: -------------------------------------------------------------------------------- 1 | { 2 | "data_dir": "/tmp/consul", 3 | "server": true, 4 | "ui_dir": "../ui", 5 | "bootstrap_expect":1, 6 | "services": [ 7 | { 8 | "name": "example_green", 9 | "address":"127.0.0.1", 10 | "port":3456, 11 | "checks": [ 12 | { 13 | "name":"Check that is always green", 14 | "script": "./check_green.sh", 15 | "interval": "15s" 16 | } 17 | ] 18 | }, 19 | { 20 | "name": "example_failed", 21 | "address":"127.0.0.1", 22 | "port":4567, 23 | "checks": [ 24 | { 25 | "name":"Check that always fails", 26 | "script": "./check_failed.sh", 27 | "interval": "15s" 28 | } 29 | ] 30 | } 31 | ] 32 | } 33 | -------------------------------------------------------------------------------- /checks/start_consul.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | rm -rf /tmp/consul 4 | consul agent -config-file consul.json 5 | -------------------------------------------------------------------------------- /dns/README.md: -------------------------------------------------------------------------------- 1 | # Using Consul DNS in a simple setup 2 | 3 | This setup will start consul as DNS server which will forward all DNS requests that can't be answered 4 | to the Google DNS Server 8.8.8.8 5 | 6 | ## Starting Consul 7 | 8 | There is a config file located in this Directory and a script that starts consul with the correct parameters. 9 | So simple type: 10 | 11 | ``` 12 | ./start_consul.sh 13 | ``` 14 | 15 | You will be asked for your password. This is because consul is started using sudo. This is necessary to start DNS on port 53. 16 | 17 | ## Query DNS 18 | 19 | You can test this setup using dig: 20 | 21 | ``` 22 | dig @127.0.0.1 $(hostname).node.consul 23 | ``` 24 | 25 | Lookup of the consul service itself: 26 | 27 | ``` 28 | dig @127.0.0.1 consul.service.consul 29 | ``` 30 | 31 | Lookup including SRV Record (for Port information) 32 | 33 | ``` 34 | dig @127.0.0.1 consul.service.consul SRV 35 | ``` 36 | 37 | ## Set as DNS Server 38 | 39 | WARNING: Please change your DNS Server only if you know how to revert this :) 40 | 41 | Simply set your DNS Server to **127.0.0.1** 42 | 43 | Know every program should be able to resolve addresses within the *consul* Top Level Domain. -------------------------------------------------------------------------------- /dns/consul.json: -------------------------------------------------------------------------------- 1 | { 2 | "data_dir": "/tmp/consul", 3 | "server": true, 4 | "ui_dir": "../ui", 5 | "bootstrap_expect":1, 6 | "ports": { 7 | "dns":53 8 | }, 9 | "recursors":[ 10 | "8.8.8.8" 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /dns/start_consul.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | sudo rm -rf /tmp/consul 4 | sudo consul agent -config-file consul.json 5 | -------------------------------------------------------------------------------- /events_watches_locks/README.md: -------------------------------------------------------------------------------- 1 | ## Purpose 2 | 3 | Locks, Events and Watches are mechanisims provided by consul to simplify orchestration of services. 4 | 5 | The following examples show their usage with a focus on command line. This is especially useful when creating shell-scripts for deployments and other regular tasks. 6 | 7 | ## Starting Consul 8 | 9 | The following script cleans potential left overs and starts consul with the configuration file. 10 | 11 | ``` 12 | ./start_consul.sh 13 | ``` 14 | 15 | ## Locks 16 | 17 | Consul provides this mechanism to allow simple distributed locks across all connected servers. 18 | 19 | For the following example you need 2 shell windows. 20 | 21 | In the first session enter: 22 | 23 | ``` 24 | consul lock LockA sleep 15 25 | ``` 26 | 27 | This simulates a long running command. 28 | 29 | Now in the second shell enter 30 | 31 | ``` 32 | consul lock LockA echo released 33 | ``` 34 | 35 | You will see that the second command blocks until the first command is finished. Then it will run and print "released". This would also work across multiple machines which makes it powerful. 36 | 37 | Using the option -n you can allow more than one lock holder. The example shows a maximum number of 5 holders 38 | 39 | ``` 40 | consul lock -n 5 41 | ``` 42 | 43 | ## Watches 44 | 45 | [Watches](https://consul.io/docs/agent/watches.html) allow to react to different types of changes in the consul data. The following example shows watching a key-value entry. 46 | 47 | First the entry has to be created: 48 | 49 | ``` 50 | curl -X PUT -d @- localhost:8500/v1/kv/application/online <<< true 51 | ``` 52 | 53 | Alternatively you can use the UI at [http://localhost:8500/ui](http://localhost:8500/ui) to create a key named "application/online" and give it a value "true" 54 | 55 | Now you need to open a second shell window again to see the effect of the watch. In the first window enter: 56 | 57 | ``` 58 | consul watch -type keyprefix application/online cat 59 | ``` 60 | 61 | Each time the value of the key changes Consul will call the command (cat in this case) and provides all information about the event as JSON. 62 | 63 | Change the value via UI or in another shell window via: 64 | 65 | ``` 66 | curl -X PUT -d @- localhost:8500/v1/kv/application/online <<< false 67 | ``` 68 | 69 | You will see a line with JSON like this: 70 | 71 | ``` 72 | [{"Key":"application/online","CreateIndex":5,"ModifyIndex":9,"LockIndex":0,"Flags":0,"Value":"ZmFsc2U=","Session":""}] 73 | ``` 74 | 75 | Values are always base64 encoded. 76 | 77 | The consul watch command will keep watching until you interrupt it with a Ctrl-C. 78 | 79 | ## Events 80 | 81 | Watches can also be used to listen for custom events. To create such a custom event You can use the ["event" command](https://consul.io/docs/commands/event.html). 82 | 83 | Use the following to listen for a custom event: 84 | 85 | ``` 86 | consul watch -type event -name exampleEvent cat 87 | ``` 88 | 89 | Now in another shell window enter: 90 | 91 | ``` 92 | consul event -name exampleEvent "Event Payload" 93 | ``` 94 | 95 | The watch will now output something like: 96 | 97 | ``` 98 | [{ 99 | "ID":"0c0fddad-bfe7-2c4d-2ba8-f95aa4e72137", 100 | "Name":"exampleEvent", 101 | "Payload":"RXZlbnQgUGF5bG9hZA==", 102 | "NodeFilter":"", 103 | "ServiceFilter":"", 104 | "TagFilter":"", 105 | "Version":1, 106 | "LTime":2 107 | }] 108 | ``` 109 | 110 | The content of the field 'Payload' is Base64 encoded. Your program would have to decode it. In a shell script you could for example use 'base64 --decode'. The Base64 encoding allows to send binary payload as well. 111 | 112 | -------------------------------------------------------------------------------- /events_watches_locks/consul.json: -------------------------------------------------------------------------------- 1 | { 2 | "data_dir": "/tmp/consul", 3 | "server": true, 4 | "ui_dir": "../ui", 5 | "bootstrap_expect":1 6 | } 7 | -------------------------------------------------------------------------------- /events_watches_locks/start_consul.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | rm -rf /tmp/consul 4 | consul agent -config-file consul.json 5 | -------------------------------------------------------------------------------- /http_api/README.md: -------------------------------------------------------------------------------- 1 | This example shows some usages of the HTTP API 2 | 3 | ## Starting Consul 4 | 5 | The following script cleans potential left overs and starts consul with the configuration file. 6 | 7 | ``` 8 | ./start_consul.sh 9 | ``` 10 | 11 | ## Find Services and Service Nodes 12 | 13 | There is one Service registered via configuration file. This can be retrieved by: 14 | 15 | ``` 16 | curl localhost:8500/v1/catalog/service/example 17 | ``` 18 | 19 | The result is json containing all relevant info for this service. 20 | 21 | All services can be retrieved by: 22 | 23 | ``` 24 | curl localhost:8500/v1/catalog/services 25 | ``` 26 | 27 | ## Register a Service 28 | 29 | There are two APIs that can be used to register services. The catalog API we already used for retrieving service information. The alternative is to use the Agent API. This API is used for communication with your local agent. 30 | 31 | Registering a service using the Agent API: 32 | 33 | ``` 34 | curl -X PUT -d @service.json localhost:8500/v1/agent/service/register 35 | ``` 36 | 37 | The file service.json contains the service definition like this: 38 | ``` 39 | { 40 | "ID": "example2", 41 | "Name": "example2", 42 | "Tags": [ 43 | "specific", 44 | "v1" 45 | ], 46 | "Address": "127.0.0.1", 47 | "Port": 8000, 48 | } 49 | ``` 50 | 51 | You can check whether this was succesful by using the Agent API again: 52 | 53 | ``` 54 | curl localhost:8500/v1/agent/services 55 | ``` 56 | 57 | You can also see the service, when opening the UI at [http://localhost:8500/ui](http://localhost:8500/ui) 58 | 59 | ## Key-Value Store 60 | 61 | Store a new Value: 62 | 63 | ``` 64 | curl -X PUT -d @- localhost:8500/v1/kv/example <<< FooValue 65 | ``` 66 | 67 | Reading Values is a bit more complicated because they are stored base64 encoded. A simple query looks like this 68 | 69 | ``` 70 | curl -s localhost:8500/v1/kv/example 71 | ``` 72 | 73 | The result looks like this: 74 | 75 | ``` 76 | [ 77 | { 78 | "CreateIndex": 97, 79 | "ModifyIndex": 111, 80 | "LockIndex": 0, 81 | "Key": "example", 82 | "Flags": 0, 83 | "Value": "Rm9vVmFsdWU=" 84 | } 85 | ] 86 | ``` 87 | 88 | The Value is base64 encoded which allows to store binary values. 89 | 90 | If you Simply want the raw value for a key use the _?raw_ parameter. 91 | 92 | ``` 93 | curl -s localhost:8500/v1/kv/example?raw 94 | ``` 95 | 96 | In this example you would get _FooValue_. 97 | 98 | You can also find the registred Key/Value Pair using the UI at [http://localhost:8500/ui/#/dc1/kv/](http://localhost:8500/ui/#/dc1/kv/) 99 | -------------------------------------------------------------------------------- /http_api/consul.json: -------------------------------------------------------------------------------- 1 | { 2 | "data_dir": "/tmp/consul", 3 | "server": true, 4 | "ui_dir": "../ui", 5 | "bootstrap_expect":1, 6 | "service": { 7 | "name": "example", 8 | "tags": ["special"], 9 | "address":"127.0.0.1", 10 | "port":3456 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /http_api/service.json: -------------------------------------------------------------------------------- 1 | { 2 | "ID": "example2", 3 | "Name": "example2", 4 | "Tags": [ 5 | "specific", 6 | "v1" 7 | ], 8 | "Address": "127.0.0.1", 9 | "Port": 8000 10 | } 11 | -------------------------------------------------------------------------------- /http_api/start_consul.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | rm -rf /tmp/consul 4 | consul agent -config-file consul.json 5 | -------------------------------------------------------------------------------- /showcase/.gitignore: -------------------------------------------------------------------------------- 1 | .vagrant 2 | ssh-showcase.config 3 | exchange/* 4 | !exchange/readme.md 5 | -------------------------------------------------------------------------------- /showcase/Vagrantfile: -------------------------------------------------------------------------------- 1 | # -*- mode: ruby -*- 2 | # vi: set ft=ruby : 3 | 4 | # Vagrantfile API/syntax version. Don't touch unless you know what you're doing! 5 | VAGRANTFILE_API_VERSION = "2" 6 | 7 | Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| 8 | 9 | # 10 | # TimeService ONE 11 | # 12 | config.vm.define :timeservice1 do |timeservice1| 13 | timeservice1.vm.box = "hashicorp/precise32" 14 | timeservice1.vm.hostname = 'timeservice-1-serv.localhost.localdomain' 15 | timeservice1.vm.network :private_network, ip: "192.168.60.60" 16 | 17 | timeservice1.vm.provider "virtualbox" do |vb| 18 | vb.memory = 512 19 | end 20 | 21 | timeservice1.vm.synced_folder "exchange", "/exchange" 22 | 23 | timeservice1.vm.provision :puppet do |puppet| 24 | puppet.manifests_path = "puppet/manifests/" 25 | puppet.manifest_file = "ts1.pp" 26 | puppet.module_path = "puppet/modules" 27 | end 28 | end 29 | 30 | # 31 | # TimeService two 32 | # 33 | config.vm.define :timeservice2 do |timeservice2| 34 | timeservice2.vm.box = "hashicorp/precise32" 35 | timeservice2.vm.hostname = 'timeservice-2-serv.localhost.localdomain' 36 | timeservice2.vm.network :private_network, ip: "192.168.60.70" 37 | 38 | timeservice2.vm.provider "virtualbox" do |vb| 39 | vb.memory = 512 40 | end 41 | 42 | timeservice2.vm.synced_folder "exchange", "/exchange" 43 | 44 | timeservice2.vm.provision :puppet do |puppet| 45 | puppet.manifests_path = "puppet/manifests/" 46 | puppet.manifest_file = "ts2.pp" 47 | puppet.module_path = "puppet/modules" 48 | end 49 | end 50 | 51 | # 52 | # TimeService three 53 | # 54 | config.vm.define :timeservice3 do |timeservice3| 55 | timeservice3.vm.box = "hashicorp/precise32" 56 | timeservice3.vm.hostname = 'timeservice-3-serv.localhost.localdomain' 57 | timeservice3.vm.network :private_network, ip: "192.168.60.100" 58 | 59 | timeservice3.vm.provider "virtualbox" do |vb| 60 | vb.memory = 512 61 | end 62 | 63 | timeservice3.vm.synced_folder "exchange", "/exchange" 64 | 65 | timeservice3.vm.provision :puppet do |puppet| 66 | puppet.manifests_path = "puppet/manifests/" 67 | puppet.manifest_file = "ts3.pp" 68 | puppet.module_path = "puppet/modules" 69 | end 70 | end 71 | 72 | # 73 | # HA Proxy 74 | # 75 | config.vm.define :haproxy do |haproxy| 76 | haproxy.vm.box = "hashicorp/precise32" 77 | haproxy.vm.hostname = "haproxy-serv.localhost.localdomain" 78 | haproxy.vm.network :private_network, ip: "192.168.60.50" 79 | haproxy.vm.network :forwarded_port, guest: 80, host: 10080, auto_correct: false 80 | 81 | haproxy.vm.provider "virtualbox" do |vb| 82 | vb.memory = 256 83 | end 84 | 85 | haproxy.vm.synced_folder "exchange", "/exchange" 86 | haproxy.vm.synced_folder "templates", "/templates" 87 | 88 | haproxy.vm.provision :puppet do |puppet| 89 | puppet.manifests_path = "puppet/manifests/" 90 | puppet.manifest_file = "ha.pp" 91 | puppet.module_path = "puppet/modules" 92 | end 93 | end 94 | 95 | # 96 | # Consul Web UI 97 | config.vm.define :webui do |webui| 98 | webui.vm.box = "hashicorp/precise32" 99 | webui.vm.hostname = "webui-serv.localhost.localdomain" 100 | webui.vm.network :private_network, ip: "192.168.60.90" 101 | webui.vm.network :forwarded_port, guest: 8500, host: 8500, auto_correct: false 102 | 103 | webui.vm.provider "virtualbox" do |vb| 104 | vb.memory = 1024 105 | end 106 | 107 | webui.vm.synced_folder "exchange", "/exchange" 108 | 109 | webui.vm.provision :puppet do |puppet| 110 | puppet.manifests_path = "puppet/manifests/" 111 | puppet.manifest_file = "ui.pp" 112 | puppet.module_path = "puppet/modules" 113 | end 114 | end 115 | 116 | # 117 | # 118 | # Consul it self 119 | # 120 | config.vm.define :consul do |consul| 121 | consul.vm.box = "hashicorp/precise32" 122 | consul.vm.hostname = "consul-serv.localhost.localdomain" 123 | consul.vm.network :private_network, ip: "192.168.60.80" 124 | 125 | consul.vm.provider "virtualbox" do |vb| 126 | vb.memory = 1024 127 | end 128 | 129 | consul.vm.synced_folder "exchange", "/exchange" 130 | 131 | consul.vm.provision :puppet do |puppet| 132 | puppet.manifests_path = "puppet/manifests/" 133 | puppet.manifest_file = "consul.pp" 134 | puppet.module_path = "puppet/modules" 135 | end 136 | end 137 | end 138 | 139 | 140 | 141 | # end of file ;-) 142 | 143 | -------------------------------------------------------------------------------- /showcase/bin/fetch-dist.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | if [ ! -d exchange ]; then 4 | echo "Must be called from the showcase directory!"; 5 | exit 1; 6 | fi 7 | 8 | if [ -e exchange/consul.zip ]; then 9 | echo "There is an existing Consul distribution below exchange"; 10 | echo "Will not fetch it again" 11 | else 12 | wget https://dl.bintray.com/mitchellh/consul/0.5.2_linux_386.zip -O exchange/consul.zip 13 | fi 14 | 15 | 16 | if [ -e exchange/consul-template.zip ]; then 17 | echo "There is an existing Consul Template distribution below exchange"; 18 | echo "Will not fetch it again"; 19 | else 20 | wget https://github.com/hashicorp/consul-template/releases/download/v0.9.0/consul-template_0.9.0_linux_386.tar.gz -O exchange/consul-template.tar.gz 21 | fi 22 | 23 | ( cd exchange ; unzip -u consul.zip ) 24 | ( cd exchange ; tar -zxvf consul-template.tar.gz ) -------------------------------------------------------------------------------- /showcase/bin/readme.md: -------------------------------------------------------------------------------- 1 | # Commands for the Consul showcase 2 | 3 | This directory contains various Shell scripts 4 | required for creating and running the 5 | showcase. 6 | 7 | Mostly these are one-liners for the lazy ones. -------------------------------------------------------------------------------- /showcase/bin/vag-get-base-image.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | vagrant box add hashicorp/precise32 4 | -------------------------------------------------------------------------------- /showcase/bin/vag-write-sshconfig.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ( vagrant ssh-config > ssh-showcase.config ) 4 | 5 | echo "ssh-showcase.config written" 6 | echo "SSH configuration for showcase written..." 7 | -------------------------------------------------------------------------------- /showcase/exchange/readme.md: -------------------------------------------------------------------------------- 1 | # Temporary content 2 | 3 | Directory to exchange stuff between host and VMs. 4 | This MarkDown file is only required to force Git 5 | to keep this directory. 6 | -------------------------------------------------------------------------------- /showcase/puppet/manifests/consul.pp: -------------------------------------------------------------------------------- 1 | # 2 | # Puppet Manifest for the Consul server 3 | # 4 | 5 | class { 'consul': 6 | serverMode => true, 7 | bindIp => '192.168.60.80' 8 | } 9 | 10 | include consul 11 | include update 12 | include networking 13 | include eop 14 | 15 | Class[update] -> Class[networking] 16 | -> Class[consul] 17 | -> Class[eop] 18 | 19 | -------------------------------------------------------------------------------- /showcase/puppet/manifests/ha.pp: -------------------------------------------------------------------------------- 1 | # 2 | # Puppet Manifest for the HA proxy instance 3 | # 4 | 5 | class { 'consul': 6 | bindIp => '192.168.60.50' 7 | } 8 | 9 | class { 'consul-template': 10 | templates => { 11 | template1 => { 12 | source => '/etc/consul-template.d/haproxy.cfg.ctmpl', 13 | destination => '/etc/haproxy/haproxy.cfg', 14 | command => 'sudo service haproxy restart' 15 | } 16 | }, 17 | } 18 | 19 | include consul 20 | include consul-template 21 | include eop 22 | include haproxy 23 | include networking 24 | include update 25 | 26 | Class[update] -> Class[networking] 27 | -> Class[consul] 28 | -> Class[consul-template] 29 | -> Class[haproxy] 30 | -> Class[eop] 31 | 32 | 33 | -------------------------------------------------------------------------------- /showcase/puppet/manifests/ts1.pp: -------------------------------------------------------------------------------- 1 | # 2 | # Puppet Manifest for the timestamp service I 3 | # 4 | 5 | class { 'consul': 6 | bindIp => '192.168.60.60', 7 | } 8 | 9 | class { 'timeservice': 10 | nodeID => 'ts1' 11 | } 12 | 13 | 14 | include consul 15 | include eop 16 | include java7 17 | include networking 18 | include timeservice 19 | include update 20 | 21 | 22 | Class[update] -> Class[java7] 23 | -> Class[networking] 24 | -> Class[timeservice] 25 | -> Class[consul] 26 | -> Class[eop] 27 | -------------------------------------------------------------------------------- /showcase/puppet/manifests/ts2.pp: -------------------------------------------------------------------------------- 1 | # 2 | # Puppet Manifest for the timestamp service II 3 | # 4 | 5 | class { 'consul': 6 | bindIp => '192.168.60.70', 7 | } 8 | 9 | class { 'timeservice': 10 | nodeID => 'ts2' 11 | } 12 | 13 | 14 | include consul 15 | include eop 16 | include java7 17 | include networking 18 | include update 19 | include timeservice 20 | 21 | 22 | Class[update] -> Class[java7] 23 | -> Class[networking] 24 | -> Class[timeservice] 25 | -> Class[consul] 26 | -> Class[eop] 27 | 28 | -------------------------------------------------------------------------------- /showcase/puppet/manifests/ts3.pp: -------------------------------------------------------------------------------- 1 | # 2 | # Puppet Manifest for the timestamp service II 3 | # 4 | 5 | class { 'consul': 6 | bindIp => '192.168.60.100', 7 | } 8 | 9 | class { 'timeservice': 10 | nodeID => 'ts3' 11 | } 12 | 13 | 14 | include consul 15 | include eop 16 | include java7 17 | include networking 18 | include update 19 | include timeservice 20 | 21 | 22 | Class[update] -> Class[java7] 23 | -> Class[networking] 24 | -> Class[timeservice] 25 | -> Class[consul] 26 | -> Class[eop] 27 | 28 | -------------------------------------------------------------------------------- /showcase/puppet/manifests/ui.pp: -------------------------------------------------------------------------------- 1 | # 2 | # Puppet Manifest for the Consul Web UI 3 | # 4 | 5 | class { 'consul': 6 | serverMode => false, 7 | servUI => true, 8 | bindIp => '192.168.60.90' 9 | } 10 | 11 | include consul 12 | include update 13 | include networking 14 | include eop 15 | 16 | Class[update] -> Class[networking] 17 | -> Class[consul] 18 | -> Class[eop] 19 | 20 | -------------------------------------------------------------------------------- /showcase/puppet/modules/consul-template/manifests/init.pp: -------------------------------------------------------------------------------- 1 | class consul-template($templates) { 2 | 3 | include 'consul-template::install' 4 | include 'consul-template::service' 5 | 6 | Class[consul-template::install] -> Class[consul-template::service] 7 | } -------------------------------------------------------------------------------- /showcase/puppet/modules/consul-template/manifests/install.pp: -------------------------------------------------------------------------------- 1 | class consul-template::install { 2 | exec { 'Installation of Consul Template': 3 | command => '/bin/cp -n /exchange/consul-template_0.9.0_linux_386/consul-template /usr/local/sbin', 4 | } -> 5 | 6 | exec { 'Make Consul Template executable': 7 | command => '/bin/chmod 755 /usr/local/sbin/consul-template' 8 | } -> 9 | 10 | 11 | # We need a user account for Consul 12 | 13 | # user { 'consul': # creates also a group for Consul 14 | # ensure => present, 15 | # groups => ['root'] 16 | # } -> 17 | 18 | # file { ['/var/consul', '/var/run/consul/']: 19 | # ensure => 'directory', 20 | # owner => 'consul', 21 | # group => 'consul', 22 | # mode => '775', 23 | # } -> 24 | 25 | file { '/etc/consul-template.d': 26 | ensure => 'directory', 27 | owner => 'root', 28 | group => 'root', 29 | mode => '755', 30 | } -> 31 | 32 | file { '/etc/consul-template.conf': 33 | ensure => 'present', 34 | owner => 'root', 35 | group => 'root', 36 | mode => '755', 37 | content => template('consul-template/etc/consul-template.conf'), 38 | } -> 39 | 40 | file { '/etc/init/consul-template.conf': 41 | ensure => 'present', 42 | owner => 'root', 43 | group => 'root', 44 | mode => '644', 45 | content => template('consul-template/etc/init/consul-template.conf'), 46 | } 47 | 48 | } -------------------------------------------------------------------------------- /showcase/puppet/modules/consul-template/manifests/service.pp: -------------------------------------------------------------------------------- 1 | class consul-template::service { 2 | service { 'consul-template': 3 | ensure => 'running', 4 | enable => true, 5 | hasstatus => true, 6 | hasrestart => true, 7 | provider => 'upstart' 8 | } 9 | } -------------------------------------------------------------------------------- /showcase/puppet/modules/consul-template/templates/etc/consul-template.conf: -------------------------------------------------------------------------------- 1 | # consul = "localhost:8600" 2 | 3 | log_level = "debug" 4 | 5 | syslog { 6 | enabled = true 7 | } 8 | 9 | <% templates.each_pair do |key, value| %> 10 | template { 11 | source = "<%= value['source'] %>" 12 | destination = "<%= value['destination'] %>" 13 | command = "<%= value['command'] %>" 14 | } 15 | <% end %> 16 | 17 | -------------------------------------------------------------------------------- /showcase/puppet/modules/consul-template/templates/etc/init/consul-template.conf: -------------------------------------------------------------------------------- 1 | description "Consul agent process" 2 | 3 | start on runlevel [2345] 4 | stop on runlevel [!12345] 5 | 6 | respawn 7 | 8 | setuid consul 9 | setgid consul 10 | 11 | script 12 | exec /usr/local/sbin/consul-template \ 13 | -config=/etc/consul-template.conf 14 | 15 | end script 16 | 17 | -------------------------------------------------------------------------------- /showcase/puppet/modules/consul/files/0.5.0/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Consul by HashiCorp 8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 | 22 |
23 |
24 | 25 | 31 | 32 | 35 | 36 | 51 | 52 | 69 | 70 | 81 | 82 | 92 | 93 | 125 | 126 | 170 | 171 | 242 | 243 | 319 | 320 | 330 | 331 | 393 | 394 | 444 | 445 | 502 | 503 | 586 | 587 | 655 | 656 | 704 | 705 | 723 | 724 | 741 | 742 | 743 | 747 | 748 | 749 | 750 | 751 | -------------------------------------------------------------------------------- /showcase/puppet/modules/consul/files/0.5.0/static/base.css.map: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "mappings": "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", 4 | "sources": ["../styles/_type.scss","../styles/_variables.scss","../styles/_mixins.scss","../styles/_panels.scss","../styles/_nav.scss","../styles/_buttons.scss","../styles/_lists.scss","../styles/_forms.scss","../styles/_notifications.scss","../styles/base.scss"], 5 | "names": [], 6 | "file": "base.css" 7 | } 8 | -------------------------------------------------------------------------------- /showcase/puppet/modules/consul/files/0.5.0/static/consul-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JoergM/consul-examples/0d6c2e6151b96fe967de62520eb86df608eb31a3/showcase/puppet/modules/consul/files/0.5.0/static/consul-logo.png -------------------------------------------------------------------------------- /showcase/puppet/modules/consul/files/0.5.0/static/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JoergM/consul-examples/0d6c2e6151b96fe967de62520eb86df608eb31a3/showcase/puppet/modules/consul/files/0.5.0/static/favicon.png -------------------------------------------------------------------------------- /showcase/puppet/modules/consul/files/0.5.0/static/loading-cylon-purple.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /showcase/puppet/modules/consul/files/0.5.2/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Consul by HashiCorp 8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 | 22 |
23 |
24 | 25 | 31 | 32 | 35 | 36 | 51 | 52 | 69 | 70 | 81 | 82 | 92 | 93 | 125 | 126 | 170 | 171 | 242 | 243 | 319 | 320 | 330 | 331 | 393 | 394 | 444 | 445 | 502 | 503 | 586 | 587 | 655 | 656 | 704 | 705 | 723 | 724 | 741 | 742 | 743 | 747 | 748 | 749 | 750 | 751 | -------------------------------------------------------------------------------- /showcase/puppet/modules/consul/files/0.5.2/static/base.css.map: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "mappings": "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", 4 | "sources": ["../styles/_type.scss","../styles/_variables.scss","../styles/_mixins.scss","../styles/_panels.scss","../styles/_nav.scss","../styles/_buttons.scss","../styles/_lists.scss","../styles/_forms.scss","../styles/_notifications.scss","../styles/base.scss"], 5 | "names": [], 6 | "file": "base.css" 7 | } 8 | -------------------------------------------------------------------------------- /showcase/puppet/modules/consul/files/0.5.2/static/consul-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JoergM/consul-examples/0d6c2e6151b96fe967de62520eb86df608eb31a3/showcase/puppet/modules/consul/files/0.5.2/static/consul-logo.png -------------------------------------------------------------------------------- /showcase/puppet/modules/consul/files/0.5.2/static/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JoergM/consul-examples/0d6c2e6151b96fe967de62520eb86df608eb31a3/showcase/puppet/modules/consul/files/0.5.2/static/favicon.png -------------------------------------------------------------------------------- /showcase/puppet/modules/consul/files/0.5.2/static/loading-cylon-purple.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /showcase/puppet/modules/consul/manifests/init.pp: -------------------------------------------------------------------------------- 1 | class consul ($serverMode = false, 2 | $servUI = false, 3 | $bindIp) { 4 | 5 | include 'consul::install' 6 | include 'consul::service' 7 | 8 | Class[consul::install] -> Class[consul::service] 9 | } -------------------------------------------------------------------------------- /showcase/puppet/modules/consul/manifests/install.pp: -------------------------------------------------------------------------------- 1 | class consul::install { 2 | exec { 'Installation of Consul': 3 | command => '/bin/cp -n /exchange/consul /usr/local/sbin', 4 | } -> 5 | 6 | exec { 'Make Consul executable': 7 | command => '/bin/chmod 755 /usr/local/sbin/consul' 8 | } -> 9 | 10 | file { '/usr/local/share/consul/': 11 | ensure => directory, 12 | } -> 13 | 14 | file { '/usr/local/share/consul/ui/': 15 | ensure => directory, 16 | sourceselect => all, 17 | recurse => true, 18 | source => 'puppet:///modules/consul/0.5.2' 19 | } -> 20 | 21 | 22 | # We need a user account for Consul 23 | 24 | user { 'consul': # creates also a group for Consul 25 | ensure => present, 26 | groups => ['root', 'sudo', 'admin'] 27 | } -> 28 | 29 | file { ['/var/consul', '/var/run/consul/']: 30 | ensure => 'directory', 31 | owner => 'consul', 32 | group => 'consul', 33 | mode => '775', 34 | } -> 35 | 36 | file { '/etc/consul.d': 37 | ensure => 'directory', 38 | owner => 'root', 39 | group => 'root', 40 | mode => '755', 41 | } -> 42 | 43 | file { '/etc/consul.conf': 44 | ensure => 'present', 45 | owner => 'root', 46 | group => 'root', 47 | mode => '755', 48 | content => template('consul/etc/consul.conf'), 49 | } -> 50 | 51 | file { '/etc/init/consul.conf': 52 | ensure => 'present', 53 | owner => 'root', 54 | group => 'root', 55 | mode => '644', 56 | content => template('consul/etc/init/consul.conf'), 57 | } 58 | 59 | 60 | } -------------------------------------------------------------------------------- /showcase/puppet/modules/consul/manifests/service.pp: -------------------------------------------------------------------------------- 1 | class consul::service { 2 | service { 'consul': 3 | ensure => 'running', 4 | enable => true, 5 | hasstatus => true, 6 | hasrestart => true, 7 | provider => 'upstart', 8 | restart => 'consul reload' 9 | 10 | } 11 | } -------------------------------------------------------------------------------- /showcase/puppet/modules/consul/templates/etc/consul.conf: -------------------------------------------------------------------------------- 1 | { 2 | "datacenter": "sc", 3 | "data_dir": "/var/consul", 4 | 5 | <% if @serverMode == true %> 6 | "bootstrap_expect": 1, 7 | <% else %> 8 | "start_join" : ["192.168.60.80"], 9 | "retry_join" : ["192.168.60.80"], 10 | "rejoin_after_leave": true, 11 | <% end %> 12 | 13 | <% if @servUI == true %> 14 | "ui_dir": "/usr/local/share/consul/ui", 15 | <% end %> 16 | 17 | "server": <%= @serverMode %>, 18 | "log_level": "INFO", 19 | "enable_syslog": true, 20 | "log_level": "INFO", 21 | "bind_addr": "<%= @bindIp %>", 22 | 23 | "addresses": { 24 | "dns": "0.0.0.0", 25 | "http": "0.0.0.0", 26 | "https": "0.0.0.0", 27 | "rpc": "0.0.0.0" 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /showcase/puppet/modules/consul/templates/etc/consul.d/readme.md: -------------------------------------------------------------------------------- 1 | Consul configuration files if present. -------------------------------------------------------------------------------- /showcase/puppet/modules/consul/templates/etc/init/consul.conf: -------------------------------------------------------------------------------- 1 | description "Consul agent process" 2 | 3 | start on runlevel [2345] 4 | stop on runlevel [!12345] 5 | 6 | respawn 7 | 8 | setuid consul 9 | setgid consul 10 | 11 | 12 | script 13 | 14 | exec /usr/local/sbin/consul agent \ 15 | -config-dir /etc/consul.d/ \ 16 | -config-file=/etc/consul.conf 17 | 18 | end script 19 | 20 | -------------------------------------------------------------------------------- /showcase/puppet/modules/eop/manifests/init.pp: -------------------------------------------------------------------------------- 1 | class eop { 2 | file { '/puppet-executed': ensure => present, content => "eop", mode => 0444} 3 | 4 | } 5 | -------------------------------------------------------------------------------- /showcase/puppet/modules/haproxy/files/etc/consul-template.d/haproxy.cfg.ctmpl: -------------------------------------------------------------------------------- 1 | # 2 | # Generated by Consul Template! 3 | # 4 | 5 | global 6 | log /dev/log local0 7 | maxconn 4096 8 | user haproxy 9 | group haproxy 10 | daemon 11 | 12 | defaults 13 | log global 14 | mode http 15 | option httplog 16 | option dontlognull 17 | retries 3 18 | option redispatch 19 | maxconn 2000 20 | contimeout 5000 21 | clitimeout 50000 22 | srvtimeout 50000 23 | 24 | # We need at least one listen section 25 | 26 | listen ts-service 0.0.0.0:80 27 | balance roundrobin{{range service "timeservice@sc"}} 28 | server {{.ID}} {{.Address}}:{{.Port}}{{end}} 29 | -------------------------------------------------------------------------------- /showcase/puppet/modules/haproxy/files/etc/default/haproxy: -------------------------------------------------------------------------------- 1 | # Installed file via Puppet! 2 | 3 | # 1 => enabled 4 | # 0 => disabled 5 | 6 | ENABLED=1 7 | # Add extra flags here. 8 | #EXTRAOPTS="-de -m 16" 9 | -------------------------------------------------------------------------------- /showcase/puppet/modules/haproxy/files/etc/haproxy/haproxy.cfg: -------------------------------------------------------------------------------- 1 | global 2 | log /dev/log local0 3 | # log 127.0.0.dd1 local1 notice 4 | maxconn 4096 5 | user haproxy 6 | group haproxy 7 | daemon 8 | 9 | defaults 10 | log global 11 | mode http 12 | option httplog 13 | option dontlognull 14 | retries 3 15 | option redispatch 16 | maxconn 2000 17 | contimeout 5000 18 | clitimeout 50000 19 | srvtimeout 50000 20 | 21 | # We need at least one listen section 22 | 23 | listen ts-service 0.0.0.0:80 24 | balance roundrobin 25 | server ts1 192.168.60.60:8080 26 | server ts2 192.168.60.70:8080 27 | -------------------------------------------------------------------------------- /showcase/puppet/modules/haproxy/manifests/init.pp: -------------------------------------------------------------------------------- 1 | class haproxy { 2 | 3 | include 'haproxy::install' 4 | include 'haproxy::service' 5 | } -------------------------------------------------------------------------------- /showcase/puppet/modules/haproxy/manifests/install.pp: -------------------------------------------------------------------------------- 1 | class haproxy::install { 2 | package { 'HA Proxy': 3 | name => 'haproxy', 4 | ensure => latest 5 | } -> 6 | 7 | # Minimal default configuration for haproxy 8 | 9 | file { '/etc/haproxy': 10 | ensure => 'directory', 11 | owner => 'root', 12 | group => 'consul', 13 | mode => '775', 14 | } -> 15 | 16 | file { '/etc/haproxy/haproxy.cfg': 17 | ensure => 'present', 18 | owner => 'consul', 19 | group => 'consul', 20 | source => 'puppet:///modules/haproxy/etc/haproxy/haproxy.cfg', 21 | } -> 22 | 23 | file { '/etc/default/haproxy': 24 | ensure => 'present', 25 | owner => 'consul', 26 | group => 'consul', 27 | source => 'puppet:///modules/haproxy/etc/default/haproxy', 28 | notify => Service["haproxy"], 29 | } 30 | 31 | file { '/etc/consul-template.d/haproxy.cfg.ctmpl': 32 | ensure => 'present', 33 | owner => 'consul', 34 | group => 'consul', 35 | source => 'puppet:///modules/haproxy/etc/consul-template.d/haproxy.cfg.ctmpl', 36 | } 37 | 38 | } -------------------------------------------------------------------------------- /showcase/puppet/modules/haproxy/manifests/service.pp: -------------------------------------------------------------------------------- 1 | class haproxy::service { 2 | service { 'haproxy': 3 | ensure => 'running', 4 | enable => true, 5 | hasstatus => true, 6 | hasrestart => true, 7 | provider => 'upstart' 8 | } 9 | } -------------------------------------------------------------------------------- /showcase/puppet/modules/java7/manifests/init.pp: -------------------------------------------------------------------------------- 1 | class java7 { 2 | package {'OpenJDK 7 JRE': 3 | name => 'openjdk-7-jdk', 4 | ensure => latest 5 | } 6 | 7 | } -------------------------------------------------------------------------------- /showcase/puppet/modules/networking/manifests/init.pp: -------------------------------------------------------------------------------- 1 | class networking { 2 | host { 'haproxy-serv.localhost.localdomain': 3 | ip => '192.168.60.50', 4 | host_aliases => ['haproxy-serv'], 5 | } 6 | 7 | host { 'timeservice-1-serv.localhost.localdomain': 8 | ip => '192.168.60.60', 9 | host_aliases => ['timeservice-1-serv'], 10 | } 11 | 12 | host { 'timeservice-2-serv.localhost.localdomain': 13 | ip => '192.168.60.70', 14 | host_aliases => ['timeservice-2-serv'], 15 | } 16 | 17 | host { 'timeservice-3-serv.localhost.localdomain': 18 | ip => '192.168.60.100', 19 | host_aliases => ['timeservice-3-serv'], 20 | } 21 | 22 | host { 'consul-serv.localhost.localdomain': 23 | ip => '192.168.60.80', 24 | host_aliases => ['consul-serv'], 25 | } 26 | 27 | 28 | } -------------------------------------------------------------------------------- /showcase/puppet/modules/timeservice/manifests/init.pp: -------------------------------------------------------------------------------- 1 | class timeservice($nodeID = undef) { 2 | 3 | include 'timeservice::install' 4 | include 'timeservice::service' 5 | 6 | Class[timeservice::install] -> Class[timeservice::service] 7 | } -------------------------------------------------------------------------------- /showcase/puppet/modules/timeservice/manifests/install.pp: -------------------------------------------------------------------------------- 1 | class timeservice::install { 2 | file { '/opt/ts': 3 | ensure => directory, 4 | 5 | } -> 6 | 7 | exec { 'Installation of TimeService': 8 | command => '/bin/cp -n /exchange/timeservice.jar /opt/ts', 9 | } -> 10 | 11 | 12 | # We need a user account for the service 13 | 14 | user { 'timeservice': # creates also a group 15 | ensure => present, 16 | } -> 17 | 18 | file { '/etc/init/timeservice.conf': 19 | ensure => 'present', 20 | owner => 'root', 21 | group => 'root', 22 | mode => '644', 23 | content => template('timeservice/etc/init/timeservice.conf'), 24 | notify => Service["timeservice"], 25 | } -> 26 | 27 | 28 | file { '/etc/consul.d/service-ts.json': 29 | ensure => 'present', 30 | content => template('timeservice/etc/consul.d/service-ts.json'), 31 | } -> 32 | 33 | file { '/etc/consul.d/check-ts-http-alive.json': 34 | ensure => present, 35 | content => template('timeservice/etc/consul.d/check-ts-http-alive.json') 36 | } -> 37 | 38 | notify { 'consul': } 39 | 40 | 41 | } -------------------------------------------------------------------------------- /showcase/puppet/modules/timeservice/manifests/service.pp: -------------------------------------------------------------------------------- 1 | class timeservice::service { 2 | service { 'timeservice': 3 | ensure => 'running', 4 | enable => true, 5 | hasstatus => true, 6 | hasrestart => true, 7 | provider => 'upstart', 8 | require => [Package['OpenJDK 7 JRE']], 9 | } 10 | } -------------------------------------------------------------------------------- /showcase/puppet/modules/timeservice/templates/etc/consul.d/check-ts-http-alive.json: -------------------------------------------------------------------------------- 1 | { 2 | "check": { 3 | "id": "check-timeservice-http-alive", 4 | "name": "Alive-Check of REST interface", 5 | "service_id": "<%= @nodeID %>", 6 | "http": "http://localhost:8080/now/", 7 | "interval": "1s" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /showcase/puppet/modules/timeservice/templates/etc/consul.d/readme.md: -------------------------------------------------------------------------------- 1 | Consul configuration files if present. -------------------------------------------------------------------------------- /showcase/puppet/modules/timeservice/templates/etc/consul.d/service-ts.json: -------------------------------------------------------------------------------- 1 | { 2 | "service": { 3 | "id": "<%= @nodeID %>", 4 | "name": "timeservice", 5 | "tags": [], 6 | "port": 8080, 7 | "checks": [] 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /showcase/puppet/modules/timeservice/templates/etc/init/timeservice.conf: -------------------------------------------------------------------------------- 1 | description "TimeService" 2 | 3 | start on runlevel [2345] 4 | stop on runlevel [!12345] 5 | 6 | #respawn 7 | respawn limit 5 10 8 | 9 | setuid timeservice 10 | setgid timeservice 11 | 12 | 13 | script 14 | 15 | exec /usr/bin/java -jar /opt/ts/timeservice.jar server 16 | 17 | end script 18 | 19 | -------------------------------------------------------------------------------- /showcase/puppet/modules/update/manifests/init.pp: -------------------------------------------------------------------------------- 1 | class update { 2 | exec { 'APT Package Index Update': 3 | command => '/usr/bin/apt-get update', 4 | timeout => 600, 5 | } 6 | 7 | package { 'cUrl': 8 | name => 'curl', 9 | ensure => latest 10 | } 11 | 12 | package { 'Emacs without X11': 13 | name => 'emacs23-nox', 14 | ensure => latest 15 | } 16 | 17 | package { 'jq': 18 | name => 'jq', 19 | ensure => latest 20 | } 21 | 22 | Exec <| |> -> Package <| |> 23 | } -------------------------------------------------------------------------------- /showcase/readme.adoc: -------------------------------------------------------------------------------- 1 | = Consul Showcase 2 | 3 | This directory contains the Consul showcase used 4 | for our talk on Consul as infrastructure component 5 | for service discovery. 6 | 7 | == Showcase description 8 | 9 | The cluster in this showcase provides a time service which 10 | allows you to retrive the current time stamp as JSON 11 | document via REST. The cluster contains three instances of this 12 | timeservice behind a single HAProxy instance, used to 13 | balance the requests to the timeservice. 14 | 15 | == Requirements to run the showcase 16 | 17 | To run the custer you need the following tools on 18 | your local machine: 19 | 20 | * https://www.vagrantup.com/[Vagrant 1.6.3] 21 | * https://www.virtualbox.org/[Oracle VirtualBox 4.3] 22 | * http://www.gnu.org/software/bash/[Bash 3 or 4] 23 | * http://www.gnu.org/software/wget/[Wget] 24 | 25 | NOTE: This showcase was develop on a MacBook and is 26 | not tested on an different plattform. 27 | -------------------------------------------------------------------------------- /showcase/readme.md: -------------------------------------------------------------------------------- 1 | # Showcase to demonstrate various features of Consul 2 | 3 | In this directory we provide a running setup for 4 | various features of Consul in a small network. 5 | 6 | Please keep in mind: This is only a showcase to help us to 7 | demonstrate various features of Consul and shoudn't be 8 | used as template for you production environment. 9 | 10 | ## Requirements 11 | 12 | To run this network you need a working 13 | [Vagrant](https://www.vagrantup.com/) installation. 14 | 15 | ## Starting the cluster 16 | 17 | You can start the Consul cluster by the following command 18 | 19 | vagrant up con ts1 ts2 ui ha 20 | 21 | ## Access the Consul and the provided services 22 | 23 | After starting the Vagrant cluster you can access the 24 | provided services via the following addresses on 25 | the host machine of the cluster: 26 | 27 | Service | URL 28 | -----------------| ---------------------- 29 | Consul Web UI | http://localhost:8500/ 30 | Timeservice REST API | http://localhost:10080/now/ 31 | 32 | -------------------------------------------------------------------------------- /showcase/showcase-script.md: -------------------------------------------------------------------------------- 1 | # Script for Demonstration of Consul's Features 2 | 3 | 4 | Start Consul and the UI: 5 | 6 | vagrant up consul webui 7 | 8 | Show the UI in the browser via [http://localhost:8500/]() 9 | 10 | Explain the UI 11 | 12 | Start the HAProxy: 13 | 14 | vagrant up haproxy 15 | 16 | Show the UI 17 | 18 | Start all other nodes: 19 | 20 | vagrant up timeservice1 timeservice2 timeservice3 21 | 22 | Explain the changes in UI 23 | 24 | Show the service configuration file used: 25 | 26 | vagrant ssh -c "less /etc/consul.d/service-ts.json" timeservice1 27 | 28 | 29 | Call the timestamp provided by the timeservice: 30 | 31 | curl -s http://localhost:10080/now/ | jq . 32 | 33 | Say they should pay attention to the `origin` field 34 | 35 | Run the same request in a loop: 36 | 37 | while sleep 1; do 38 | curl -s http://localhost:10080/now/ | jq .origin ; 39 | done 40 | 41 | How kill one of the nodes: 42 | 43 | vagrant halt -f timeservice1 44 | 45 | Show the UI 46 | 47 | Start the killed node again 48 | 49 | vagrant up timeservice1 50 | 51 | Explain the HAProxy configuration template 52 | 53 | vagrant ssh -c "less /etc/consul-template.d/haproxy.cfg.ctmpl" haproxy 54 | 55 | Show the changes to the HAProxy configuration during changes in the cluster: 56 | 57 | vagrant ssh -c "watch -n 1 'cat /etc/haproxy/haproxy.cfg'" haproxy 58 | 59 | 60 | -------------------------------------------------------------------------------- /showcase/showcase.alias: -------------------------------------------------------------------------------- 1 | 2 | # 3 | # During the demo we will use a very minimalistic 4 | # shell prompt 5 | # 6 | 7 | export PS1="\W> " 8 | 9 | # 10 | # Aliases we will rely on 11 | # 12 | alias ll='ls -lh' 13 | 14 | # 15 | # Demo specific aliases 16 | # 17 | alias sc-ssh='ssh -F ssh-showcase.config' 18 | 19 | -------------------------------------------------------------------------------- /showcase/templates/all-datacenters.ctmpl: -------------------------------------------------------------------------------- 1 | {{/* 2 | Run this example with this command 3 | 4 | consul-template -template "/templates/all-datacenters.ctmpl:/tmp/datacenters.txt" -dry 5 | 6 | */}} 7 | # 8 | # All datacenters known in Consul 9 | # 10 | {{range datacenters}} {{/* Iterate over all datacenters */}} 11 | Datacenter: {{.}}{{end}} 12 | 13 | .eof ;-) 14 | -------------------------------------------------------------------------------- /showcase/templates/all-services-by-state.ctmpl: -------------------------------------------------------------------------------- 1 | {{/* 2 | Run this example with this command 3 | 4 | consul-template -template "/templates/all-services-by-state.ctmpl:/tmp/bystate.txt" -dry 5 | 6 | */}} 7 | # 8 | # All service instances passing all checks 9 | # 10 | {{range service "timeservice" "passing"}} 11 | Service: {{.Name}} Host: {{.Node}}:{{.Port}} {{.Status}}{{end}} 12 | 13 | # 14 | # All service instances with warnings 15 | # 16 | {{range service "timeservice" "warning"}} 17 | Service: {{.Name}} Host: {{.Node}}:{{.Port}} {{.Status}}{{end}} 18 | 19 | # 20 | # All service instances in a critical state 21 | # 22 | {{range service "timeservice" "critical"}} 23 | Service: {{.Name}} Host: {{.Node}}:{{.Port}} {{.Status}}{{end}} 24 | 25 | 26 | .eof ;-) 27 | -------------------------------------------------------------------------------- /showcase/templates/all-services-simple.ctmpl: -------------------------------------------------------------------------------- 1 | {{/* 2 | Run this example with this command 3 | 4 | consul-template -template "/templates/all-services-simple.ctmpl:/tmp/services.txt" -dry 5 | 6 | */}} 7 | # 8 | # All services registered in Consul 9 | # 10 | {{range services}} {{/* Iterate over all services */}} 11 | Service: {{.Name}}{{end}} 12 | 13 | .eof ;-) 14 | -------------------------------------------------------------------------------- /showcase/templates/all-services.ctmpl: -------------------------------------------------------------------------------- 1 | {{/* 2 | Run this example with this command 3 | 4 | consul-template -template "/templates/all-services.ctmpl:/tmp/services.txt" -dry 5 | 6 | */}} 7 | # 8 | # All services registered in Consul 9 | # 10 | {{$s := services}} {{/* Get all services and store them in s */}} 11 | 12 | {{range $s}} {{/* Iterate over all services */}} 13 | Service: {{.Name}}{{end}} 14 | 15 | .eof ;-) 16 | -------------------------------------------------------------------------------- /showcase/templates/readme.md: -------------------------------------------------------------------------------- 1 | # Examples for Consul Template 2 | 3 | -------------------------------------------------------------------------------- /ui/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Consul by HashiCorp 8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 | 22 |
23 |
24 | 25 | 31 | 32 | 35 | 36 | 51 | 52 | 69 | 70 | 81 | 82 | 92 | 93 | 125 | 126 | 170 | 171 | 242 | 243 | 319 | 320 | 330 | 331 | 393 | 394 | 444 | 445 | 502 | 503 | 586 | 587 | 655 | 656 | 704 | 705 | 723 | 724 | 741 | 742 | 743 | 747 | 748 | 749 | 750 | 751 | -------------------------------------------------------------------------------- /ui/static/base.css.map: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "mappings": "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", 4 | "sources": ["../styles/_type.scss","../styles/_variables.scss","../styles/_mixins.scss","../styles/_panels.scss","../styles/_nav.scss","../styles/_buttons.scss","../styles/_lists.scss","../styles/_forms.scss","../styles/_notifications.scss","../styles/base.scss"], 5 | "names": [], 6 | "file": "base.css" 7 | } 8 | -------------------------------------------------------------------------------- /ui/static/consul-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JoergM/consul-examples/0d6c2e6151b96fe967de62520eb86df608eb31a3/ui/static/consul-logo.png -------------------------------------------------------------------------------- /ui/static/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JoergM/consul-examples/0d6c2e6151b96fe967de62520eb86df608eb31a3/ui/static/favicon.png -------------------------------------------------------------------------------- /ui/static/loading-cylon-purple.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | --------------------------------------------------------------------------------