I assume PuppetDB already configured and Apache installation, configuration and service class is already available.
Lets say we have 3 nodes
1st Node1 - > Load Balancer
2nd Node2 -> Load Balancer Member
3rd Node3 -> Load Balancer Member
For Node1, we have balancer://mybalancer already configured in its httpd.conf and we want any new node added in future, a new file should be created automatically in /etc/httpd/conf.d.members directory for new node/member
<Proxy balancer://mybalancer>
Include /etc/httpd/conf.d.members/*.conf
</Proxy>
Puppet configuration
-------------------------
1) Create one resource balancer.pp
define apache::balancermember($url) {
file { "/etc/httpd/conf.d.members/worker_${name}.conf":
ensure => file,
owner => 'root',
group => 'root',
mode => "644",
content => " Balancermember $url \n",
}
}
NOTE: Defined resource will be called as Apache::Balancermember (1st character must be in CAPS)
2) Create one class worker.pp which will be called in member nodes (Node2 and Node3) section for exporting (member's Apache::Balancer values) their values in stored configuration or DB
class apache::worker {
@@balancermember { "${fqdn}":
url => "http://${fqdn}:81",
}
}
NOTE: As we have just passed ${fqdn} value, so content variable in apache::balancermember will be "Balancermember NODE-Name:81"
3) Create one more class lbm.pp which will be called in load balancer node i.e.; Node1 for importing Apache::Balancer values (defined in 1st step)
class apache::loadbalancer_members {
Apache::Balancermember <<||>> {notify => Service['httpd'], } ###Import Balancermembers and refresh httpd service
}
4) For any new load balancer members (Node2 and Node3) section
node 'Node2'
'Node 3' {
----------
----------
----------
include apache::worker -------------------> from Step 2
}
5) For Load balancer node i.e.; Node1, section should be like
node 'Node1' {
-----------
-----------
-----------
include apache::loadbalancer_members ---------------> from Step 3
}
6) Try following command from Node1 server
puppet agent -t
This must create files /etc/httpd/conf.d.members/worker_node{2,3}.conf with following content
Balancermember http://node2:81 ------------> From Step1 Apache::Balancermember content variable
Balancermember http://node3:81 ------------> From Step1 Apache::Balancermember content variable
Thats it!! You are ready for more new load balancer members just add node name in Step 4 configuration!
Lets say we have 3 nodes
1st Node1 - > Load Balancer
2nd Node2 -> Load Balancer Member
3rd Node3 -> Load Balancer Member
For Node1, we have balancer://mybalancer already configured in its httpd.conf and we want any new node added in future, a new file should be created automatically in /etc/httpd/conf.d.members directory for new node/member
<Proxy balancer://mybalancer>
Include /etc/httpd/conf.d.members/*.conf
</Proxy>
Puppet configuration
-------------------------
1) Create one resource balancer.pp
define apache::balancermember($url) {
file { "/etc/httpd/conf.d.members/worker_${name}.conf":
ensure => file,
owner => 'root',
group => 'root',
mode => "644",
content => " Balancermember $url \n",
}
}
NOTE: Defined resource will be called as Apache::Balancermember (1st character must be in CAPS)
2) Create one class worker.pp which will be called in member nodes (Node2 and Node3) section for exporting (member's Apache::Balancer values) their values in stored configuration or DB
class apache::worker {
@@balancermember { "${fqdn}":
url => "http://${fqdn}:81",
}
}
NOTE: As we have just passed ${fqdn} value, so content variable in apache::balancermember will be "Balancermember NODE-Name:81"
3) Create one more class lbm.pp which will be called in load balancer node i.e.; Node1 for importing Apache::Balancer values (defined in 1st step)
class apache::loadbalancer_members {
Apache::Balancermember <<||>> {notify => Service['httpd'], } ###Import Balancermembers and refresh httpd service
}
4) For any new load balancer members (Node2 and Node3) section
node 'Node2'
'Node 3' {
----------
----------
----------
include apache::worker -------------------> from Step 2
}
5) For Load balancer node i.e.; Node1, section should be like
node 'Node1' {
-----------
-----------
-----------
include apache::loadbalancer_members ---------------> from Step 3
}
6) Try following command from Node1 server
puppet agent -t
This must create files /etc/httpd/conf.d.members/worker_node{2,3}.conf with following content
Balancermember http://node2:81 ------------> From Step1 Apache::Balancermember content variable
Balancermember http://node3:81 ------------> From Step1 Apache::Balancermember content variable
Thats it!! You are ready for more new load balancer members just add node name in Step 4 configuration!