All Projects → adhokku → Adhokku

adhokku / Adhokku

Licence: bsd-2-clause
A toy PaaS

Programming Languages

shell
77523 projects

Projects that are alternatives of or similar to Adhokku

Bastille
Bastille is an open-source system for automating deployment and management of containerized applications on FreeBSD.
Stars: ✭ 377 (+1078.13%)
Mutual labels:  freebsd, deployment, containers
Helloworld Msa
Main repository with documentation and support files
Stars: ✭ 218 (+581.25%)
Mutual labels:  ansible, deployment, containers
Caprover
Scalable PaaS (automated Docker+nginx) - aka Heroku on Steroids
Stars: ✭ 7,964 (+24787.5%)
Mutual labels:  paas, deployment, containers
Swarmlet
A self-hosted, open-source Platform as a Service that enables easy swarm deployments, load balancing, automatic SSL, metrics, analytics and more.
Stars: ✭ 373 (+1065.63%)
Mutual labels:  ansible, deployment
Devops Guide
DevOps Guide - Development to Production all configurations with basic notes to debug efficiently.
Stars: ✭ 4,119 (+12771.88%)
Mutual labels:  ansible, containers
Tsuru
Open source and extensible Platform as a Service (PaaS).
Stars: ✭ 3,761 (+11653.13%)
Mutual labels:  paas, containers
Picluster
A Simplified Docker Swarm or Kubernetes Alternative to Container Scheduling and Orchestration
Stars: ✭ 390 (+1118.75%)
Mutual labels:  paas, containers
Rundeck
Enable Self-Service Operations: Give specific users access to your existing tools, services, and scripts
Stars: ✭ 4,426 (+13731.25%)
Mutual labels:  ansible, deployment
Dokku
A docker-powered PaaS that helps you build and manage the lifecycle of applications
Stars: ✭ 22,155 (+69134.38%)
Mutual labels:  paas, containers
Ansible Skeleton
The skeleton to create new ansible roles.
Stars: ✭ 5 (-84.37%)
Mutual labels:  ansible, example
Ecs Deploy
Powerful CLI tool to simplify Amazon ECS deployments, rollbacks & scaling
Stars: ✭ 541 (+1590.63%)
Mutual labels:  deployment, containers
Ansiblecm
A Docker based Ansible control machine for running playbooks in a consistent environment.
Stars: ✭ 26 (-18.75%)
Mutual labels:  ansible, deployment
Play Samples
Stars: ✭ 335 (+946.88%)
Mutual labels:  example, example-project
Linuxdeploy
Install and run GNU/Linux on Android
Stars: ✭ 3,775 (+11696.88%)
Mutual labels:  deployment, containers
Nelson
Automated, multi-region container deployment
Stars: ✭ 363 (+1034.38%)
Mutual labels:  deployment, containers
Ansible Rails
Ansible: Ruby on Rails Server
Stars: ✭ 317 (+890.63%)
Mutual labels:  ansible, deployment
Adapt
ReactJS for your infrastructure. Create and deploy full-stack apps to any infrastructure using the power of React.
Stars: ✭ 317 (+890.63%)
Mutual labels:  deployment, containers
lagom-samples
developer.lightbend.com/start/?group=lagom
Stars: ✭ 85 (+165.63%)
Mutual labels:  example, example-project
Create React App Typescript Todo Example 2020
🚀 Create React App TypeScript Todo Example 2020
Stars: ✭ 255 (+696.88%)
Mutual labels:  example, example-project
Lain
LAIN's main repo
Stars: ✭ 455 (+1321.88%)
Mutual labels:  paas, ansible

Adhokku

A toy single-host PaaS powered by FreeBSD jails and managed with Ansible.

How it works

When you deploy an application using Adhokku, Adhokku creates a new jail on the remote host and provisions it from a fixed clean state using the instructions in the Jailfile in your Git repository. (A Jailfile is a simple POSIX shell script; here is one.) All jails sit behind a reverse proxy that directs traffic to one of them based on the host's domain name or IP address in the HTTP request. When a new jail has been provisioned for an application, Adhokku seemlessly reconfigures the reverse proxy to send traffic to it instead of the one currently active for that application.

Adhokku is built as an Ansible role, so it operates over SSH and requires no specialized daemons running on the remote host for setup or deployment.

Requirements

Ansible 2.0 or later and Git installed on the developer machine. FreeBSD 10.4 or 11.1, -RELEASE or -STABLE, on the server (other versions may work but haven't been tested). An SSH key pair.

Setup

The following instructions show how to get Adhokku and an example application running in a VM on your development machine using Vagrant. This process should require no FreeBSD-specific knowledge, though modifying the Jailfile to customize the application may.

If you are familiar with FreeBSD you can install Adhokku on a host of your choice. To do this, get the host to a point where it accepts SSH connections with your SSH key and lets you run commands as root via sudo. Then, follow the instructions with the appropriate modifications like skipping step 5.

Note that Adhokku expects a clean FreeBSD installation that isn't used for anything else and does not account for possible conflicts with other software.

1. Install Adhokku using Ansible Galaxy and set the environment variable ADHOKKU_PATH.

export ANSIBLE_ROLES_PATH="$HOME/.ansible/roles"
ansible-galaxy install adhokku.adhokku
export ADHOKKU_PATH="$ANSIBLE_ROLES_PATH/adhokku.adhokku"

2. Create a new project, e.g., in ~/projects/adhokku-hello/.

cd ~/projects/
mkdir adhokku-hello
cd adhokku-hello
git init

3. Create the Ansible files needed to run Adhokku commands with adhokku-tool.

sh "$ADHOKKU_PATH/adhokku-tool" init

4. Add a submodule for a Jailfile. Your project's Jailfile will import it.

git submodule add https://github.com/adhokku/adhokku-caddy
echo '/.vagrant' > .gitignore
echo '. /app/adhokku-caddy/Jailfile' > Jailfile
mkdir static
echo '<h1>Hello, world!</h1>' > static/index.html
git add .
git commit -m 'Initial commit'

5. If you do not have a FreeBSD VM running Adhokku yet, create a new one with Vagrant.

cp "$ADHOKKU_PATH/Vagrantfile" .
vagrant up || vagrant up

6. Set up Adhokku on the VM with Ansible.

ansible-playbook -i inventory playbooks/setup.yml

If you get an SSH error like "Failed to connect to the host via ssh." at this point, remove the key for other Vagrant VMs from your ~/.ssh/known_hosts file with the commands

ssh-keygen -R '[127.0.0.1]:2222' -f ~/.ssh/known_hosts
ssh-keygen -R '[localhost]:2222' -f ~/.ssh/known_hosts

6. Deploy the application.

ansible-playbook -i inventory playbooks/deploy.yml

7. Browse to http://127.0.0.1:8080/.

See also

License

Two-clause BSD.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].