Showing posts with label deployment. Show all posts
Showing posts with label deployment. Show all posts

Workspace trial causes engine modifications

Mike's Notes

Changes triggered by the recent successful workspace trial. I slept on this for a few weeks, just to be sure. 😇

Most of it is done already. A lot better.

Resources

References

  • Reference

Repository

  • Home > Ajabbi Research > Library >
  • Home > Handbook > 

Last Updated

7/12/2026

Workspace trial causes engine modifications

By: Mike Peters
On a Sandy Beach: 5/12/2025

Mike is the inventor and architect of Pipi and the founder of Ajabbi.

Some Pipi 9 agent engines are getting minor modifications as a result of lessons learned from the recent successful stress-test trial involving 15,000 generated web pages and directories in a workspace website UI. It took creating a massive static mockup for volunteer testers to explore freely and identify gaps.

After these simple modifications, Pipi 9 will automatically render in about 50 seconds, another static mockup of a huge workspace website for testing. If that stress test is 100% successful, the next stage will be rendering a live version.

Pipi 9 will then automatically generate much larger custom live workspaces without error. And on demand.

The necessary minor modifications will change the deployment-workspace hierarchy previously described on this engineering blog.

The previous workspace settings from 2018, stored as structured training data, also need to be edited. The test results indicate that everything can now be significantly simplified, resulting in a performance boost.

Deployment Engine (dpl)

A Deployment Type has been added to create a simple separation of functions and to drive URL pattern creation.

  • Applications a/
  • Customer c/
  • Global g/
  • Settings s/

Workspace Engine (wsp)

A new Module Entity has been added to store each workspace module's attributes. They are all inherited from a library of predefined Domain Model Objects.

The revised hierarchy is

User Account

A User Account has three or more Deployments.

  • Applications
  • Customer
  • Settings
An Enterprise Account can also have Global Deployments to share properties.

Deployment

A Deployment is a container for one or more Workspaces. A deployment has these properties;

  • ID
  • Code Name
  • Name
  • Description
  • One language (eg English)
  • One User Account
  • One Deployment Class (type of tenancy)
  • One Deployment Type (type of container)
  • Those properties are inherited by all workspaces.

Workspace

A Workspace is a container for one or many Modules. A workspace has these properties;

  • ID
  • Code Name
  • Name
  • Description
  • One inherited language (eg English)
  • One inherited User Account
  • One inherited Deployment
  • One pre-built Domain Model (eg, Screen Production).
  • One Domain Model Template (eg, Feature Film, Documentary, Live Broadcast), These templates can be customised and shared.
  • Main menu (Ribbon, etc)
Those properties are inherited. This means each Workspace/Domain Model comes with its own set of prebuilt Security Roles and Security Profiles.

Module

A Module is a container for nil, one or more modules in a nested tree hierarchy. Modules can be rearranged in the Workspace UI via drag-and-drop. They are all semantically linked. A module has these properties;

  • ID
  • Parent Module ID
  • Code Name
  • Name
  • Description
  • Sort order
  • One inherited language (eg English)
  • One inherited User Account
  • One inherited Deployment
  • One inherited Workspace
  • One pre-built Domain Model Object (eg, Task, Runway, Locomotive, Film Set, Medical Device).
  • Set of prebuilt Security RolesSecurity Profiles.
  • Context menu (Ribbon, etc)
  • Learning objects
  • Contextural help
  • Attached
    • Tools
    • Workflows
    • State
    • Code
    • Data

Template

A Template is a prebuilt set of configurations and constraints to customise a workspace. Templates can be saved and shared. A template has these properties;

  • ID
  • One pre-built Domain Model ID
  • Code Name
  • Name
  • Description
  • One language (eg English)
  • Set of prebuilt Security RolesSecurity Profiles.
  • Menu (Ribbon, etc)
  • Set of Modules in a hierarchy
  • Etc

Pipi Engines to build, deploy and manage in the cloud

Mike's Notes

Finally got onto this job. Should be fun. 😊

Update 1

This is Infrastructure as Code (IaC). Get Pipi to generate the Terraform script.

Update 2

Don't use HCP Terraform Free Tier; it is being discontinued by IBM. Use an open-source product that Pipi can use internally without restriction to orchestrate cloud infrastructure.

  • OpenTofu + DIY Pipeline (Cloud Native Computing Foundation)
  • Terramate

