Hi,
yes, you will need exported resources, and it won't be an easy
design at all.
I imagine it would work roughly like this (assuming Agent 1 runs
central_server and Agents 2 and 3 run slave_server instances).
Sketch of the manifest for the central server:
class central_server {
concat { '/etc/server_config': ... }
Central_server_snippet<<| tag == 'this-cluster'
|>>
}
define central_server_snippet($slave_name) {
concat::fragment { "central-server-$name":
target => '/etc/server_config',
content => "something-with $slave_name\n";
}
@@slave_server_snippet { "for-$name": content =>
"something-with $ipaddress" }
}
The slave servers do:
class slave_server {
@@central_server_snippet { "$fqdn": slave_name =>
"$hostname" }
Slave_server_snippet<<| title == "for-$fqdn" |>>
}
The idea being that the central server will not export its
settings to the slaves before they have exported their respective
names to him.
Untested and incomplete. YMMV.
Cheers,
Felix