Allspark is a Docker based developer toolbox fully automated in term of configuration and parameterization between the different developpment tool stacks.
Allspark is a devops pipeline including forge components (Gitlab, Jenkins...). Managing all these components could be a brain teaser. Allspark has the objectives to reduce forge integration, management complexity, improve hosting agnosticity and providing multi tenancy approach.
Allspark targets 3 types of implementation accross 3 subproducts:
You need to edit .circleci/.config.yml
if you add a main core playbook for allspark
e.g:
- run: PATH=$PATH:/root/.local/bin ansible-lint mynewplaybook.yml -c .circleci/.ansible-lint
To add an OS compatibility
roles/system/tasks
test-<osmajorversion>:
vagrant up <osmajorversion> --provision
config.vm.define "<osmajorversion>", autostart: false do |<osmajorversion>|
ubuntu14.vm.box = "actinium/<osmajorversion>"
ubuntu14.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"
ubuntu14.vm.provider "virtualbox" do |vb|
vb.memory = "2048"
end
ubuntu14.vm.provision "ansible" do |ansible|
ansible.verbose = "vvv"
ansible.playbook = "install.yml"
end
end
For the Red Hat Enterprise Linux, only the Actinium team could validate the playbook
If you don't found a box to test your compatibility, you can contribute Here
The docker images are downloaded in the download
role.
If you need to add an image to allspark, add the corresponding entry
in the roles/download/defaults/main.yml
file. You can then refer to
your image using {{ downloads.component_name.image }}:{{ downloads.component_name.tag }}
.
By convention, the image name
and tag
are exposed in separated variables ${component_name}_image
and ${component_name}_tag
.
e.g:
# Images
gitlab_image: gitlab/gitlab-ce
# Tags
gitlab_tag: latest
# Downloads
downloads:
gitlab:
enabled: "{{ allspark_gitlab.enabled }}"
image: "{{ gitlab_image }}"
tag: "{{ gitlab_tag }}"
This format is helful to centralize downloads
for an easier access in roles, the exposed variables also allow the user to
easily override an image/tag with a ansible-playbook -e "${component_name}_image=my-image"
All the docker containers beside haproxy
does not export any port on the host.
However, you can configure haproxy
in the roles/haproxy/defaults/main.yml
file.
This file allow you to configure ingress on the machine, with automatic ssl termination handled
by the reverse proxy (only if your backend is of type http
)
e.g: Ingress of the portainer
infra service.
-
# Runtime name of the container
# (defined by the `docker_container` module `name` parameter)
name: "portainer"
# The host on which the service will be exposed
host: "infra.{{ allspark_root_domain }}"
# List of object with the following properties:
# - mode: http|tcp
# - port: the listening container port to expose
# - exposed_port: The port exposed on the host machine (only for tcp mode)
backends:
# # Sample HTTP backend
# - port: 8080
# mode: http
# # Sample TCP backend
# - port: 6578
# mode: tcp
# exposed_port: 6578
- port: 9000
mode: http
We use vagrant
to test the Allspark single node environment.
You can see the install notes here.
The box used is the centos/7
one.
You can test modification using Vagrant like so :
# Run this once, vagrant will let you know if it needs updates
vagrant box add centos/7
# Create a virtual machine, run the install.yml playbook on it
# It needs to be online when running this command.
make test
# The make test command launch the default system (CentOS 7)
# If you want to test in another system, juste run this command:
make test-ubuntu14
# It's always the {{ ansible_distribution }}{{ ansible_distribution_major_version }}
# Stop & destroy the VM
make clean
Allspark has been initiated and created inside the actinium organization. As the "core" dev team navigate to new horizon the project moved to a new organization. However we thanks them #Xide and #Guiadco for their contribution and passion.
Allspark is now part of lightpharosio. Long live to allspark ! :)