The criticisms of Terramate

"Adopting Infrastructure as Code creates a new world of challenges

Terraform and OpenTofu lack standard code organization patterns, leading to code complexity, long-running pipelines, poor collaboration, drift, and high blast radii. Most vendors at best only partially mitigate these issues.

    • Poor environment management
    • Large blast radius
    • Config sprawl
    • Complex pipelines
    • Countless drift
    • Lack of observability

Pipi 9

The issues raised by Terramate could be handled natively by a yet-to-be-built Pipi Engine. Pipi excels at using standard code organisation patterns.

Resources

References

  • Reference

Repository

  • Home > Ajabbi Research > Library >
  • Home > Handbook > 

Last Updated

25/01/2026

Pipi Engines to build, deploy and manage in the cloud

By: Mike Peters
On a Sandy Beach: 30/11/2025

Mike is the inventor and architect of Pipi and the founder of Ajabbi.

The problem

The open-source workspaces under development are designed to be shared on GitHub/GitLab and hosted in production on various Cloud Platforms. Eventually, private cloud and on-premises will be included, provided Pipi 9 can obtain secure access. In that case, hybrid clouds should also be fine.

Pipi 9 needs to be able to automatically build, deploy, and manage this process, either directly or via third-party tools such as GitHub Actions.

Agent Engines

An early Pipi 6 module from 2016 that catalogued cloud services was converted to a Pipi 7 microservice in 2018. Yesterday, this was imported into Pipi 9 and is being used to create these agents, which act as autonomous engines.

  • Platform Engine (plt) - this one is the commander on the battlefield. I will get this finished first.
A dedicated agent engine has been created for each cloud platform. They have yet to be differentiated.
  • Apple Engine (ale)
  • AWS Engine (aws)
  • AZURE Engine (azu)
  • Digital Ocean Engine (dgo)
  • Google Cloud Engine (ggc)
  • IBM Engine (ibm)
  • Meta Engine (met)
  • Oracle Engine (ora)
  • (More will be added later; all are welcome)
Then I remembered: Pipi 9 also has some self-deployment capacity, so generalising the existing capacity for building, deploying, and managing to share with the other engines makes sense.
  • Pipi Engine (pip) - for deploying to the closed data centre in a Boxlang/JRE host environment.

How

Most agents start like a Stem Cell. They are then modified to perform a specific job and can evolve over time. That's what I'm doing now.

I started last night in the GCP console, looking into how to reverse-engineer the APIs and build a data model to drive the API calls. Looks straightforward. The Gemini 3 chat is a big help and saves significant time.

But wait, there's more.

Each agent engine is complex and can incorporate other agents like LEGO bricks. Example: API Engine (api) and YAML Engine (yml). Just as in a living biological cell, everything is structured, in flux and self-regulating in response to its environment and internal processes. Other agent types, like primitives, are not complex.

Free-tier experiments

The Engines will initially play in the free tier of the different cloud providers. The first experiments could use GitHub Actions, leveraging the sample code identified and building on it.

Known available free tiers (more to come)

  • Alibaba Cloud
  • AWS
  • Azure
  • Cloudflare
  • Container Hosting Service
  • Couchbase
  • DigitalOcean
  • Google Cloud
  • Hetzner Cloud
  • IBM Cloud
  • Linode
  • Netlify
  • OpenShift
  • Oracle Cloud
  • OVHcloud
  • Render
  • Salesforce
  • Tencent Cloud
  • Vercel
  • Wasabi
  • Zeabur

Cost $$$$$$$ 😎😎

The free-tier usage limits need to be locked to prevent Pipi from burning through lots of cash.

Cloud credits

If Ajabbi can obtain cloud credits, using the more expensive resources would be possible to ensure everything works for future customers. It would enable customers to choose their preferred cloud provider without barriers.

No Series B

Ajabbi is a bootstrap start-up for public good (with a future foundation) and will have no investors, so there will be no Series B. Unfortunately, these cloud providers are obsessed with giving more credits only to Series B start-ups. Go figure.

Stock numbers

