Host Provisioning
Create VMs and manage configuration with Puppet
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:
- Create a Puppet module and push it to GitLab
- Run the pipeline on the module project
- Associate your server to the class
- 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-branchGitLab will run the test pipeline (syntax, tests). When it succeeds:
- Increment the release in
metadata.json - Commit and push to your feature branch
- Open the Merge Request link from the push output
- 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 optionsBefore 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.
| Platform | URL |
|---|---|
| Sandbox EMEA | https://foreman.core.sandbox.emea.giservices.io |
| Sandbox APAC | https://foreman.core.sandbox.apac.giservices.io |
| Preprod EMEA | https://foreman.core.preprod.emea.giservices.io |
| Preprod APAC | https://foreman.core.preprod.apac.giservices.io |
| Prod EMEA | https://foreman.core.emea.giservices.io |
| Prod APAC | https://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.