STACKL is an open-source software platform that enables users to flexibly model, describe, and automate their application orchestration. STACKL supports the autonomous configuration, coordination, and management of applications and IT infrastructure by:
In essence, it allows you to model, describe, and automate your application orchestration workflow.
Users are saved from manual work each time they want to deploy their projects by automating and simplifying IT infrastructure selection, application specification, and choosing suitable orchestration tools. Users now simply model their available infrastructure, describe their desired applications, and specify the desired orchestration tools once. STACKL then transparently and autonomously uses this information to correctly and efficiently orchestrate and automate applications in the available IT environment across their lifetime and managing dynamic changes.
This section includes a quick guide to what is required, how to install, and how to do a first test run.
git clone [email protected]:stacklio/stackl.gitkubectl create namespace stacklhelm install stackl/build/helm -n stackl --generate-nameYou can see all the pods with the following command: watch kubectl get pods -n stackl

For this example we will create a SIT (Stack Infrastructure Template) and a SAT (Stack Application Template). We will use this to deploy an application defined in the SAT on the environment specified in the SIT.
A stack infrastructure template specifies which IT Infrastructure is available to the application deployment. A SIT needs the following components (documents):
{
"description": "Production environment",
"type": "environment",
"name": "production",
"hostname": "vsphere.local",
"username": "",
"password": "supersecurepassword123!",
"datastore": "vsanDatastore"
}
{
"description": "Brussels DC",
"type": "location",
"name": "brussels",
"datacenter": "DC01"
}
{
"description": "Our First Cluster",
"type": "zone",
"name": "cluster1",
"cluster": "CL01",
"CPU": "4GHz",
"RAM": "4GB",
"config": [
"linux",
"nginx"
]
}
We can now combine the above documents into the SIT.
{
"category": "configs",
"description": "sit updated at 2020-01-30 10h38m46s",
"environment": [
"production"
],
"infrastructure_capabilities": {},
"infrastructure_targets": [
"production.brussels.cluster1"
],
"location": [
"brussels"
],
"name": "stackl",
"parameters": {},
"subcategory": "SIT",
"type": "stack_infrastructure_template",
"zone": [
"cluster1"
]
}
Stack application templates are templates that define an application. It consist out of the following components:
{
"category": "configs",
"description": "type functional_requirement with name linux",
"invocation": {
"description": "installs centos",
"image": "nexus-dockerint.dome.dev/stackl/terraform-vm",
"tool": "terraform"
},
"name": "linux",
"params": {
"aws_ami": "ami-12345",
"vmw_image": "centOS8-template"
},
"type": "functional_requirement"
}
{
"name": "webserver",
"type": "virtual_machine",
"functional_requirements": ["linux"],
"resource_requirements": {
"CPU": "1GHz",
"RAM": "2GB"
},
"params": {
"webserver": "nginx"
}
}
{
"name": "web",
"type": "stack_application_template",
"services": ["webserver"],
"policies": {
"webserver": {
"replicas": 2,
"policies": ["opa_policy1", "opa_policy2"]
}
}
}
Go to the STACKL web interface, (use kubectl get service -n stackl to get the IP address). use the /documents/{type_name} endpoint to send a request with the POST HTTP method with the documents using the correct type.
Use the following payload to make a POST-request to /stack/instances, this will instantiate a stack instance and will create a Virtual Machine.
{
"parameters": {
"replicas": "1",
"vm_name": "stackl_vm",
"folder": "folder1"
},
"infrastructure_template_name": "stackl",
"application_template_name": "web",
"stack_instance_name": "web_example_stack1"
}
You can then see the status of the stack instance by using the /stack/instances/web_example_stack1 endpoint.
Contributions, issues, and feature requests are always more than welcome! Feel free to check issues page if you want to contribute.
STACKL is programmed mainly in Python 3 and meant to follow best-practice coding guidelines. As a point-of-reference, we use the Google Python Style Guide for coding and the Google developer documentation style guide for documentation.
See CONTRIBUTING to get started. Please also read the CODE_OF_CONDUCT.
For a list of changes, see Changelog. For the releases, see Github Releases.
The code in this project is licensed under the GLPv3 license.
STACKL was initially created for in-house use by Nubera, a DevOps consultancy company who saw the need for a platform to better provide services to clients. After some time, it became clear that STACKL could be useful to the general DevOps community as well so the decision was made to spin it off as an open source project. Hence, thanks to Nubera and Yannick Struyf who put in much of the hard initial work.
Content type
Image
Digest
Size
84.3 MB
Last updated
almost 6 years ago
docker pull stacklio/stackl-cli:v0.2.5dev