Use more agent engines as the workload increases. So if, for example, IBM Engine (ibm) can handle 1,000 enterprise customers, and 10.000 enterprise customers want IBM cloud setups, then Platform Engine (plt) can get the Factory Engine (fac) to breed more IBM Engine (ibm) to nibble on the work. I won't know the actual stocking ratio until field testing under load. However, it won't be a problem. And some huge customers need a dedicated agent engine or two each. All of this is possible.

Developer Accounts

The Workspaces for Developers, currently under development, will enable developers to help configure these agent engines and keep them up to date. This will also allow any platform to add itself by submitting a request for a dedicated agent engine and its developers, who will help with configuration and user documentation.


From Gemini 3

A Terraform script, more accurately called a Terraform configuration file, uses the declarative HashiCorp Configuration Language (HCL) or JSON to define infrastructure that Terraform will provision, manage, and version across various cloud and on-premises providers. Terraform is an infrastructure as code (IaC) tool, not a programming or scripting language in the traditional, procedural sense. 

Core Concepts

  • Declarative Language: You describe the desired end state of your infrastructure, and Terraform automatically determines the steps required to achieve that state, including dependencies between resources.
  • Providers: Terraform interacts with cloud providers (like AWS, Azure, Google Cloud, etc.) and other services through "providers," which are plugins that wrap existing APIs.
  • Resources: These represent infrastructure objects, such as virtual machines, subnets, or DNS entries, and are defined within resource blocks in the configuration file.
  • State: Terraform maintains a terraform.tfstate file to track the current state of your managed infrastructure, which is crucial for determining what changes to make during an apply operation. 

A Basic Terraform Configuration Example (AWS)

The configuration below defines a simple AWS EC2 instance. This would typically be saved as a .tf file (e.g., main.tf): 

hcl
# Define the required provider and minimum Terraform version
terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 5.0"
    }
  }
  required_version = ">= 1.7"
}
# Configure the AWS provider with a specific region
provider "aws" {
  region = "us-west-2"
}
# Define an AWS VPC resource
resource "aws_vpc" "example" {
  cidr_block = "10.0.0.0/16"
  tags = {
    Name = "example-vpc"
  }
}
# Define an output value to display the VPC ID after creation
output "vpc_id" {
  description = "The ID of the created VPC"
  value       = aws_vpc.example.id
}

 

Key Workflow Commands

Once you have a configuration file, you use the Terraform CLI to manage your infrastructure: 

  • terraform init: Prepares your working directory, downloading the necessary provider plugins.
  • terraform plan: Shows a detailed execution plan of what changes Terraform will make to your infrastructure to match your configuration.
  • terraform apply: Executes the planned actions to create, update, or delete infrastructure resources.
  • terraform destroy: Deletes all the infrastructure resources managed by your Terraform configuration. 

For more information, refer to the official HashiCorp Terraform documentation. 

Further UI customisation

Mike's Notes

Something I figured out last night. This will be very easy to implement.

Resources

  • Resource

References

  • Reference

Repository

  • Home > Ajabbi Research > Library >
  • Home > Handbook > 

Last Updated

25/09/2025

Further UI customisation

By: Mike Peters
On a Sandy Beach: 25/09/2025

Mike is the inventor and architect of Pipi and the founder of Ajabbi.

Enterprise Account

The various Ajabbi Appl UI will come out of the box with industry-standard language strings used for terms in the ribbon, menus, controls, navigation, and other elements. However, the option of customising these strings will be available for all Enterprise accounts.

These changes can be saved as a template, shared and applied to any owned Deployment Workspace. The underlying terms still remain and can be easily restored.

Healthcare example

In healthcare, SNOMED provides a comprehensive list of terms, ensuring that any healthcare app utilises these terms. But an Enterprise account will be able to override any of these terms. This may be necessary if SNOMED is currently being implemented to replace an existing system. Another example would be healthcare not covered by SNOMED.

RBAC causes a change to the Deployment Engine

Mike's Notes

Building out RBAC is leading to other changes in Pipi.

Resources

References

  • Reference

Repository

  • Home > Ajabbi Research > Library >
  • Home > Handbook > 

Last Updated

12/09/2025

RBAC causes a change to the Deployment Engine

By: Mike Peters
On a Sandy Beach: 09/09/2025

Mike is the inventor and architect of Pipi and the founder of Ajabbi.

Using RBAC to redesign the Pipi security model has led to some changes in other Engines. 

