Projects dda-pallet

dda-pallet

Let's create some DevOps code to automate the setup of our IDEs

Goals of this project

  • one of the agileventures project is able to set up their IDE-VirtualBox by using a dda-pallet installer
  • Projects developers can maintain his own ide (we use git forks at this point). Ide Features are:
    • Install and configure personal credentials
    • Install & configure remote communication (Hangout, ...)
    • Install & configure IDE (at the moment we are using eclipse, but jetbrains is on our roadmap allready)
    • Clone all project repositories & setup directory structure
    • Install & configure backup for personal data
  • accompany the process of opensourcing the existing managed-ide module
  • Having fun & learn new stuff :-)

Project Links

Project Velocity

We will drive this project with at least 8h / week - so we will have the chance to pair & get some stuff done.


dda-managed-ide

Clojars Project Build Status

Slack | DevOps Hacking with Clojure Meetup DevOps Hacking with Clojure | Website & Blog

Compatibility

This crate works with:

  • pallet 0.9
  • clojure 1.9
  • xubuntu 18.04

Features

This crate builds on top of the dda-managed-vm and therefore provides a development environment in addition to all the software packages and tools the dda-managed-vm installs.

Create a clojure ide in minutes

This crate automatically installs software on a Linux system. The target can be a standalone system but in most cases we prefer virtual machines as they offer snapshots and easy relocation.

We separated our configuration conventions in a layer called "domain-layer". As conventions are simple data-transformation adjusting this domain layer to your own conventions will be very easy.

The dda-managed-ide installs the following packages in addition to the packages of the managed-vm:

  • clojure
    • lein with profiles & credentials
  • java
    • custom jdk & gradle
  • java-script
    • custom nodejs, npm & yarn
  • devops
    • docker-host with configuration for bridge networking
    • aws-cli with simple credentials configuration
    • mfa tool
    • terraform
    • packer
    • mach for terraform & dda-pallet integration
    • aws-amicleaner
  • atom with plugins for
    • clojure language & repl
    • java language
    • terraform, packer, json
  • intellij
    • configure inodes for idea
    • cursive
    • pycharme
  • others
    • git with configuration
    • yed, argouml (uml / diagram)
    • dbvis (sql)
    • asciinema & animated gif generation
    • many more os-level tools like strace, iotop ...

Usage documentation

This crate installs and configures software on your target system. You can provision pre-created virtual machines (see paragraph "Prepare vm" below), standalone systems or cloud instances.

Prepare vm

There are two options to provision dda-managed-ide. You can provision remote over ssh or localy. In order to provision over ssh you need a running opennssh-server on your target. If you do not already have a running ssh service use the steps below to install it

  1. Install xubuntu18.04
  2. Login with your initial user and use:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install openssh-server

If you want to provision by a local jar file you need a java runtime environment installed on your target system. If you do not already have java installed you can follow the steps below to install it:

sudo apt-get install openjdk-11-jre-headless

Usage Summary

  1. Download the jar-file from the releases page of this repository (e.g. 'curl -L -o managed-ide.jar https://github.com/DomainDrivenArchitecture/dda-managed-ide/releases/download/2.0.0/dda-managed-ide-2.0.0-standalone.jar').
  2. Deploy the jar-file on the source machine
  3. Create the files 'example-ide.edn' (Domain-Schema for your desktop) and 'target.edn' (Schema for Targets to be provisioned) according to the reference and our example configurations. Please create them in the same folder where you have saved the jar-file. For more information about these files refer to the corresponding information below.
  4. Start the installation:
java -jar dda-managed-ide-standalone.jar.jar --targets example-targets.edn example-ide.edn

If you want to install the ide on your localhost you don't need a target config.

java -jar dda-managed-ide-standalone.jar.jar example-ide.edn

Configuration

The configuration consists of two files defining both WHERE to install the software and WHAT to install.

  • 'example-targets.edn': describes on which target system(s) the software will be installed
  • 'example-ide.edn': describes which software/packages will be installed

You can download examples of these configuration files from example-targets.edn and example-ide.edn, respectively.

