Skip to content

Draft: Issues when deploying on an IPv6 only environment

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:

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:

- 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 }}"
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information