User Account

A User Account has one or more Deployments. 

Deployment

A Deployment is a container for one or more Workspaces. A deployment has these properties;

  • ID
  • Code Name
  • Name
  • Description
  • One language (eg English)
  • One User Account
  • One Deployment Class (type of tenancy)

Those properties are inherited by all workspaces.

Workspace

A workspace has these properties;

  • ID
  • Code Name
  • Name
  • Description
  • One inherited language (eg English)
  • One inherited User Account
  • One Deployment
  • One pre-built Domain Model (eg, Screen Production).
  • One Domain Model Template (eg, Feature Film, Documentary, Live Broadcast), These templates can be customised and shared.

Those properties are inherited. This means each Workspace/Domain Model comes with its own set of prebuilt Security Roles, Security Profiles

Security Role

A security role has these properties;

  • ID
  • Code Name
  • Name
  • Description
  • One User Account Class ( eg, Pipi, Enterprise, DevOps, SME, User)
  • One language (eg, English, French, Hebrew)
  • One Domain Model (eg, health, website, sewerage, public transport, art gallery).

Domain Model

Here is an example of Domain Model properties;

  • Domain Model/Workspace: Website
  • Domain Model Function: create CNAME, delete CNAME
  • Security Role: Webmaster, Editor, Visitor
  • Security Profile: DNS Registry, Website, Design System, CDN

The internal control hierarchy of Pipi

Mike's Notes

I'm writing up some notes on current work driven by a teaching customer.

i18n

  • For Languages, a 3-letter string is added. e.g. eng for English and mri for Maori.
  • For Writing Scripts (alphabets), a 4-letter string is added for the script. e.g. latn for Latin.
  • For Locales, a 2-letter capitalised string is added. e.g. eng-GB for English spoken in the UK, eng-US for English spoken in the United States.

Resources

References

  • Reference

Repository

  • Home > Ajabbi Research > Library >
  • Home > Handbook > 

Last Updated

11/04/2026

The internal control hierarchy of Pipi

By: Mike Peters
On a Sandy Beach: 02/09/2025

Mike is the inventor and architect of Pipi and the founder of Ajabbi.

Pipi is a self-organising system. Self-regulating constraints are operating on internal models. There are numerous internal hierarchies of control within Pipi, with properties that are inherited, including multi-inheritance.

Examples include;

  • Class packages: eg, namespace
  • Nested systems: eg, Account > Deployment > Deployment Object > Publication > Website > Workspace
  • Schema, ontologies, etc: eg, SNOMED, MovieLab
  • Design systems: eg, Account > Design System > Component > Design Token

Descriptions

Pipi Nest

Each account can only be in a single nest

  •  <pipi major version><pipi edition><account type>

Account

Every customer or user has an account, which is opened when they sign up.

A customer account has these properties;

  • One account type.
  • Contains one or more deployments.

Account types:

Each account type comes with different options. Enterprise has the most options, and Individual has the least.

  • DevOps (paid).
  • Enterprise (paid).
  • Individual (free).
  • Pipi (paid)
  • Researcher (paid)
  • SME (paid).
  • Temp (free)

Deployment

A deployment has these properties;

  • One deployment tenancy type.
  • One language.
  • Contains one or more deployment objects.
  • Can contain other deployments to create global settings for an account (Enterprise or DevOps).

Deployment tenancy types:

  • Exclusive tenancy
  • Shared tenancy
  • Multi-agent

Deployment Object

A deployment object has these properties;

  • One deployment object type

Deployment Object Types:

