Chef Server's all-or-nothing IPv6 configuration is problematic
Nobody has claimed this yet.
- Dominant language
- Erlang
- Stars
- 303
- Forks
- 211
- Avg merge
- 1d 8h
- Merged PRs (30d)
- 5
Description
Currently, to support IPv6, we've provided users with a single configuration option:
ip_version
This configuration option has an impact on a variety of different internal service configuration options. As a result, it is very difficult to support a mixed environment. Such mixed environments might be especially more common for users that are using external PostgreSQL or external Elasticsearch.
We should investigate how much of this ip-version-specific configuration we can simply remove. Ideally, I would like the following behavior:
-
The user does not specify any particular IP version configuration by default. If an IPv6 address is used as an IP address in their chef-server.rb, then the correct configuration is generated automatically. If the user specifies hostnames, then we prefer the IPv4 address returned for that name if it exists.
-
We provide a new set of configuration items items that would allow you to express the following ideas:
-
prefer_ipv4: Prefer IPv4 to IPv6, but use IPv6 if that is all that is available (the default) -
prefer_ipv6: Prefer IPv6 to IPv4, but use IPv4 addresses if that is all that is available. -
only_ipv6: Only allow IPv6 (perhaps with an exclusion for 127.0.0.1) -
only_ipv4: Only allow IPv4
We should research how other tools handle this configuration to provide a set of options that feel ergonomic to our users.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by tracing where the ip_version setting affects Chef Server's internal service configuration, then compare how other tools express IPv4 and IPv6 preferences. Document which existing settings can be removed and define an ergonomic configuration set covering preferred and exclusive address families, including hostname resolution and the 127.0.0.1 exception.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- erlang
- Domain
- networking
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100