The opsforge anvil (a renaming of the opsforge stack 2.0) is an all-in-one development solution, that aims to deliver a development platform that is:
- using browser accessible web-apps (no terminal emulator or IDE needed / even on Windows)
- built on docker-native and container-based services
- structured and configured by docker-compose
- relying on OSS-only components
- swarm-compatible for scale-out needs (e.g larger dev environments)
- has in-built logging and audit (for collaboration and record keeping)
- highly customisable (modular)
- easly reproducable and replacable
- version controlled
- platform and infrastructure agnostic
- can run on localhost and AWS the same way
Components:
Name | Purpose | Accessibility |
---|---|---|
(plugin) Cloud9 IDE | Development interface | Browser window |
anvil | ZSH (shell) through Butterfly, pre-built CLIs and git control | Browser window or Docker shell |
(plugin) Apache Guacamole | Remote desktop, VNC, TTY, etc access (optional) | Browser window |
(plugin) portainer | Docker engine access and container access | Browser window or API |
(plugin) ELK | Audit and shell logging (optional) | Browser window or API |
(plugin) Splunk Light (C) | Audit and shell logging (optional) | Browser window or API |
It's recommended to create a new folder in the destination directory first. The name of the folder can be anything the OS supports.
cd
into the folder you createdmkdir -p ./es_data
chmod -R 777 ./es_data
This will resolve any issues with ownership when the ES container is starting up.
cd
into the folder you createdmkdir -p ./splunk-data && touch ./splunk-data/splunk-launch.conf
This will resolve launch issues with the Splunk Light container.
The recommended way to deploy anvil is through docker-compose. Make sure your machine has the latest version of docker engine and docker-compose installed. You can check from your command line using docker -v
and docker-compose -v
Either clone this project repository to your machine using git
or just download the docker-compose.yaml
file from the project root to a folder on your machine, cd
into that folder and type docker-compose -p anvil up -d
To delete the stack, simply cd
into your project folder and type docker-compose -p anvil down
. Make sure you remove content from any persisted data mounts manually.
hostname
will be either localhost or if you deployed to another machine, the DNS record / IP for that.
Service | Address |
---|---|
Splunk Light | http://localhost:8000 |
anvil (core) | http://localhost:8001 |
Cloud9 | http://localhost:8002 |
Apache Guacamole | http://localhost:8003/guacamole/ |
portainer | http://localhost:9000 |
Kibana | http://localhost:5601 |
Logstash (for sending logs and metrics in) | http://localhost:5000 |
You are free to comment out / add in parts of the docker-compose to disable or remove services on startup. You can apply your changes with a simple docker-compose -p anvil up -d --remove-orphaned
on an active deployment.
You can also make use of portainer on port 9000
. After logging in and connecting in to the local docker engine, you can stop / start / create / remove containers on-demand through the web UI or its API.
- Guacamole doesn't play nice with private DNS servers (public records seem to be fine)
- Desktop copy/paste doesn't seem to work in Guacamole and drive sharing is flaky
- anvil container doesn't include a puppet cli yet
- Logstash doesn't support multiline TCP intake since its previous version update. A line sent to the listener remains a single line.
- Create a read-the-docs page for the project
- YouTube demo video