Targets config example

Example content of the file 'example-targets.edn':

{:existing [{:node-name "test-vm1"      ; semantic name
             :node-ip "35.157.19.218"}] ; the ip4 address of the machine to be provisioned
 :provisioning-user
 {:login "initial"                      ; account used to provision
  :password {:plain "secure1234"}}}     ; optional password, if no ssh key is authorized

IDE config example

Example content of the file, 'example-ide.edn':

{:target-type :virtualbox
 :clojure {:lein-auth [{:repo "maven.my-repo.com"
                        :username {:plain "mvn-account"}
                        :password {:plain "mvn-password"}}]}
 :java {}
 :java-script {}
 :devops {:aws {:simple {:id {:plain "ACCESS_KEY"}
                         :secret {:plain "SECRET_KEY"}}}}
 :ide-platform #{:atom}
 :user {:name "test-user"
        :password {:plain "xxx"}
        :email "test-user@mydomain.org"
        :ssh {:ssh-public-key {:plain "rsa-ssh kfjri5r8irohgn...test.key comment"}
        :ssh-private-key {:plain "123Test"}}}
        :gpg {:gpg-public-key
              {:plain "-----BEGIN PGP ...."
              :gpg-private-key
              {:plain "-----BEGIN PGP ...."}
              :gpg-passphrase {:plain "passphrase"}}}}

The ide config creates a new user with the provided credentials and installs the defined software and packages for the new user.

Watch log for debug reasons

In case any problems occur you may want to have a look at the log-file: 'less logs/pallet.log'

Reference

Some details about the architecture: We provide two levels of API. Domain is a high-level API with built-in conventions. If these conventions do not fit your needs you can use our low-level infra API and realize your own conventions.

Targets

You can define provisioning targets using the targets-schema

Domain API

You can use our conventions as a starting point: see domain reference

Infra API

Or you can build your own conventions using our low level infra API. We will keep this API backward compatible whenever possible: see infra reference

License

Copyright © 2015, 2016, 2017, 2018 meissa GmbH Published under apache2.0 license

No documents can be found for project dda-pallet

Pairing on dda-pallet: Automated creation of your project IDE - Monday, 26th Jun at 03:15pm (UTC)


Latest Project videos

Video Host Published
video unavailable ('Start Broadcast' not pressed, or Hangout/YouTube fail) jerger 15:08 26/06
HackingDay: Clojure mit Eclipse, Atom, Emacs jerger 11:54 21/04
Pairing on dda-pallet: Automated creation of your project IDE Michael Jerger 16:08 10/04
Pairing on dda-pallet: Automated creation of your project IDE Michael Jerger 16:07 20/03
Pairing on dda-pallet: Automated creation of your project IDE Michael Jerger 16:09 13/03
Remote Hacking Day: Hacking the OWASP JuiceShop Michael Jerger 12:55 10/03
Pairing on dda-pallet: Automated creation of your project IDE Michael Jerger 16:09 27/02
Pairing on dda-pallet: Automated creation of your project IDE Michael Jerger 16:10 20/02
Remote Hacking Day: Test-Driven DevOps Michael Jerger 12:51 17/02
Pairing on dda-pallet: Automated creation of your project IDE Michael Jerger 16:42 13/02
Pairing on dda-pallet: Automated creation of your project IDE Michael Jerger 16:19 30/01
Pairing on dda-pallet: Automated creation of your project IDE Michael Jerger 16:12 16/01
PairProgramming on dda-pallet Michael Jerger 16:10 16/01
Pairing on dda-pallet: Automated creation of your project IDE Michael Jerger 09:11 02/01
Pairing on dda-pallet: Automated creation of your project IDE Michael Jerger 09:01 19/12
Pairing on dda-pallet: Remote IDE Desktop on aws Michael Jerger 11:58 05/12
Pairing: Make cloud IDE remote viewable Michael Jerger 11:53 28/11
PairProgramming on dda-pallet Michael Jerger 12:00 25/11

Stories are not supported for issue tracker type used by project dda-pallet