From 78ca1fe143bbb09eaa82e1a87fd38bff94888382 Mon Sep 17 00:00:00 2001 From: Alex Schultz Date: Fri, 21 Aug 2020 13:43:35 -0600 Subject: [PATCH] Use ansible for nodes validation The old all nodes validation used a bash script to run some basic ping tests after the network setup. It used to be a software config but eventually got baked into the deployment framework. This patch switches to the ansible role implementation and cleans up the old references to the old heat resource. Change-Id: Ia7f055d2c636f950c3fe6d8611834c4ab290f31a Depends-On: https://review.opendev.org/#/c/747466/ --- all-nodes-validation.yaml | 45 ------------------- ci/common/all-nodes-validation-disabled.yaml | 37 --------------- ci/environments/multinode-containers.yaml | 3 -- .../scenario000-multinode-containers.yaml | 3 -- ci/environments/scenario000-standalone.yaml | 3 -- .../scenario001-multinode-containers.yaml | 3 -- ci/environments/scenario001-standalone.yaml | 3 -- ci/environments/scenario002-standalone.yaml | 3 -- ci/environments/scenario003-standalone.yaml | 3 -- ci/environments/scenario004-standalone.yaml | 3 -- .../scenario007-multinode-containers.yaml | 3 -- ci/environments/scenario007-standalone.yaml | 3 -- .../scenario010-multinode-containers.yaml | 1 - ci/environments/scenario010-standalone.yaml | 3 -- ci/environments/scenario012-standalone.yaml | 3 -- ci/environments/scenario013-standalone.yaml | 4 -- common/deploy-steps.j2 | 17 ++++--- overcloud-resource-registry-puppet.j2.yaml | 3 -- 18 files changed, 8 insertions(+), 135 deletions(-) delete mode 100644 all-nodes-validation.yaml delete mode 100644 ci/common/all-nodes-validation-disabled.yaml diff --git a/all-nodes-validation.yaml b/all-nodes-validation.yaml deleted file mode 100644 index 2fa0dc11e8..0000000000 --- a/all-nodes-validation.yaml +++ /dev/null @@ -1,45 +0,0 @@ -heat_template_version: rocky - -description: > - Software Config to drive validations that occur on all nodes. - Note, you need the heat-config-script element built into your - images, due to the script group below. - -parameters: - PingTestIps: - default: '' - description: A string containing a space separated list of IP addresses used to ping test each available network interface. - type: string - ValidateControllersIcmp: - default: true - description: Validation to ensure that all controllers can be reached with ICMP - type: boolean - ValidateGatewaysIcmp: - default: true - description: Validation to ensure that all gateways can be reached with ICMP - type: boolean - ValidateFqdn: - default: false - description: Optional validation to ensure FQDN as set by Nova matches the name set in /etc/hosts. - type: boolean - -resources: - AllNodesValidationsImpl: - type: OS::Heat::SoftwareConfig - properties: - group: script - inputs: - - name: ping_test_ips - default: {get_param: PingTestIps} - - name: validate_fqdn - default: {get_param: ValidateFqdn} - - name: validate_controllers_icmp - default: {get_param: ValidateControllersIcmp} - - name: validate_gateways_icmp - default: {get_param: ValidateGatewaysIcmp} - config: {get_file: ./validation-scripts/all-nodes.sh} - -outputs: - OS::stack_id: - description: The ID of the AllNodesValidationsImpl resource. - value: {get_resource: AllNodesValidationsImpl} diff --git a/ci/common/all-nodes-validation-disabled.yaml b/ci/common/all-nodes-validation-disabled.yaml deleted file mode 100644 index 599c99eef8..0000000000 --- a/ci/common/all-nodes-validation-disabled.yaml +++ /dev/null @@ -1,37 +0,0 @@ -heat_template_version: rocky - -description: > - Software Config to drive validations that occur on all nodes. - Note, you need the heat-config-script element built into your - images, due to the script group below. - - This implementation of the validations is a noop that always reports success. - -parameters: - PingTestIps: - default: '' - description: A string containing a space separated list of IP addresses used to ping test each available network interface. - type: string - ValidateFqdn: - default: false - description: Optional validation to ensure FQDN as set by Nova matches the name set in /etc/hosts. - type: boolean - -resources: - AllNodesValidationsImpl: - type: OS::Heat::SoftwareConfig - properties: - group: script - inputs: - - name: ping_test_ips - default: {get_param: PingTestIps} - - name: validate_fqdn - default: {get_param: ValidateFqdn} - config: | - #!/bin/bash - exit 0 - -outputs: - OS::stack_id: - description: The ID of the AllNodesValidationsImpl resource. - value: {get_resource: AllNodesValidationsImpl} diff --git a/ci/environments/multinode-containers.yaml b/ci/environments/multinode-containers.yaml index 944bc2fff7..696bf69be7 100644 --- a/ci/environments/multinode-containers.yaml +++ b/ci/environments/multinode-containers.yaml @@ -1,9 +1,6 @@ resource_registry: OS::TripleO::Controller::Net::SoftwareConfig: ../common/net-config-multinode.yaml OS::TripleO::Compute::Net::SoftwareConfig: ../common/net-config-multinode.yaml - # Some infra instances don't pass the ping test but are otherwise working. - # Since the OVB jobs also test this functionality we can shut it off here. - OS::TripleO::AllNodes::Validation: ../common/all-nodes-validation-disabled.yaml OS::TripleO::Services::OVNDBs: ../../deployment/ovn/ovn-dbs-pacemaker-puppet.yaml parameter_defaults: diff --git a/ci/environments/scenario000-multinode-containers.yaml b/ci/environments/scenario000-multinode-containers.yaml index 0f2ac927a5..720c4666f6 100644 --- a/ci/environments/scenario000-multinode-containers.yaml +++ b/ci/environments/scenario000-multinode-containers.yaml @@ -1,9 +1,6 @@ resource_registry: OS::TripleO::Controller::Net::SoftwareConfig: ../common/net-config-multinode.yaml OS::TripleO::Compute::Net::SoftwareConfig: ../common/net-config-multinode.yaml - # Some infra instances don't pass the ping test but are otherwise working. - # Since the OVB jobs also test this functionality we can shut it off here. - OS::TripleO::AllNodes::Validation: ../common/all-nodes-validation-disabled.yaml parameter_defaults: ControllerServices: diff --git a/ci/environments/scenario000-standalone.yaml b/ci/environments/scenario000-standalone.yaml index e2e9dde110..7975e22cb0 100644 --- a/ci/environments/scenario000-standalone.yaml +++ b/ci/environments/scenario000-standalone.yaml @@ -1,8 +1,5 @@ # This scenario only install keystone and the required services to run it. resource_registry: - # Some infra instances don't pass the ping test but are otherwise working. - # Since the OVB jobs also test this functionality we can shut it off here. - OS::TripleO::AllNodes::Validation: ../common/all-nodes-validation-disabled.yaml OS::TripleO::Services::AodhApi: OS::Heat::None OS::TripleO::Services::AodhEvaluator: OS::Heat::None OS::TripleO::Services::AodhListener: OS::Heat::None diff --git a/ci/environments/scenario001-multinode-containers.yaml b/ci/environments/scenario001-multinode-containers.yaml index 1329334d8d..e4d63afa2e 100644 --- a/ci/environments/scenario001-multinode-containers.yaml +++ b/ci/environments/scenario001-multinode-containers.yaml @@ -28,9 +28,6 @@ resource_registry: OS::TripleO::Services::HeatApiCfn: ../../deployment/heat/heat-api-cfn-container-puppet.yaml OS::TripleO::Services::HeatApiCloudwatch: ../../deployment/heat/heat-api-cloudwatch-disabled-puppet.yaml OS::TripleO::Services::HeatEngine: ../../deployment/heat/heat-engine-container-puppet.yaml - # Some infra instances don't pass the ping test but are otherwise working. - # Since the OVB jobs also test this functionality we can shut it off here. - OS::TripleO::AllNodes::Validation: ../common/all-nodes-validation-disabled.yaml parameter_defaults: ControllerServices: diff --git a/ci/environments/scenario001-standalone.yaml b/ci/environments/scenario001-standalone.yaml index 5528c32a20..69c913208f 100644 --- a/ci/environments/scenario001-standalone.yaml +++ b/ci/environments/scenario001-standalone.yaml @@ -25,9 +25,6 @@ resource_registry: OS::TripleO::Services::Redis: ../../deployment/database/redis-pacemaker-puppet.yaml OS::TripleO::Services::CinderBackup: ../../deployment/cinder/cinder-backup-pacemaker-puppet.yaml OS::TripleO::Services::CinderVolume: ../../deployment/cinder/cinder-volume-pacemaker-puppet.yaml - # Some infra instances don't pass the ping test but are otherwise working. - # Since the OVB jobs also test this functionality we can shut it off here. - OS::TripleO::AllNodes::Validation: ../common/all-nodes-validation-disabled.yaml OS::TripleO::Services::SwiftProxy: OS::Heat::None OS::TripleO::Services::SwiftStorage: OS::Heat::None OS::TripleO::Services::SwiftRingBuilder: OS::Heat::None diff --git a/ci/environments/scenario002-standalone.yaml b/ci/environments/scenario002-standalone.yaml index b89cabb0c4..e95e78f577 100644 --- a/ci/environments/scenario002-standalone.yaml +++ b/ci/environments/scenario002-standalone.yaml @@ -21,9 +21,6 @@ resource_registry: OS::TripleO::Services::CinderBackup: ../../deployment/cinder/cinder-backup-pacemaker-puppet.yaml OS::TripleO::Services::CinderVolume: ../../deployment/cinder/cinder-volume-pacemaker-puppet.yaml OS::TripleO::Services::BarbicanBackendSimpleCrypto: ../../deployment/barbican/barbican-backend-simple-crypto-puppet.yaml - # Some infra instances don't pass the ping test but are otherwise working. - # Since the OVB jobs also test this functionality we can shut it off here. - OS::TripleO::AllNodes::Validation: ../common/all-nodes-validation-disabled.yaml # NOTE(mwhahaha): cheat and use the horizon "service" for our test service # since disable horizon. This allows us to not have to keep some test service # in the defaults just for this case. diff --git a/ci/environments/scenario003-standalone.yaml b/ci/environments/scenario003-standalone.yaml index 887fe93f93..270e82ee8d 100644 --- a/ci/environments/scenario003-standalone.yaml +++ b/ci/environments/scenario003-standalone.yaml @@ -18,9 +18,6 @@ resource_registry: OS::TripleO::Services::DesignateWorker: ../../deployment/experimental/designate/designate-worker-container-puppet.yaml OS::TripleO::Services::DesignateMDNS: ../../deployment/experimental/designate/designate-mdns-container-puppet.yaml OS::TripleO::Services::Redis: ../../deployment/database/redis-container-puppet.yaml - # Some infra instances don't pass the ping test but are otherwise working. - # Since the OVB jobs also test this functionality we can shut it off here. - OS::TripleO::AllNodes::Validation: ../common/all-nodes-validation-disabled.yaml parameter_defaults: Debug: true diff --git a/ci/environments/scenario004-standalone.yaml b/ci/environments/scenario004-standalone.yaml index 30103b2753..dc06559410 100644 --- a/ci/environments/scenario004-standalone.yaml +++ b/ci/environments/scenario004-standalone.yaml @@ -27,9 +27,6 @@ resource_registry: OS::TripleO::Services::Clustercheck: ../../deployment/pacemaker/clustercheck-container-puppet.yaml OS::TripleO::Services::MySQL: ../../deployment/database/mysql-pacemaker-puppet.yaml OS::TripleO::Services::LoginDefs: ../../deployment/login-defs/login-defs-baremetal.yaml - # Some infra instances don't pass the ping test but are otherwise working. - # Since the OVB jobs also test this functionality we can shut it off here. - OS::TripleO::AllNodes::Validation: ../common/all-nodes-validation-disabled.yaml parameter_defaults: ManagePolling: true diff --git a/ci/environments/scenario007-multinode-containers.yaml b/ci/environments/scenario007-multinode-containers.yaml index 376d2df006..9627f010a8 100644 --- a/ci/environments/scenario007-multinode-containers.yaml +++ b/ci/environments/scenario007-multinode-containers.yaml @@ -10,9 +10,6 @@ resource_registry: OS::TripleO::Services::NeutronL3Agent: ../../deployment/neutron/neutron-l3-container-puppet.yaml OS::TripleO::Services::ComputeNeutronOvsAgent: ../../deployment/neutron/neutron-ovs-agent-container-puppet.yaml - # Some infra instances don't pass the ping test but are otherwise working. - # Since the OVB jobs also test this functionality we can shut it off here. - OS::TripleO::AllNodes::Validation: ../common/all-nodes-validation-disabled.yaml OS::TripleO::Services::NovaMigrationTarget: OS::Heat::None OS::TripleO::Services::SwiftProxy: OS::Heat::None OS::TripleO::Services::SwiftStorage: OS::Heat::None diff --git a/ci/environments/scenario007-standalone.yaml b/ci/environments/scenario007-standalone.yaml index 0523ce08b8..18eab0d444 100644 --- a/ci/environments/scenario007-standalone.yaml +++ b/ci/environments/scenario007-standalone.yaml @@ -6,9 +6,6 @@ resource_registry: OS::TripleO::Services::NeutronOvsAgent: ../../deployment/neutron/neutron-ovs-agent-container-puppet.yaml OS::TripleO::Services::NeutronDhcpAgent: ../../deployment/neutron/neutron-dhcp-container-puppet.yaml OS::TripleO::Services::NeutronL3Agent: ../../deployment/neutron/neutron-l3-container-puppet.yaml - # Some infra instances don't pass the ping test but are otherwise working. - # Since the OVB jobs also test this functionality we can shut it off here. - OS::TripleO::AllNodes::Validation: ../../ci/common/all-nodes-validation-disabled.yaml OS::TripleO::Services::BlockStorageCinderVolume: OS::Heat::None OS::TripleO::Services::CinderVolume: OS::Heat::None diff --git a/ci/environments/scenario010-multinode-containers.yaml b/ci/environments/scenario010-multinode-containers.yaml index 7c0af7d600..03592d6b0c 100644 --- a/ci/environments/scenario010-multinode-containers.yaml +++ b/ci/environments/scenario010-multinode-containers.yaml @@ -10,7 +10,6 @@ resource_registry: OS::TripleO::Services::PacemakerRemote: ../../deployment/pacemaker/pacemaker-remote-baremetal-puppet.yaml OS::TripleO::Services::Clustercheck: ../../deployment/pacemaker/clustercheck-container-puppet.yaml OS::TripleO::Services::MySQL: ../../deployment/database/mysql-pacemaker-puppet.yaml - OS::TripleO::AllNodes::Validation: ../common/all-nodes-validation-disabled.yaml OS::TripleO::Services::OctaviaApi: ../../deployment/octavia/octavia-api-container-puppet.yaml OS::TripleO::Services::OctaviaHousekeeping: ../../deployment/octavia/octavia-housekeeping-container-puppet.yaml OS::TripleO::Services::OctaviaHealthManager: ../../deployment/octavia/octavia-health-manager-container-puppet.yaml diff --git a/ci/environments/scenario010-standalone.yaml b/ci/environments/scenario010-standalone.yaml index c62912823a..bd13545161 100644 --- a/ci/environments/scenario010-standalone.yaml +++ b/ci/environments/scenario010-standalone.yaml @@ -5,9 +5,6 @@ resource_registry: OS::TripleO::Services::CephClient: ../../deployment/ceph-ansible/ceph-client.yaml OS::TripleO::Services::OsloMessagingRpc: ../../deployment/rabbitmq/rabbitmq-messaging-rpc-pacemaker-puppet.yaml OS::TripleO::Services::OsloMessagingNotify: ../../deployment/rabbitmq/rabbitmq-messaging-notify-shared-puppet.yaml - # Some infra instances don't pass the ping test but are otherwise working. - # Since the OVB jobs also test this functionality we can shut it off here. - OS::TripleO::AllNodes::Validation: ../common/all-nodes-validation-disabled.yaml OS::TripleO::Services::OctaviaApi: ../../deployment/octavia/octavia-api-container-puppet.yaml OS::TripleO::Services::OctaviaHousekeeping: ../../deployment/octavia/octavia-housekeeping-container-puppet.yaml OS::TripleO::Services::OctaviaHealthManager: ../../deployment/octavia/octavia-health-manager-container-puppet.yaml diff --git a/ci/environments/scenario012-standalone.yaml b/ci/environments/scenario012-standalone.yaml index 61a803a045..53a289f25e 100644 --- a/ci/environments/scenario012-standalone.yaml +++ b/ci/environments/scenario012-standalone.yaml @@ -6,9 +6,6 @@ resource_registry: OS::TripleO::Services::IronicApi: ../../deployment/ironic/ironic-api-container-puppet.yaml OS::TripleO::Services::IronicConductor: ../../deployment/ironic/ironic-conductor-container-puppet.yaml OS::TripleO::Services::IronicPxe: ../../deployment/ironic/ironic-pxe-container-puppet.yaml - # Some infra instances don't pass the ping test but are otherwise working. - # Since the OVB jobs also test this functionality we can shut it off here. - OS::TripleO::AllNodes::Validation: ../common/all-nodes-validation-disabled.yaml OS::TripleO::NodeExtraConfigPost: ../common/ironic_standalone_post.yaml OS::TripleO::Services::CinderVolume: ../../deployment/cinder/cinder-volume-container-puppet.yaml OS::TripleO::Services::NeutronCorePlugin: OS::TripleO::Services::NeutronCorePluginML2Ansible diff --git a/ci/environments/scenario013-standalone.yaml b/ci/environments/scenario013-standalone.yaml index f2fa8c97fd..ef001dde66 100644 --- a/ci/environments/scenario013-standalone.yaml +++ b/ci/environments/scenario013-standalone.yaml @@ -2,10 +2,6 @@ resource_registry: OS::TripleO::Services::Keepalived: OS::Heat::None OS::TripleO::Services::OsloMessagingRpc: ../../deployment/rabbitmq/rabbitmq-messaging-rpc-container-puppet.yaml - OS::TripleO::Services::OsloMessagingNotify: ../../deployment/rabbitmq/rabbitmq-messaging-notify-shared-puppet.yaml - # Some infra instances don't pass the ping test but are otherwise working. - # Since the OVB jobs also test this functionality we can shut it off here. - OS::TripleO::AllNodes::Validation: ../common/all-nodes-validation-disabled.yaml OS::TripleO::Services::OctaviaApi: ../../deployment/octavia/octavia-api-container-puppet.yaml OS::TripleO::Services::OctaviaHousekeeping: ../../deployment/octavia/octavia-housekeeping-container-puppet.yaml OS::TripleO::Services::OctaviaHealthManager: ../../deployment/octavia/octavia-health-manager-container-puppet.yaml diff --git a/common/deploy-steps.j2 b/common/deploy-steps.j2 index d3cf086d61..88a8572c79 100644 --- a/common/deploy-steps.j2 +++ b/common/deploy-steps.j2 @@ -411,7 +411,6 @@ outputs: deploy_steps_tasks_step_0: {get_file: deploy-steps-tasks-step-0.yaml} common_deploy_steps_tasks_step_1: {get_file: deploy-steps-tasks-step-1.yaml} container_puppet_script: {get_file: ./container-puppet.sh} - all_nodes_validation_script.sh : {get_file: ../validation-scripts/all-nodes.sh} deploy-artifacts.sh : {get_file: ../puppet/deploy-artifacts.sh} generate-config-tasks: {get_file: generate-config-tasks.yaml} host-container-puppet-tasks: {get_file: host-container-puppet-tasks.yaml} @@ -575,14 +574,14 @@ outputs: tripleo_network_config_async_poll: "{{ async_poll | default(3) }}" when: - NetworkConfig_stat.stat.exists - - name: AllNodesValidationConfig - script: all_nodes_validation_script.sh - environment: - validate_controllers_icmp: "{{ validate_controllers_icmp }}" - validate_gateways_icmp: "{{ validate_gateways_icmp }}" - validate_fqdn: "{{ validate_fqdn }}" - ping_test_ips: "{{ ping_test_ips | to_json }}" - tripleo_role_name: "{{ tripleo_role_name }}" + - name: Basic Network Validation + include_role: + name: tripleo_nodes_validation + vars: + tripleo_nodes_validation_validate_controllers_icmp: "{{ validate_controllers_icmp }}" + tripleo_nodes_validation_validate_gateways_icmp: "{{ validate_gateways_icmp }}" + tripleo_nodes_validation_validate_fqdn: "{{ validate_fqdn }}" + tripleo_nodes_validation_ping_test_ips: "{{ ping_test_ips.get(tripleo_role_name).split(' ') | list | unique }}" tags: - overcloud - pre_deploy_steps diff --git a/overcloud-resource-registry-puppet.j2.yaml b/overcloud-resource-registry-puppet.j2.yaml index 6d52655640..0d5666fd21 100644 --- a/overcloud-resource-registry-puppet.j2.yaml +++ b/overcloud-resource-registry-puppet.j2.yaml @@ -92,9 +92,6 @@ resource_registry: # Service Endpoint Mappings OS::TripleO::EndpointMap: network/endpoints/endpoint_map.yaml - # validation resources - OS::TripleO::AllNodes::Validation: all-nodes-validation.yaml - OS::TripleO::DeployedServerEnvironment: OS::Heat::None OS::TripleO::DeploymentSteps: OS::Heat::None