Global InfraGlobal Infra Cloud

Host Provisioning

Create VMs and manage configuration with Puppet

Edit

Create a VM

Virtual machines are provisioned through the Compute service. See the Compute service documentation for details.

Configuration Management with Puppet

Creating a Puppet Module

To manage your server configuration, you need to create a Puppet module:

  1. Create a Puppet module and push it to GitLab
  2. Run the pipeline on the module project
  3. Associate your server to the class
  4. Apply the changes on the host

Puppet Module Creation

Use the Puppet development guide to create your module. Review policies before you start.

Pipeline Workflow

After adding code and tests, commit and push:

git add <files>
git commit -m "my-branch: description of changes"
git push origin my-branch

GitLab will run the test pipeline (syntax, tests). When it succeeds:

  1. Increment the release in metadata.json
  2. Commit and push to your feature branch
  3. Open the Merge Request link from the push output
  4. Create a MR on the master branch

Only maintainers can validate the Merge Request. Once merged, the pipeline will run tests, create a Git tag, build the artifact, and push it. Sandbox is applied automatically; preprod and prod require manual deployment per datacenter.

Associate Your Server to a Class

In your $namespace/giservices/$region/compute/xxxx project, find your host in the .tf files and add the ingenico_classes tag:

module "myhost0101e1" {
  source   = "compute/vm/compute"
  hostname = "myhost0101e1"
  # ...
  tags = {
    ingenico_ecosystem = "databases"
    ingenico_component = "sql"
    ingenico_instance  = "01"
    ingenico_classes   = "myclass1, myclass2"
  }
}

Run the pipeline and verify Terraform changes are applied correctly.

Apply Changes

Changes are applied automatically every 30 minutes, or you can use the pat command on your server:

pat        # Apply Puppet changes now
pat -h     # Show help for more options

Before manually applying any change in a pipeline (infrastructure, monitoring, puppet, etc.), you must review the previous stage to ensure only expected changes will be applied.

Infrastructure

Foreman

When an environment is created, you get read-only Foreman access to view your host definitions. No direct changes are allowed — they must go through your Git repositories.

PlatformURL
Sandbox EMEAhttps://foreman.core.sandbox.emea.giservices.io
Sandbox APAChttps://foreman.core.sandbox.apac.giservices.io
Preprod EMEAhttps://foreman.core.preprod.emea.giservices.io
Preprod APAChttps://foreman.core.preprod.apac.giservices.io
Prod EMEAhttps://foreman.core.emea.giservices.io
Prod APAChttps://foreman.core.apac.giservices.io

DNS VIP (Virtual IP)

To get a VIP, add the following in your infrastructure Git repository:

module "vip_my-first-dns-vip-record" {
  source      = "git::ssh://git@gitlab.global.ingenico.com/global/terraform/modules/dns_vip.git"
  name        = "my-first-dns-vip-record"
  vip_network = data.terraform_remote_state.automation.outputs.overlay_network
  vip_domain  = data.terraform_remote_state.automation.outputs.overlay_domain
}

This reserves a free IP address in your overlay subnet and creates the DNS A/PTR record in your overlay DNS zone.

On this page