264 karma · joined February 20, 2007
github: https://github.com/rjosephwright
Was there a reason for not using something similar to kata containers where you run a microvm but still use containers inside them? It seems like it would make such things easier while getting the isolation of a VM.
Ctrl+[ is the same as escape, which I like more than reaching for the esc key.
I didn't dig deeply into the docs, but Dagger appears to be doing a multi stage pipeline locally. If that is the case, I wouldn't want that either. I use Concourse, which has very good visualizations of the stages, and if I used Dagger there, it would consolidate those stages into one box without much feedback from the UI. Also, with Concourse you can use `fly execute` to run tasks against your code on the actual server, without having to push anything to a repo.
executable=/path/to/target
while true; do
make build
if [ ${?} -eq 0 ]; then
${executable} run &
pid=${!}
fi
inotifywait -qq -e create -e modify -e delete --exclude '\.#.*' -r .
[ -n "${pid}" ] && kill ${pid}; pid=
done
This is simplified a bit, as the script usually contains some other things like starting and initializing the database.I don't program in Emacs except to fix bugs or make small modifications to my init.el. I use Emacs because it's the easiest editor to use. The keybindings are ubiquitous: they are standard in the command line of bash and other shells as well as numerous other programs, and all throughout the macOS GUI. By sticking to Emacs as an editor I am using the most widely available keybindings anywhere and that helps me be productive in a multitude of places. Emacs has modes for all the languages I use, and especially now with LSP, they generally Just Work. I start Emacs as a server when I log in, and I can connect to it from any shell on the same machine, and my open files are there waiting for me. I guess you might find VS Code better if you like the mouse, but I don't want my hands to leave the keyboard while editing as I find it counterproductive.
I'm trying to solve the "works on my machine" problem that's very prevalent in the devops world. One person's playbook (or Terraform module or Chef cookbook or whatever) works fine on the developer's machine due to assumptions made during the development. But transfer that code to another machine and it's a whole 'nother story. There is often a lack of rigor around dependency management and versioning, along with hidden dependencies such as programs that need to exist on the machine where the playbook is run. I want to make it possible to include all of the dependencies directly in the binary, so you truly need just one binary (unobin) to download and run.
I've made a lot of progress and have what I feel is a solid POC at this point. It lacks many modules but I'm just writing them as I need them. Right now I'm working on a reference playbook to build a Concourse CI stack, and that's giving me solid feedback to myself about what's missing.
BOSH is not a requirement to host it yourself, and I've never used it.
Probably the easiest way to run it is to use the helm chart[1] and run it on Kubernetes. There are some things to keep in mind, like the workers have their own containerizer that is not Kubernetes-aware. You don't want it competing with Kubernetes for scheduling containers, so it's best to let the worker pods be the the "owner" of their node, and you can use affinities to enforce that.
At one company where we ran it directly on VMs in AWS, I used Ansible to build the CloudFormation stacks for the database (Aurora) and autoscaling groups, and the machines self-configured with Ansible to download and extract the Concourse tarball and start it. I wish I could make that code public but it now lives inside the company where I used it. I guess my point is that running it isn't magic, it's just a program (actually two, web and worker) that you start with some arguments that are pretty well documented[2].
0. https://github.com/cloudboss/ofcourse 1. https://github.com/concourse/concourse-chart 2. https://concourse-ci.org/install.html
Then I discovered there were many free operating systems available, such as FreeBSD. I installed it on my machine and started going to the local BSD users group meetings. I met a guy there who hosted weekly programming classes at his house. One of the people that went to his classes worked for a small web hosting company and helped me to get an interview. I landed the job, and that is how I got my foot in the door as a professional.
1. https://www.seattleweekly.com/news/microsofts-new-brain-proj...
Pass all of your variables and dependencies (role artifact urls, python requirements.txt, etc) to machines through user data and have the machine download the dependencies and run ansible-playbook to configure itself. Optionally, add a systemd timer to run it on a schedule and you have an "agent".
I've done it this way a large percentage of the time using ansible. The other way is by baking images and using ansible as the provisioner (using ssh but only during the image build).