F5Networks / f5-appsvcs-templates

F5 BIG-IP Application Service Templates (FAST)
Apache License 2.0
32 stars 13 forks source link

FAST Exchange 2019 Template Fails for Shared tenant #121

Closed totalogic closed 1 year ago

totalogic commented 1 year ago

Using the latest version of FAST templates (3.43.0) and AS3 (1.24.0) the deployment fails for irule not having HTTP or FASTHTTP profile. On Vipreon hardware using LTM 16.x

Using the template: https://github.com/F5Networks/f5-appsvcs-templates/blob/master/templates/bigip-fast-templates/microsoft_exchange.yaml As customer has only the common tenant the documentation suggests I use "Shared" as the tenant

Error: HTTP_REQUEST event in rule {iRule} requires an associated HTTP FASTHTTP profile on the virtual server

shyawnkarim commented 1 year ago

Thanks for reporting this issue. I've created a bug ticket for this, internal ID EC-149, for engineering to look into.

shyawnkarim commented 1 year ago

Applications are never deployed to the Common partition. You must create at least one new tenant for your applications to be deployed to.

Can you point me to where our documentation says to use Shared or Common?

totalogic commented 1 year ago

That is the point, my customer has deeply used the Common Shared partition and does not want to use another tenant as it would require a lot of rework. Thus the bug, I need a way to do this in Common. To say Applications are never is based on best practice however the real world has people doing it all the time.

shyawnkarim commented 1 year ago

In order for us to understand your situation better, can you email me, s.karim@f5.com, more details about the situation? Once I have that I'll bring this issue forward to the engineering team.

joelkeener commented 1 year ago

Hello @totalogic, is the documentation telling you to create objects in /Common/Shared and then reference these existing objects in your deployment? Please share where and what exactly it is you are reading.

Also, the error indicates that there is no HTTP profile on the Virtual Server, but the Exchange Application always creates an HTTP profile in the new Tenant and assigns it to every Virtual Server that uses an iRule. Can you please copy the rendered template that will not deploy because of this error, but clicking "Debug View" at the bottom of the template in the FAST GUI's Exchange template deployment form, and then click "Rendered"?

joelkeener commented 1 year ago

Hello Again @totalogic, We assume that you are working on a custom template based on the supported Exchange template, and neglected to include an http proflie. You can create one in the application or use one that already exists in /Common.

If this assumption is incorrect, please provide the template you are using, the rendered template with the the user input you are deploying and the exact message in the documentation you are asking about, with either a link or a screenshot.

bdreis01 commented 1 year ago

Hello All, I have the same issue - NOT using /common partition. Templates version 3.39.0 AS3 1.20.0

Error: 01071912:3: HTTP_REQUEST event in rule (/VBGOV/Exch_owa_prod/Exch_owa_prod_combined_pool_irule3) requires an associated HTTP or FASTHTTP profile on the virtual-server (/VBGOV/Exch_owa_prod/Exch_owa_prod_vs).

Debug view below:

WARNING: The below declaration is only for inspection and debug purposes. Submitting the below ouput to AS3 directly can result in loss of tenants and applications. Please only submit this declaration through FAST.

