[emacs-berlin] Literate dev-ops
Arthur Leonard Andersen
arthur at andersen.berlin
Wed May 11 12:19:50 UTC 2016
And just as I hit send, it comes to me...
#+BEGIN_SRC yaml :tangle /sshx:my-server|sudo:my-server:/srv/docker-compose.yml
postgres:
name: my_postgres
image: postgres
ports:
- 5432:5432
#+END_SRC:
Being in the block with the cursor hitting `C-c C-v t` invokes
`org-babel-tangle`.
Thanks! :-)
On Wed, May 11 2016, Arthur Leonard Andersen wrote:
> That's awesome! Thanks for hinting me to this video again. It was in my
> "watch later" list, but I just forgot.
>
> I did not know about the tower of babel. This will simplify many of my
> org-files!
>
> You tweeted you'd use this to setup your lambdaisland server.
> How do you save config files from an org-mode block to the server?
> I know for sure I am overlooking something here... but trying to execute
> a yaml block just gives me "No org-babel-execute function for yaml".
>
> On Fri, May 06 2016, Arne Brasseur wrote:
>
>> I came across this video of someone using org-mode to do "devops" stuff
>> (i.e. server maintenance).
>>
>> It's really good, I'm already using a lot of the ideas in it.
>>
>> https://www.youtube.com/watch?v=dljNabciEGg
>>
>> The main idea is that org + org-babel + tramp == solid gold.
>>
>> - Use tramp syntax to link to common configuration files on the server, so
>> you can open them instantly with C-c C-o
>> - Make sh code snippets with :dir set to a tramp string and you can have it
>> execute on the server. You can also configure this for a group of snippets
>> under the same heading with a :dir: property.
>> - When these snippets grow into their own thing you can "tangle" them to a
>> file, including a remote file
>>
>> e.g. this is an example of part of my org file that I'm using to deploy new
>> versions of a Clojure app.
>>
>> :PROPERTIES:
>> :dir: ~/LambdaIsland/app
>> :END:
>>
>> #+NAME: current-version
>> #+BEGIN_SRC sh
>> VERSION=`head -1 project.clj | sed
>> 's/.defproject.lambdaisland."\(.*\)"/\1/'`
>> echo $VERSION
>> #+END_SRC
>>
>> #+NAME: build-new-uberjar
>> #+BEGIN_SRC sh :var VERSION=current-version :dir /
>> ssh:root at lambdaisland.com|sudo:web at lambdaisland.com:/var/web/app :results
>> scalar
>> set -e
>> git checkout v$VERSION
>> /opt/bin/lein uberjar 2>&1
>> mkdir /var/web/deploys/v$VERSION
>> cp target/lambdaisland.jar /var/web/deploys/v$VERSION
>> cp -r resources/public /var/web/deploys/v$VERSION
>> #+END_SRC
More information about the emacs-berlin
mailing list