F5Networks / f5-declarative-onboarding

F5 BIG-IP Declarative Onboarding
Apache License 2.0
58 stars 22 forks source link

If the Hostname and Name are not the same - in a cluster - there are issues #372

Open yxeGithub opened 4 months ago

yxeGithub commented 4 months ago

Environment

Summary

When a DO is sent to an HA pair that wasn't configured with DO - an error like this happens: The requested system device (/Common/hostname.domain.com) was not found.

It seems there is some backend code that is using / assuming the hostname / Device Name are the same and it causes issues with DO.

The result is that it attempts to Rollback, and the system is left with a DO config in its local config DO also as verified by posting to: /mgmt/shared/declarative-onboarding/config

Steps To Reproduce

Steps to reproduce the behaviour:

  1. Build an minimal HA Cluster - HA-VLAN, HA-SelfIP, Default Route, Trust, Config Sync - etc.
  2. Deploy a basic DO
    {
    "id": "4ed4ad05-9aea-4d77-ab90-436d00638e71",
    "selfLink": "https://localhost/mgmt/shared/declarative-onboarding/task/4ed4ad05-9aea-4d77-ab90-436d00638e71",
    "result": {
        "class": "Result",
        "code": 202,
        "status": "ROLLING_BACK",
        "dryRun": false,
        "message": "invalid config - rolling back",
        "errors": [
            "tryUntil: max tries reached: 01020036:3: The requested system device (/Common/hostname.domain.com) was not found."
        ]
    },
    "declaration": {
        "schemaVersion": "1.11.0",
        "class": "Device",
        "async": true,
        "controls": {
            "class": "Controls",
            "trace": true,
            "logLevel": "debug",
            "dryRun": false,
            "traceResponse": false
        },
        "Common": {
            "class": "Tenant",
            "myDbVariables": {
                "class": "DbVariables",
                "ui.advisory.enabled": "true",
                "ui.advisory.color": "red",
                "ui.advisory.text": "Deployed with DO. Do not make any change directly on the BIG-IP or those changes may be lost."
            }
        }
    }
    }

Expected Behavior

I wouldn't think there needs to be a consistent Device Name and Hostname. A POST'ed DO fails stating it cant find the hostname even though I posted the declaration to the Active Device's IP address.

Actual Behavior

POST fails with an error.

yxeGithub commented 4 months ago

Further here is a snippet of the Get of the DO config post failure:

"Common": { "InternalUse": { "deviceNames": { "hostName": "bigip22.domain.com", "deviceName": "bigip2.domain.com" } },