{ "class": "ADC", "schemaVersion": "3.0.0", "id": "urn:uuid:a858e55e-bbe6-42ce-a9b9-0f4ab33e3bf7", "VBGOV": { "class": "Tenant", "Exch_owa_prod": { "class": "Application", "template": "generic", "Exch_owa_prod_vs": { "virtualAddresses": [ "10.100.206.43" ], "virtualPort": 443, "class": "Service_TCP", "profileHTTP": { "use": "Exch_owa_prod_http" }, "persistenceMethods": [], "snat": "auto", "profileHTTPAcceleration": { "use": "Exch_owa_prod_cache-optimize" }, "profileHTTPCompression": { "use": "Exch_owa_prod_wan-optimized-compression" }, "redirect80": false, "iRules": [ { "use": "Exch_owa_prod_owa_redirect_irule3" }, { "use": "Exch_owa_prod_combined_pool_irule3" }, { "use": "Exch_owa_prod_samesite_irule" } ], "profileTCP": "normal" }, "exchangeVS_ad_pool": { "class": "Pool", "members": [ { "serverAddresses": [ "10.100.223.60", "10.100.223.61" ], "servicePort": 443, "shareNodes": true } ], "loadBalancingMode": "least-connections-member", "slowRampTime": 300, "monitors": [ { "use": "exchangeVS_ad_https_monitor" } ], "minimumMonitors": 1 }, "exchangeVS_as_pool": { "class": "Pool", "members": [ { "serverAddresses": [ "10.100.223.60", "10.100.223.61" ], "servicePort": 443, "shareNodes": true } ], "loadBalancingMode": "least-connections-member", "slowRampTime": 300, "monitors": [ { "use": "exchangeVS_as_https_monitor" } ], "minimumMonitors": 1 }, "exchangeVS_ews_pool": { "class": "Pool", "members": [ { "serverAddresses": [ "10.100.223.60", "10.100.223.61" ], "servicePort": 443, "shareNodes": true } ], "loadBalancingMode": "least-connections-member", "slowRampTime": 300, "monitors": [ { "use": "exchangeVS_ews_https_monitor" } ], "minimumMonitors": 1 }, "exchangeVS_mapi_pool": { "class": "Pool", "members": [ { "serverAddresses": [ "10.100.223.60", "10.100.223.61" ], "servicePort": 443, "shareNodes": true } ], "loadBalancingMode": "least-connections-member", "slowRampTime": 300, "monitors": [ { "use": "exchangeVS_mapi_https_monitor" } ], "minimumMonitors": 1 }, "exchangeVS_owa_pool": { "class": "Pool", "members": [ { "serverAddresses": [ "10.100.223.60", "10.100.223.61" ], "servicePort": 443, "shareNodes": true } ], "loadBalancingMode": "least-connections-member", "slowRampTime": 300, "monitors": [ { "use": "exchangeVS_owa_https_monitor" } ], "minimumMonitors": 1 }, "exchangeVS_ad_https_monitor": { "class": "Monitor", "interval": 10, "timeout": 31, "monitorType": "http", "send": "GET /autodiscover/healthcheck.htm HTTP/1.1\r\nHost: vbgov.com\r\nConnection: Close\r\n\r\n", "receive": "200 OK" }, "exchangeVS_as_https_monitor": { "class": "Monitor", "interval": 10, "timeout": 31, "monitorType": "http", "send": "GET /Microsoft-Server-Activesync/healthcheck.htm HTTP/1.1\r\nHost: vbgov.com\r\nConnection: Close\r\n\r\n", "receive": "200 OK" }, "exchangeVS_ews_https_monitor": { "class": "Monitor", "interval": 10, "timeout": 31, "monitorType": "http", "send": "GET /EWS/healthcheck.htm HTTP/1.1\r\nHost: vbgov.com\r\nConnection: Close\r\n\r\n", "receive": "200 OK" }, "exchangeVS_owa_https_monitor": { "class": "Monitor", "interval": 10, "timeout": 31, "monitorType": "http", "send": "GET /owa/healthcheck.htm HTTP/1.1\r\nHost: vbgov.com\r\nConnection: Close\r\n\r\n", "receive": "200 OK" }, "exchangeVS_mapi_https_monitor": { "class": "Monitor", "interval": 10, "timeout": 31, "monitorType": "http", "send": "GET /MAPI/healthcheck.htm HTTP/1.1\r\nHost: vbgov.com\r\nConnection: Close\r\n\r\n", "receive": "200 OK" }, "Exch_owa_prod_http": { "class": "HTTP_Profile", "xForwardedFor": true, "hstsInsert": false, "hstsIncludeSubdomains": true, "hstsPreload": true }, "Exch_owa_prod_cache-optimize": { "parentProfile": { "bigip": "/Common/optimized-caching" }, "class": "HTTP_Acceleration_Profile", "uriIncludeList": [ "." ], "uriExcludeList": [ "/owa/ev.owa", "oab.xml" ] }, "Exch_owa_prod_wan-optimized-compression": { "class": "HTTP_Compress", "contentTypeIncludes": [ "text/(css | html | javascript | json | plain | postscript | richtext | rtf | vnd.wap.wml | vnd.wap.wmlscript | wap | wml | x-component | x-vcalendar | x-vcard | xml) ", "application/(css | css-stylesheet | doc | excel | javascript | json | lotus123 | mdb | mpp | ms-excel | ms-powerpoint | ms-word | msaccess | msexcel | mspowerpoint | msproject | msword | photoshop | postscript | powerpoint | ps | psd | quarkexpress | rtf | txt | visio | vnd.excel | vnd.ms-access | vnd.ms-excel | vnd.ms-powerpoint | vnd.ms-pps | vnd.ms-project | vnd.msword | vnd.ms-works | vnd.ms-works-db | vnd.msaccess | vnd.msexcel | vnd.mspowerpoint | vnd.msword | vnd.powerpoint | vnd.visio | vnd.wap.cmlscriptc | vnd.wap.wmlc | vnd.wap.xhtml+xml | vnd.word | vsd | winword | wks | word | x-excel | x-java-jnlp-file | x-javascript | x-json | x-lotus123 | x-mdb | x-ms-excel | x-ms-project | x-mscardfile | x-msclip | x-msexcel | x-mspowerpoint | x-msproject | x-msword | x-msworks-db | x-msworks-wps | x-photoshop | x-postscript | x-powerpoint | x-ps | x-quark-express | x-rtf | x-vermeer-rpc | x-visio | x-vsd | x-wks | x-word | x-xls | x-xml | xhtml+xml | xls | xml) ", "image/(photoshop | psd | x-photoshop | x-vsd)" ] }, "Exch_owa_prod_combined_pool_irule3": { "class": "iRule", "iRule": "when HTTP_REQUEST {\n switch -glob -- [string tolower [HTTP::path]] { \n \"/microsoft-server-activesync\" {\n TCP::idletime 1800\n pool exchangeVS_as_pool\n COMPRESS::disable\n CACHE::disable\n return\n } \n \"/owa\" {\n \n pool exchangeVS_owa_pool\n return\n }\n \"/ecp\" {\n \n pool exchangeVS_owa_pool\n return\n } \n \"/ews\" {\n pool exchangeVS_ews_pool\n COMPRESS::disable\n CACHE::disable\n return\n }\n \"/oab\" {\n pool exchangeVS_ews_pool\n persist none\n return\n } \n \"/mapi\" {\n pool exchangeVS_mapi_pool\n COMPRESS::disable\n CACHE::disable\n return\n } \n \"/autodiscover\" {\n pool exchangeVS_ad_pool\n persist none\n return\n } \n default {\n pool exchangeVS_owa_pool\n } \n }\n}\nwhen HTTP_RESPONSE {\n \n if {[HTTP::header exists \"Transfer-Encoding\"]} {\n HTTP::payload rechunk\n }\n}" }, "Exch_owa_prod_samesite_irule": { "class": "iRule", "iRule": { "base64": "d2hlbiBIVFRQX1JFU1BPTlNFX1JFTEVBU0UgewogICAgZm9yZWFjaCBteWNvb2tpZSBbSFRUUDo6Y29va2llIG5hbWVzXSB7CiAgICAgICAgSFRUUDo6Y29va2llIHNlY3VyZSAkbXljb29raWUgZW5hYmxlCiAgICB9Cn0=" } }, "Exch_owa_prod_owa_redirect_irule3": { "class": "iRule", "iRule": "priority 900\nwhen HTTP_REQUEST {\n if { ([HTTP::uri] == \"/\") } {\n HTTP::redirect https://[HTTP::host]/owa/\n }\n}" } } } }