Draft: Issues when deploying on an IPv6 only environment
<!-- For new feature requests, please check if the feature follows our Technical Design guidelines - https://gitlab.com/gitlab-org/gitlab-environment-toolkit/-/blob/main/TECHNICAL_DESIGN.md#integrations-list. -->
<!-- For bugs, please fill in details about your GET configuration:
- GET version:
- Cloud Provider: GCP/AWS/Azure/Other
- Environment configuration:
Before raising a bug, please read through our Troubleshooting guide to determine if it's a known issue - https://gitlab.com/gitlab-org/gitlab-environment-toolkit/-/blob/main/docs/environment_troubleshooting.md.
-->
## Problem Statement
A customer trying to install GitLab HA in an IPv6-only (NO dual-stack) environment using the GitLab Environment Toolkit (GET) faced multiple compatibility issues with hardcoded IPv4 settings.
## Current Issues
### 1. Hardcoded IPv4 addresses in GET configurations
Several configuration values are hardcoded to IPv4 addresses and need IPv6 equivalents:
- `node_exporter['listen_address']` is set to `0.0.0.0:9100` → needs `[::]:9100` for IPv6
- `postgresql['listen_address']` is set to `0.0.0.0` → needs `[::]` for IPv6
- `127.0.0.1` → needs `::1` for IPv6
**Current workaround**: These settings can be adjusted by providing custom `gitlab_configs` in GET, but this is not ideal.
### 2. Issue in omnibus-gitlab patroni template
The main blocker is in the patroni configuration template in omnibus-gitlab:
https://gitlab.com/gitlab-org/omnibus-gitlab/-/blob/master/files/gitlab-cookbooks/patroni/templates/default/patroni.yaml.erb#L13
**Problem**: Line 13 merges the postgres listen address and port together. For IPv4 (`0.0.0.0:5432`) this works fine, but for IPv6 (`[::]:5432`) it causes YAML parsing errors:
```
2025-09-23_05:27:26.42434 yaml.parser.ParserError: while parsing a flow node
2025-09-23_05:27:26.42435 expected the node content, but found ':'
2025-09-23_05:27:26.42435 in "/var/opt/gitlab/patroni/patroni.yaml", line 14, column 12
```
**Root cause**: The generated YAML looks like:
```yaml
postgresql:
listen: [::]:5432
```
Since the IPv6 address isn't properly quoted (`"[::]:5432"`), the YAML parser interprets the brackets as a list syntax.
### 3. Hardcoded IPv4 Ansible facts
GET uses hardcoded IPv4 Ansible facts that don't work in IPv6-only environments.
**Current workaround**: The customer had to add this playbook before running the installation playbook:
```yaml
- name: Adjust IPv4 facts
hosts: all:!get_ignored
gather_facts: true
tasks:
- name: Override ansible_default_ipv4.address with IPv6 address
set_fact:
ansible_default_ipv4:
address: "{{ ansible_default_ipv6.address }}"
```
<!-- Set Work Type label(s) for the Issue - https://about.gitlab.com/handbook/engineering/metrics/#work-type-classification -->
<!-- Note: Only one subtype should be selected -->
issue