Use network_metadata hash instead of deprecated nodes list
for generate /etc/hosts file Change-Id: I81d429976b1f737d05d5f73d51404d663a817300 Closes-bug: #1518439
This commit is contained in:
parent
1a6d7e9d6a
commit
1c0244b81c
|
@ -0,0 +1,21 @@
|
||||||
|
#
|
||||||
|
# network_metadata_to_hosts
|
||||||
|
#
|
||||||
|
|
||||||
|
module Puppet::Parser::Functions
|
||||||
|
newfunction(:network_metadata_to_hosts, :type => :rvalue, :doc => <<-EOS
|
||||||
|
convert network_metadata hash to
|
||||||
|
hash for puppet `host` create_resources call
|
||||||
|
EOS
|
||||||
|
) do |args|
|
||||||
|
hosts=Hash.new
|
||||||
|
nodes=args[0].fetch('nodes', {})
|
||||||
|
nodes.each do |name, props|
|
||||||
|
hosts[props['fqdn']]={:ip=>props['network_roles']['mgmt/vip'],:host_aliases=>[name]}
|
||||||
|
notice("Generating host entry #{name} #{props['network_roles']['mgmt/vip']} #{props['fqdn']}")
|
||||||
|
end
|
||||||
|
return hosts
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# vim: set ts=2 sw=2 et :
|
|
@ -1,5 +1,12 @@
|
||||||
notice('MODULAR: hosts.pp')
|
notice('MODULAR: hosts.pp')
|
||||||
|
|
||||||
class { "l23network::hosts_file":
|
$hosts_file = '/etc/hosts'
|
||||||
nodes => hiera('nodes'),
|
$host_resources = network_metadata_to_hosts(hiera_hash('network_metadata'))
|
||||||
|
|
||||||
|
Host {
|
||||||
|
ensure => present,
|
||||||
|
target => $hosts_file
|
||||||
}
|
}
|
||||||
|
|
||||||
|
create_resources(host, $host_resources)
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,111 @@
|
||||||
|
require 'spec_helper'
|
||||||
|
require 'yaml'
|
||||||
|
|
||||||
|
|
||||||
|
describe 'network_metadata_to_hosts' do
|
||||||
|
|
||||||
|
let(:network_metadata) {"""
|
||||||
|
---
|
||||||
|
nodes:
|
||||||
|
node-5:
|
||||||
|
swift_zone: '5'
|
||||||
|
uid: '5'
|
||||||
|
fqdn: node-5.domain.local
|
||||||
|
network_roles:
|
||||||
|
keystone/api: 10.88.0.6
|
||||||
|
neutron/api: 10.88.0.6
|
||||||
|
mgmt/database: 10.88.0.6
|
||||||
|
mgmt/vip: 10.88.0.6
|
||||||
|
sahara/api: 10.88.0.6
|
||||||
|
user_node_name: CO22
|
||||||
|
node_roles:
|
||||||
|
- compute
|
||||||
|
name: node-5
|
||||||
|
node-4:
|
||||||
|
swift_zone: '4'
|
||||||
|
uid: '4'
|
||||||
|
fqdn: node-4.domain.local
|
||||||
|
network_roles:
|
||||||
|
keystone/api: 10.88.0.7
|
||||||
|
neutron/api: 10.88.0.7
|
||||||
|
mgmt/database: 10.88.0.7
|
||||||
|
mgmt/vip: 10.88.0.7
|
||||||
|
sahara/api: 10.88.0.7
|
||||||
|
heat/api: 10.88.0.7
|
||||||
|
ceilometer/api: 10.88.0.7
|
||||||
|
ex: 10.88.1.132
|
||||||
|
user_node_name: CNT21
|
||||||
|
node_roles:
|
||||||
|
- primary-controller
|
||||||
|
name: node-4
|
||||||
|
node-6:
|
||||||
|
swift_zone: '6'
|
||||||
|
uid: '6'
|
||||||
|
fqdn: node-6.domain.local
|
||||||
|
network_roles:
|
||||||
|
keystone/api: 10.88.0.8
|
||||||
|
neutron/api: 10.88.0.8
|
||||||
|
mgmt/database: 10.88.0.8
|
||||||
|
sahara/api: 10.88.0.8
|
||||||
|
ceilometer/api: 10.88.0.8
|
||||||
|
mgmt/vip: 10.88.0.8
|
||||||
|
user_node_name: CO23
|
||||||
|
node_roles:
|
||||||
|
- compute
|
||||||
|
name: node-6
|
||||||
|
vips:
|
||||||
|
vrouter_pub:
|
||||||
|
network_role: public/vip
|
||||||
|
node_roles:
|
||||||
|
- controller
|
||||||
|
- primary-controller
|
||||||
|
namespace: vrouter
|
||||||
|
ipaddr: 10.88.1.130
|
||||||
|
management:
|
||||||
|
network_role: mgmt/vip
|
||||||
|
node_roles:
|
||||||
|
- controller
|
||||||
|
- primary-controller
|
||||||
|
namespace: haproxy
|
||||||
|
ipaddr: 10.88.0.10
|
||||||
|
public:
|
||||||
|
network_role: public/vip
|
||||||
|
node_roles:
|
||||||
|
- controller
|
||||||
|
- primary-controller
|
||||||
|
namespace: haproxy
|
||||||
|
ipaddr: 10.88.1.131
|
||||||
|
vrouter:
|
||||||
|
network_role: mgmt/vip
|
||||||
|
node_roles:
|
||||||
|
- controller
|
||||||
|
- primary-controller
|
||||||
|
namespace: vrouter
|
||||||
|
ipaddr: 10.88.0.9
|
||||||
|
"""}
|
||||||
|
|
||||||
|
|
||||||
|
let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
|
||||||
|
|
||||||
|
before(:each) do
|
||||||
|
puppet_debug_override()
|
||||||
|
end
|
||||||
|
|
||||||
|
subject do
|
||||||
|
function_name = Puppet::Parser::Functions.function('network_metadata_to_hosts')
|
||||||
|
scope.method(function_name)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should exist' do
|
||||||
|
expect(subject).to eq scope.method('function_network_metadata_to_hosts')
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should return hash for creating set of "host" puppet resources by create_resources()' do
|
||||||
|
expect(scope.function_network_metadata_to_hosts([YAML.load(network_metadata)])).to eq({
|
||||||
|
'node-6.domain.local' => {:ip => '10.88.0.8', :host_aliases => ['node-6']},
|
||||||
|
'node-5.domain.local' => {:ip => '10.88.0.6', :host_aliases => ['node-5']},
|
||||||
|
'node-4.domain.local' => {:ip => '10.88.0.7', :host_aliases => ['node-4']},
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
Loading…
Reference in New Issue