Purge deleted /etc/hosts entries for deleted ndoes
Deleted nodes now will get stored in a file
/etc/hiera/deleted_nodes.yaml and be inserted into
the hiera hierarchy.
host entries for any records present in deleted_nodes.yaml
will be purged when evaluating hosts task.
The source YAML for deleted nodes is generated on master
because nodes that are deployed from scratch or from Error
state will not be able to identify deleted nodes due to
certain orchestration limitations.
Change-Id: I01db215e77a3532a6fa7bf46ab7e20e281e8c165
Closes-Bug: #1513401
(cherry picked from commit eacb493e38
)
This commit is contained in:
parent
9f3d7e63b4
commit
c923fb21ef
|
@ -18,6 +18,7 @@ class osnailyfacter::hiera::hiera {
|
|||
'override/configuration/cluster',
|
||||
'class/%{calling_class}',
|
||||
'module/%{calling_module}',
|
||||
'deleted_nodes',
|
||||
'nodes',
|
||||
'globals%{disable_globals_yaml}',
|
||||
'astute',
|
||||
|
|
|
@ -4,14 +4,20 @@ class osnailyfacter::hosts::hosts {
|
|||
|
||||
$hosts_file = '/etc/hosts'
|
||||
$network_metadata = hiera_hash('network_metadata')
|
||||
$messaging_prefix = hiera('node_name_prefix_for_messaging')
|
||||
$host_resources = network_metadata_to_hosts($network_metadata)
|
||||
$messaging_host_resources = network_metadata_to_hosts($network_metadata, 'mgmt/messaging', hiera('node_name_prefix_for_messaging'))
|
||||
$messaging_host_resources = network_metadata_to_hosts($network_metadata, 'mgmt/messaging', $messaging_prefix)
|
||||
$host_hash = merge($host_resources, $messaging_host_resources)
|
||||
|
||||
$deleted_nodes = hiera('deleted_nodes', [])
|
||||
$deleted_messaging_nodes = prefix($deleted_nodes, $messaging_prefix)
|
||||
|
||||
Host {
|
||||
ensure => present,
|
||||
target => $hosts_file
|
||||
}
|
||||
|
||||
create_resources(host, merge($host_resources, $messaging_host_resources))
|
||||
|
||||
create_resources(host, $host_hash)
|
||||
if !empty($deleted_nodes) {
|
||||
create_resources(host, concat($deleted_nodes, $deleted_messaging_nodes), {ensure => absent})
|
||||
}
|
||||
}
|
||||
|
|
|
@ -71,7 +71,7 @@
|
|||
version: 2.1.0
|
||||
role: ['/.*/']
|
||||
required_for: [post_deployment_end]
|
||||
requires: [upload_nodes_info]
|
||||
requires: [upload_nodes_info, copy_deleted_nodes]
|
||||
condition:
|
||||
yaql_exp: 'changed($.network_metadata)'
|
||||
parameters:
|
||||
|
@ -348,3 +348,34 @@
|
|||
dst: /var/lib/astute/ironic/ironic
|
||||
permissions: '0600'
|
||||
dir_permissions: '0700'
|
||||
|
||||
- id: generate_deleted_nodes
|
||||
version: 2.1.0
|
||||
type: upload_file
|
||||
role: master
|
||||
condition:
|
||||
yaql_exp: 'changed($.network_metadata)'
|
||||
requires: [upload_configuration]
|
||||
required_for: [pre_deployment_end]
|
||||
parameters:
|
||||
path: /etc/fuel/cluster/{CLUSTER_ID}/deleted_nodes.yaml
|
||||
data:
|
||||
yaql_exp: '{"deleted_nodes" => deleted($.nodes.fqdn)}.toYaml()'
|
||||
|
||||
- id: copy_deleted_nodes
|
||||
type: copy_files
|
||||
version: 2.1.0
|
||||
role: ['/.*/']
|
||||
condition:
|
||||
yaql_exp: 'changed($.network_metadata)'
|
||||
required_for: [pre_deployment_end]
|
||||
requires: [generate_deleted_nodes]
|
||||
cross-depends:
|
||||
- name: generate_deleted_nodes
|
||||
role: master
|
||||
parameters:
|
||||
files:
|
||||
- src: /etc/fuel/cluster/{CLUSTER_ID}/deleted_nodes.yaml
|
||||
dst: /etc/hiera/deleted_nodes.yaml
|
||||
permissions: '0600'
|
||||
dir_permissions: '0700'
|
||||
|
|
|
@ -21,6 +21,8 @@ describe manifest do
|
|||
network_metadata = Noop.hiera_structure('network_metadata/nodes')
|
||||
messaging_fqdn_prefix = Noop.hiera('node_name_prefix_for_messaging', 'messaging-')
|
||||
|
||||
deleted_nodes = Noop.hiera('deleted_nodes', [])
|
||||
|
||||
it 'should create basic host entries' do
|
||||
network_metadata.each do |node, params|
|
||||
should contain_host(params['fqdn']).with({
|
||||
|
@ -39,7 +41,19 @@ describe manifest do
|
|||
:target => '/etc/hosts'
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
it 'should purge host entries for deleted nodes' do
|
||||
deleted_nodes.each do |deleted|
|
||||
should contain_host(deleted).with({
|
||||
:ensure => :absent,
|
||||
:target => '/etc/hosts'
|
||||
})
|
||||
should contain_host("#{messaging_fqdn_prefix}#{deleted}").with({
|
||||
:ensure => :absent,
|
||||
:target => '/etc/hosts'
|
||||
})
|
||||
end
|
||||
end
|
||||
end
|
||||
test_ubuntu_and_centos manifest
|
||||
|
|
Loading…
Reference in New Issue