bluechi.conf(5)
π bluechi.conf β the manual page, but make it make sense π
okay bestie, gather round, because this is the config file that bootstraps bluechi-controller. it's bluechi.conf(5), it lives in the File Formats Manual (section 5, very demure, very official), and it's genuinely not that deep once you read it. let's go π«Ά
β¨ NAME β¨
bluechi-controller.conf β the configuration file you use to bootstrap bluechi-controller. that's it. that's the name. π
πΈ DESCRIPTION πΈ
This is the basic file definition used to bootstrap bluechi-controller. like, the starter pack. the foundation. the blueprint. π
π Format π
The bluechi-controller config file uses the systemd configuration file format (https://www.freedesktop.org/software/systemd/man/systemd.syntax.html). iconic of it, honestly.
But β and this is the plot twist β you do not need the \ symbol at the end of a line to continue a value onto the next line. nope! A value continued over multiple lines just gets concatenated by bluechi. effortless. β¨
The maximum line length supported is 500 characters. If your value goes over that limit, use multiple, indented lines. don't fight it, just indent. π
Global options for the bluechi controller live in the [bluechi-controller] section. And on top of that, sections named [node NODENAME] let you set options that are specific to one particular node. per-node customization? we love to see it. π
π Global options π
UseTCP(string) β if this flag is set totrue, it turns on the connection handler so agents can connect remotely via TCP/IP to the controller. if it's disabled, all the other TCP options β likeControllerPortorTCPKeepAliveTimeβ just don't get used. the TCP handler can run alongside the handler for local connections (Unix Domain Socket) and the systemd socket activated handler. Default:true.UseUDS(string) β if this flag is set totrue, it turns on the connection handler so agents can connect locally via Unix Domain Socket (UDS) to the controller. the UDS handler can run alongside the handler for remote connections (TCP/IP) and the systemd socket activated handler. Default:true.ControllerPort(uint16_t) β the portbluechi-controllerlistens on to establish connections with thebluechi-agent. by default, port 842 is used.AllowedNodeNames(string) β a comma separated list of uniquebluechi-agentnames. only nodes whose names show up in this list β or nodes withAllowed=truein their own separate node section β can connect tobluechi-controller. these names are defined in the agent's configuration file under theNodeNameoption (seebluechi-agent.conf(5)).HeartbeatInterval(long) β the interval for periodically checking a node's connectivity, based on heartbeat signals sent to bluechi, in milliseconds. a value of0disables it.NodeHeartbeatThreshold(long) β the threshold, in milliseconds, used to determine whether a node is disconnected. if the node's last heartbeat signal was received before this threshold, bluechi assumes the node is down or the connection was cut off, and it performs a disconnect. bye bestie πLogLevel(string) β the level used for logging. supported values are:DEBUGINFOWARNERROR
by default, the INFO level is used for logging.
LogTarget(string) β the target where logs are written to. supported values are:stderrstderr-fulljournald
by default, journald is used as the target.
LogIsQuiet(string) β if this flag is set totrue, no logs are written by bluechi. by default the flag is set tofalse. (so yeah, default = it talks. a lot. π)IPReceiveErrors(string) β if this flag is set totrue, it enables extended, reliable error message passing for the peer connection with all agents. this means BlueChi receives errors like host unreachable ICMP packets instantly and possibly drops the connection. super useful for detecting disconnects faster, but use it with care β it might cause unnecessary disconnects in less robust networks. Default:true.TCPKeepAliveTime(long) β the number of seconds an individual TCP connection with an agent needs to be idle before keepalive packets are sent. whenTCPKeepAliveTimeis set to0, the system default will be used. Default:1s.TCPKeepAliveInterval(long) β the number of seconds between each keepalive packet. whenTCPKeepAliveIntervalis set to0, the system default will be used. Default:1s.TCPKeepAliveCount(long) β the number of keepalive packets without an ACK from an agent until the individual connection is dropped. whenTCPKeepAliveCountis set to0, the system default will be used. Default:6.
π¦ Per-node options π¦
Allowed(boolean) β iftrue, the node with this section name is allowed to connect. seeAllowedNodeNamesabove. πRequiredSelinuxContext(string) β if set, the connecting node process must have the specified SELinux type label. typically, for local connections, these would bebluechi_agent_torhaproxy_t.
Note: this option only works when the agent connects using unix domain sockets. π§
AllowDependenciesOn(string) β a comma separated list ofbluechi-agentnames on which the configured node can request services to be started withbluechi-proxy@.service. by default, this list is empty, and thus all proxies are denied. no cap. the names are defined in the agent's configuration file under theNodeNameoption (seebluechi-agent.conf(5)).
β Example β
A basic example of a configuration file for bluechi:
[bluechi-controller]
ControllerPort=842
AllowedNodeNames=agent-007,agent-123
LogLevel=DEBUG
LogTarget=journald
LogIsQuiet=false
Example with specific configuration for node agent-009:
[bluechi-controller]
AllowedNodeNames=agent-007,agent-123
[node agent-009]
Allowed=true
RequiredSelinuxContext=haproxy_t
AllowDependenciesOn=agent-007
Example using a value that is continued on multiple lines:
[bluechi-controller]
ControllerPort=842
AllowedNodeNames=agent-007,
agent-123,
agent-456,
agent-789
LogLevel=DEBUG
LogTarget=journald
LogIsQuiet=false
see how clean that is?? no backslashes needed. main character formatting behavior. π β¨
π FILES π
Distributions provide the /usr/share/bluechi/config/controller.conf file, which defines bluechi configuration defaults. administrators can copy this file to /etc/bluechi/controller.conf and specify their own configuration. copy-paste and customize, the classic. π«Ά
Administrators can also use a "drop-in" directory at /etc/bluechi/controller.conf.d to drop their configuration changes. such drop-ins are especially useful for per-node configuration, since they can extend the list of available nodes without modifying the base configuration file. chef's kiss. π
π₯ SEE ALSO π₯
bluechi-controller(1)https://github.com/eclipse-bluechi/bluechi/blob/main/doc/man/bluechi-controller.1.md
and that's the whole page bestie, you ate it π this was bluechi.conf(5) from the File Formats Manual, section 5, brought to you by the bluechi project. now go write a config that slays. πβππ¦
π¦ where this page comes from
- fedora 43: bluechi-controller 1.1.0-3.fc43 Β· LGPL-2.1-or-later AND CC0-1.0
- fedora 43: bluechi-controller 1.3.0-1.fc43 Β· LGPL-2.1-or-later AND CC0-1.0
- fedora 44: bluechi-controller 1.2.2-1.fc44 Β· LGPL-2.1-or-later AND CC0-1.0
- fedora 44: bluechi-controller 1.3.0-1.fc44 Β· LGPL-2.1-or-later AND CC0-1.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms