CloudControl 2.0.0-alpha1 (and how I learned Go)
As you might know, CloudControl is DoDevOps‘ cloud engineer toolbox, which supplies cloud engineers working in different clouds with common tools in an easy-to-deploy container environment suitable for multiple projects.
I always wasn’t quite happy with CloudControl’s initialization process. It was very cluttered, didn’t point out the relevant information and… well, ugly.
At first, I came up with an idea to use Dialog scripts to display some appealing user interface during the process, but that didn’t work out mostly because of the Azure flavour’s sign up process.
Then I thought, why not give a web client a go? I’m already used to Vue, so it wouldn’t be that hard. One thing was a problem, though: I’d need a web/api-server that hooks up into the running initialization process. I didn’t want to move away from shell scripts for the initialization of the flavour and features, because 1) they work quite well and 2) they’re not really an effort to write for other people who want to add features.
Well. Two process running alongside tapping into each other plus a need for a single binary with a low footprint? That really cried out for Go.
As I’ve commented in another post, I tried starting with Go several times and never succeeded. But those requirements really were a perfect fit. So I tried again.
I downloaded the most current version of Go, checked out the tutorials again and got going.
Then, I needed the first external dependency and I remembered, that Go really was a PITA with this the last time I checked.
But, no. Nevermore. The Go folks finally seemed to agree on a good way to document and implement external dependencies with a go.mod file and dumped the nasty GOPATH. And everything was nicely supported by my IDE-of-choice IntelliJ Idea. Just add the required import, let Idea sync the dependencies and you’re good to go. Yay!
The rest was classic trial-and-error until I came up with a nice looking Vue frontend (thanks to vuetify) and a stable API server (using gin) that delivers information from then goroutine, which handles the initialization.
With Docker multi-stage-builds it was also possible to build the vue client, the go server and the CloudControl flavour without any dependencies on the client. Oh, and I switched to GitHub Actions (because Docker automated builds didn’t support build scripts)
So, that was my journey and I’m pretty happy with the end result. If you haven’t already, please check it out and let me know what you think.
Originally published to dev.to
Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.
Calendar
M | D | M | D | F | S | S |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 |
Archive
- Januar 2024
- Dezember 2023
- April 2021
- März 2021
- September 2020
- Dezember 2019
- November 2019
- Oktober 2019
- Juli 2019
- Juni 2019
- Mai 2019
- April 2019
- März 2019
- September 2018
- August 2018
- Juli 2018
- März 2018
- Januar 2018
- Dezember 2017
- September 2017
- März 2017
- Februar 2017
- Januar 2017
- August 2016
- Mai 2016
- Dezember 2015
- November 2015
- August 2015
- März 2015
- Dezember 2014
- September 2014
- August 2014
- Juli 2014
- Februar 2014
- Oktober 2013
- September 2013
- August 2013
- Juli 2013
- Juni 2013
- Mai 2013
- April 2013
- November 2012
- Oktober 2012
- September 2012
- August 2012
- Juni 2012
- Mai 2012
- März 2012
- Februar 2012
- Januar 2012
- November 2011
- Juli 2011
- Juni 2011
- März 2011
- Februar 2011
- Januar 2011
- Dezember 2010
- November 2010
- April 2010
- Februar 2010
Schreibe einen Kommentar