Used by the administrator through configuration settings.

  • Billing
  • Datasource
  • Folders
  • Permission
  • Plugin
  • Publication
  • Usage
  • Users and Groups
  • etc

    Publication

    All publications are created by the Content Management System (CMS).

    A publication has these properties;

    • One publication type.
    • It can be combined to build a whole system.
    Publication Types
    • Code
    • CSS
    • Database
    • Deployment
    • Email Newsletter
    • Notebook (Jupyter, etc)
    • PDF
    • Website
    • XML
    • etc

    Website

    A website has these properties;

    • One language. 
    • One website type.
    • Can be combined with other websites (to become a multi-language website).
    Website types
    • API (Endpoints)
    • Docs (like JavaDocs)
    • Help
    • Website (standard)
    • Wiki
    • Workspace (enterprise applications)
    • etc

    Example

    ASCI internal names are automatically provided by Pipi. A customer can choose different public names for URLs.

    An example control hierarchy;

    Pipi Nest > Account > Deployment > Deployment Object > Publication > Website > Workspace.

    Inheritance Internal name Examples
    Pipi Nest Pipin Nest:
    <pipi major version><pipi edition><account type>
    9ae
    Account <ASCI characters> ajabbi
    Deployment <Account>-<4 Digit>-<Locale> ajabbi-0001-eng-latn-uk
    Deployment Object <Deployment>-<ObjectType> ajabbi-0001-eng-latn-uk-pub
    Publication <Deployment Object>-<Publication Type> ajabbi-0001-eng-latn-uk-pub-cde
    ajabbi-0001-eng-latn-uk-pub-dta
    ajabbi-0001-eng-latn-uk-pub-wbs
    Website <Domain> wiki.example.com/eng-latn/
    blog.example.com/en-nz/
    en.example.com/uk/
    workspace.example.com/eng/

    Enterprise plan directory structure

    Mike's Notes

    Pipi 9 is still highly experimental. I have been very busy over the last month working on the second deployment of Pipi 9 to production.

    • The first (dogfooding) is Ajabbi.com.
    • The second (pilot) is for a national disability rights organisation in NZ.

    The second has been very slow, mainly because it involved the migration of an existing website to a new one, which required careful consideration of the organisation's needs, including using 4 languages (English, Maori, NZ Sign Language, AAC), catering for screens-formats (mobile, desktop, braille, screenreaders, kiosk, TV), and personalised profiles to meet accessibility needs. There have been six months of extensive experimentation and user testing using a manually created 1,100-page static website prototype. Last week, the successful import of existing content into a CMS database was completed. The job now is to connect Pipi 9 to this database to automate future production of all website content.

    These notes are about the draft default directory structure for that website. All other 26 existing websites have now been migrated to use the same default structure.

    Update 30/03/2026

    Putting the data centre into production has resulted in some changes.

    Data directory for databases external to Pipi
    1. data/
    2. <Database Type>/ eg "pg"
    3. <Database Version No>/ eg "18"

    Pipi directory

    1. pipi/
    2. <Account type>/ eg "e"
    3. <Account Name>/ eg "ajabbi"
    Work directory for backups, etc
    1. work/

    Update 04/04/2026

    Pipi Robot added to description.

    Update 06/04/2026

    <major version><edition><account type>/ added to all configurations to standardise and simplify setups.

    Update 11/04/2026

    Pipi Nest is used as the name for the root config.

    Update 15/04/2026

    <account name(s)> AND <instance name(s)> both present.

    Resources

    References

    • Reference

    Repository

    • Home > Ajabbi Research > Library >
    • Home > Handbook > 

    Last Updated

    23/04/2026

    Enterprise plan directory structure

    By: Mike Peters
    On a Sandy Beach: 18/08/2025

    Mike is the inventor and architect of Pipi and the founder of Ajabbi.

    This is the current default directory configuration for enterprise plan customer accounts. It should also work for the digital twins in the Pipi 9 data centre.

    The account administrator can edit the configuration file to easily change the location of these key directories for a particular cloud host.

    • AWS
    • Azure
    • GCP
    • IBM
    • Oracle
    • etc. 

    On a public-facing website, all of this would be obfuscated using UUIDs, hidden keys, etc.

    Pipi Robot

    The hidden robot contains most of the complex systems and functions and acts as the super-administrator, thereby simplifying enterprise applications.

    Configuration File

    /9ae/ (Pipi Nest)

    • pipi_nest_probe.cfm
    • data/
      • couchbase/
      • db2/
      • derby/
      • h2/
      • hsqldb/
      • informix/
      • mariadb/
      • msaccess/
        • 32/
        • 64/
      • mssql/
      • mysql/
      • oracle/
      • pg/
        • 18/
      • sqllite/
      • sybase/
      • virtuoso/
    • pipi/
      • Application.cfc (1) - Nest settings
      • pipi_nest.cfm
      • ajabbi/ (Account Name)
        • Application.cfc (2) - Account settings
        • pipi_account.cfm
        • com/
        • dat/
        • lib/
        • log/
        • plu/
        • tmp/
        • www/
          • learn.ajabbi.com/
            • Application.cfc (4) - Website settings
          • wiki.ajabbi.com/
            • Application.cfc (4) - Website settings
      • dis-01/ (Instance)
      • ...
      • dis-04/ (Instance)
        • Application.cfc (2) - Account settings
        • pipi_account.cfm
        • pip/
          • Application.cfc (3) - Version settings
          • pipi_version.,cfm
          • i18n/
          • log/
          • pipi_<pipi version>.txt
          • sys/
          • temp/
          • template/
            • _include/
            • _layout/
              • _log/
        • www/
          • mission-control/
            • Application.cfc (4) - Website settings
    • work/
      • backup/
      • install/
      • project/

      Descriptions


      Directory Example Description
      <major version><edition><account type> 9ae/ Pipi Nest:
      Major version = 9
      Edition = a (Pipi Application)
      Account type = e (Enterprise).
      <account name> ajabbi/ User account codename (lowercase, unique ASCII).
      com com/ Open-source code packages from GitHub.
      dat dat/ Customer data.
      lib lib/ Code libraries.
      log log/ Logs.
      plu plu/ Open-source plugins.
      tmp tmp/ Temporary files.
      www www/ All websites.
      <website> wiki.ajabbi.com/ A website (domain name).
      <instance name> dis-01/ Pipi instance name (retired deity, lowercase, unique ASCII).

      The Most Popular Deployment Strategies Explained.

      Mike's Notes

      Another great visual explanation from Nikki Siapno, who writes the weekly Level Up Coding newsletter. It's worth subscribing to.

      Resources

      References

      • Reference

      Repository

      • Home > Ajabbi Research > Library > Subscriptions > Level Up Coding
      • Home > Handbook > 

      Last Updated

      30/04/2025

      The Most Popular Deployment Strategies Explained.

      By: Nikki Siapno
      Level Up Coding: 27/04/2025

      Nikki Siapno, is an Engineering Manager at Canva and founder of Level Up Coding.

      Using the right deployment strategy is crucial for seamlessly integrating new features and updates. It reduces the risks, avoids interruptions, and delivers a smooth user experience.

      There are many possible approaches, let's look at 5 of the most popular deployment patterns:

      Blue/Green Deployment

      Renowned for zero downtime, this method uses two environments, Blue and Green. One hosts the live version while the other tests the new version.

      After comprehensive testing without affecting live traffic, users are transitioned to the updated environment.

      If an issue is discovered after switching environments, it is relatively easy to switch back.

      The main challenge is the cost and complexity of managing two environments.

      Canary Deployment

      Named after canary birds in mines, it starts by rolling out changes to a small subset of users.

      This allows for monitoring performance and gathering feedback.

      If successful, you gradually extend the update to more users.

      It excels in minimizing user impact during updates due to isolation of a small set of users.

      Rolling Deployment

      Updates software in phases, rather than all at once.

      It incrementally upgrades different segments of the system, ensuring most of it remains operational during the deployment.

      It can be ideal for critical systems that require continuous operation.

      However, it extends the total update time and might introduce temporary inconsistencies.

      Feature Toggles

      Think of feature toggles as on-off switches for new features.

      They allow teams to deploy features quietly, turning them on for specific users when it makes sense.

      Feature toggles support strategies like canary releases and A/B testing.

      The challenge lies in managing numerous toggles, which can become complex and risk feature conflicts.

      A/B Testing

      Comparable to a scientific experiment, A/B testing offers two variations of a feature to different user groups to gauge which performs better.

      It's a go-to for validating user preference and effectiveness of new features, based on concrete data like user engagement or ease of use.

      Each deployment pattern stands out for specific strengths:

      • Blue/Green for safety and zero downtime.
      • Canary for controlled, low-risk rollouts.
      • Rolling for maintaining continuous operations.
      • Feature Toggles for flexible feature management.
      • A/B Testing for data-driven user insights.

      The right deployment strategy varies depending on the project's needs and objectives. Recognizing these differences allows teams to choose the best approach for a successful and user-centric software release.

      OpenNebula Conference

      Mike's Notes

      This might be very useful later for Pipi to deploy onto server farms. OpenNebula is an excellent alternative to VMware.

      There is a free community edition and paid subscriptions. An enterprise subscription looks promising. Managed services are also available.

      Playbooks

      It uses playbooks which can drive Ansible when deploying. 

      "Playbooks are YAML files that store lists of tasks for repeated executions on managed nodes. Each Playbook maps (associates) a group of hosts to a set of roles. Each role is represented by calls to Ansible tasks." - Wikipedia

      Example of a playbook code at the bottom

      Options

      It can do "heterogeneous data centre, public cloud and edge computing infrastructure resources".

      Conferences

      "Born back in 2013, OpenNebula Conferences are educational events that serve as a meeting point of cloud users, developers, administrators, integrators and researchers, featuring talks with experiences and use cases. They also include Hands-on tutorials, workshops, and hacking sessions that provide an opportunity to discuss burning ideas, and meet face to face to discuss development. Previous speakers include Telefonica, Booking.com, Innologica, King, Nordeus, StorPool, Santander Bank, CentOS, European Space Agency, FermiLab, Puppet, Red Hat, BlackBerry, Akamai, Runtastic, Citrix, Trivago… and many more." ... OpenNebula

      Resources

      References

      • Reference

      Repository

      • Home > Ajabbi Research > Library >
      • Home > Handbook > 

      Last Updated

      17/05/2025

      OpenNebula

      Wikipedia:

      OpenNebula is an open source cloud computing platform for managing heterogeneous data center, public cloud and edge computing infrastructure resources. OpenNebula manages on-premises and remote virtual infrastructure to build private, public, or hybrid implementations of infrastructure as a service (IaaS) and multi-tenant Kubernetes deployments. The two primary uses of the OpenNebula platform are data center virtualization and cloud deployments based on the KVM hypervisor, LXD/LXC system containers, and AWS Firecracker microVMs. The platform is also capable of offering the cloud infrastructure necessary to operate a cloud on top of existing VMware infrastructure. In early June 2020, OpenNebula announced the release of a new Enterprise Edition for corporate users, along with a Community Edition. OpenNebula CE is free and open-source software, released under the Apache License version 2. OpenNebula CE comes with free access to patch releases containing critical bug fixes but with no access to the regular EE maintenance releases. Upgrades to the latest minor/major version is only available for CE users with non-commercial deployments or with significant open source contributions to the OpenNebula Community. OpenNebula EE is distributed under a closed-source license and requires a commercial Subscription.

      ...

      OpenNebula orchestrates storage, network, virtualization, monitoring, and security technologies to deploy multi-tier services (e.g. compute clusters) as virtual machines on distributed infrastructures, combining both data center resources and remote cloud resources, according to allocation policies. According to the European Commission's 2010 report "... only few cloud dedicated research projects in the widest sense have been initiated – most prominent amongst them probably OpenNebula ...".

      The toolkit includes features for integration, management, scalability, security and accounting. It also claims standardization, interoperability and portability, providing cloud users and administrators with a choice of several cloud interfaces (Amazon EC2 Query, OGF Open Cloud Computing Interface and vCloud) and hypervisors (VMware vCenter, KVM, LXD/LXC and AWS Firecracker), and can accommodate multiple hardware and software combinations in a data center.

      OpenNebula is sponsored by OpenNebula Systems (formerly C12G).

      OpenNebula is widely used by a variety of industries, including cloud providers, telecommunication, information technology services, government, banking, gaming, media, hosting, supercomputing, research laboratories, and international research projects[citation needed].

      ...

      Internal architecture

      Basic components

      OpenNebula Internal Architecture

      • Host: Physical machine running a supported hypervisor.
      • Cluster: Pool of hosts that share datastores and virtual networks.
      • Template: Virtual Machine definition.
      • Image: Virtual Machine disk image.
      • Virtual Machine: Instantiated Template. A Virtual Machine represents one life-cycle, and several Virtual Machines can be created from a single Template.
      • Virtual Network: A group of IP leases that VMs can use to automatically obtain IP addresses. It allows the creation of Virtual Networks by mapping over the physical ones. They will be available to the VMs through the corresponding bridges on hosts. Virtual network can be defined in three different parts:
        1. Underlying of physical network infrastructure.
        2. The logical address space available (IPv4, IPv6, dual stack).
        3. Context attributes (e.g. net mask, DNS, gateway). OpenNebula also comes with a Virtual Router appliance to provide networking services like DHCP, DNS etc.

      Playbook example (YAML)

      (one-deploy-py3.12) front-end:~/my-one$ ansible-playbook -v opennebula.deploy.main

      Using /home/basedeployer/my-one/ansible.cfg as config file

      running playbook inside collection opennebula.deploy

      [WARNING]: Could not match supplied host pattern, ignoring: bastion


      PLAY [bastion] *******************************************************************************************

      skipping: no hosts matched

      [WARNING]: Could not match supplied host pattern, ignoring: grafana

      [WARNING]: Could not match supplied host pattern, ignoring: mons

      [WARNING]: Could not match supplied host pattern, ignoring: mgrs

      [WARNING]: Could not match supplied host pattern, ignoring: osds


      PLAY [frontend,node,grafana,mons,mgrs,osds] **************************************************************


      TASK [opennebula.deploy.helper/python3 : Bootstrap python3 intepreter] ***********************************

      skipping: [f1] => changed=false

        attempts: 1

        msg: /usr/bin/python3 exists, matching creates option

      skipping: [n2] => changed=false

        attempts: 1

        msg: /usr/bin/python3 exists, matching creates option

      skipping: [n1] => changed=false

        attempts: 1

        msg: /usr/bin/python3 exists, matching creates option


      ...


      TASK [opennebula.deploy.prometheus/server : Enable / Start / Restart Alertmanager service (NOW)] *********

      skipping: [f1] => changed=false

        false_condition: features.prometheus | bool is true

        skip_reason: Conditional result was False


      PLAY [grafana] *******************************************************************************************

      skipping: no hosts matched


      PLAY RECAP ***********************************************************************************************

      f1                         : ok=84   changed=33   unreachable=0    failed=0    skipped=75   rescued=0    ignored=0

      n1                         : ok=37   changed=12   unreachable=0    failed=0    skipped=57   rescued=0    ignored=0

      n2                         : ok=37   changed=12   unreachable=0    failed=0    skipped=48   rescued=0    ignored=0

      Deploying infrastructure by CI-CD

      Mike's Notes

      I need a way to automate cloud deployments to handle scaling. I had toyed with the idea of training Pipi to do it. But I read a great article on Medium about using Jenkins with Terraform on GCP.

      Pipi could get the CMS engine to generate the configuration files in that case. Jenkins could execute them, with Terraform deploying open-source PIPI applications from GitHub to GCP and handling user-specific requirements. Well, that's a plan (plans do change !).

      Hopefully, Pipi will be able to communicate with Jenkins via an API.

      The rest of the article gives detailed instructions on how to do this. Jenkins and Terraform will work with and can be hosted on all the major cloud providers.

      • AWS
      • Azure
      • GCP
      • IBM
      • Digital Ocean

      They can also be installed locally on 

      Resources

      References

      • Reference

      Repository

      • Home > Ajabbi Research > Library >
      • Home > Handbook > 

      Last Updated

      17/05/2025

      GCP-How to deploy your infrastructure with CI/CD pipeline using Terraform?

      By: Sumit L
      Medium: 10/02/2023

      Jenkins is an open-source automation tool for Continuous Integration (CI) and Continuous Deployment (CD). It is a server-based system that runs in servlet containers like Apache Tomcat. Jenkins is one of the most used DevOps and other cloud-native tools, allowing developers to build, test and deploy software seamlessly.

      Terraform is an open-source infrastructure as a code software tool that enables you to create, change, and improve infrastructure safely and predictably.

      Git is a free and open-source version control system used to handle that handles small to massive projects efficiently. Git tracks changes in the source code, enabling multiple developers to work together on non-linear development.

      In this tutorial, We will deploy our infrastructure (VPC and Subnet) with Terraform but with a CI/CD approach. We will basically integrate Terraform into a generic deployment pipeline. Simply put, We are asking Jenkins to perform terraform-related operations on behalf of humans and bring automation to make your life easier. So, you will write a code in your local machine and push these codes to the source repository GitHub. The Jenkins server (which is running in Google Cloud) will fetch this repo, perform automation and deploy your infrastructure in GCP. Refer to the below diagram, and let’s get straight on to the demo.


      ... continued