-
Notifications
You must be signed in to change notification settings - Fork 8.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[UII] Add proxy args to install snippets #193922
Conversation
… enrollment snippets
🤖 GitHub commentsExpand to view the GitHub comments
Just comment with:
|
Pinging @elastic/fleet (Team:Fleet) |
@@ -23,6 +23,12 @@ properties: | |||
type: string | |||
download_source_id: | |||
type: string | |||
space_ids: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
thanks for adding this 👍
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍 the spec for this API isn't actually compiled due to it being an internal route, but figured I'd keep it up-to-date anyway
@@ -70,26 +78,28 @@ function getArtifact( | |||
|
|||
export function getInstallCommandForPlatform( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am wondering if it will make sense to use an an object with named parameters here as argument, as we have so many parameter
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yeah, this was really annoying when I was working here. I'll go ahead and change it to an object
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
updated
@lucabelluccini As you filed the original issue, could you give this a look to make sure I captured everything with the right proxy args and syntax? TIA 🙏 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hello @jen-huang
I would double check with Elastic Agent team how --proxy-url <url>
will be applied to the local config and which will be the affected "connections".
We always pass the --proxy-url <url>
(and this is what I suggested in the issue 😓 ) but I think it might be needed to have separate scoped proxy settings...
@lucabelluccini I clarified with that team that setting TBH I was hoping for a second set of eyes on the |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Left a small comment but otherwise LGTM
export const getDownloadBaseUrl = (downloadSource?: DownloadSource) => { | ||
return downloadSource?.host.endsWith('/') | ||
? downloadSource.host.substring(0, downloadSource.host.length - 1) | ||
: 'https://artifacts.elastic.co/downloads'; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nit: you could use the constant in
export const DEFAULT_DOWNLOAD_SOURCE_URI = 'https://artifacts.elastic.co/downloads/'; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
good call, thank you!
💛 Build succeeded, but was flaky
Failed CI StepsTest Failures
Metrics [docs]Async chunks
Page load bundle
History
To update your PR or re-run it, just comment with: cc @jen-huang |
Starting backport for target branches: 8.x https://github.com/elastic/kibana/actions/runs/11132154920 |
💔 All backports failed
Manual backportTo create the backport manually run:
Questions ?Please refer to the Backport tool documentation |
💚 All backports created successfully
Note: Successful backport PRs will be merged automatically after passing CI. Questions ?Please refer to the Backport tool documentation |
## Summary Resolves elastic#184222. This PR: - Ensures custom agent binary download source URI is respected where ever it appears in command snippets, for both Fleet Server and Elastic Agent install instructions - If a proxy is associated with the source URI, the appropriate args are added to the commands as well - For `curl` commands, these are appended as `--proxy <url>` and `--proxy-header "<key>-<value>"` (repeated for each header key/value pair) - For Windows, these are appended as `-Proxy "<url>"` and `-Headers @{"<key1>"="<value1>"; "<key2>"="<value2>"}` - Adjusts Fleet Server `./elastic-agent install` instructions so that: - `--fleet-server-es` is the value of the data output host set on that Fleet Server policy (must be ES output) - If a proxy is associated with that ES output, the corresponding args are appended: `--proxy-url=<url>` and `--proxy-header "<key>-<value>"` (repeated for each header key/value pair) The internal API at `/internal/fleet/settings/enrollment` has new properties added to its response to support this: ``` fleet_server: { es_output?: Output; es_output_proxy?: FleetProxy; }; download_source_proxy?: FleetProxy; ``` ## Examples **Fleet Server install with proxied custom download and proxied ES host:** ``` curl -L -O https://my-agent-binary-source/beats/elastic-agent/elastic-agent-9.0.0-linux-x86_64.tar.gz --proxy http://some-proxy:1111 --proxy-header "Accept-Language=en-US,en;q=0.5" --proxy-header "Accept-Encoding=gzip, deflate, br" tar xzvf elastic-agent-9.0.0-linux-x86_64.tar.gz cd elastic-agent-9.0.0-linux-x86_64 sudo ./elastic-agent install \ --fleet-server-es=http://localhost:9999 \ --fleet-server-service-token=REDACTED \ --fleet-server-policy=027a180f-2f4a-4dd1-a531-bf1d1d64179f \ --fleet-server-port=8220 \ --proxy-url=http://some-proxy:1111 \ --proxy-header="Accept-Language=en-US,en;q=0.5" \ --proxy-header="Accept-Encoding=gzip, deflate, br" ``` ``` $ProgressPreference = 'SilentlyContinue' Invoke-WebRequest -Uri https://my-agent-binary-source/beats/elastic-agent/elastic-agent-9.0.0-windows-x86_64.zip -OutFile elastic-agent-9.0.0-windows-x86_64.zip -Proxy "http://some-proxy:1111" -Headers @{"Accept-Language"="en-US,en;q=0.5";"Accept-Encoding"="gzip, deflate, br"} Expand-Archive .\elastic-agent-9.0.0-windows-x86_64.zip cd elastic-agent-9.0.0-windows-x86_64 .\elastic-agent.exe install ` --fleet-server-es=http://localhost:9999 ` --fleet-server-service-token=REDACTED ` --fleet-server-policy=027a180f-2f4a-4dd1-a531-bf1d1d64179f ` --fleet-server-port=8220 ` --proxy-url=http://some-proxy:1111 ` --proxy-header="Accept-Language=en-US,en;q=0.5" ` --proxy-header="Accept-Encoding=gzip, deflate, br" ``` **Elastic Agent install with proxied download source and proxied Fleet Server host:** ``` curl -L -O https://my-agent-binary-source/beats/elastic-agent/elastic-agent-8.15.1-darwin-aarch64.tar.gz --proxy http://some-proxy:1111 --proxy-header "Accept-Language=en-US,en;q=0.5" --proxy-header "Accept-Encoding=gzip, deflate, br" tar xzvf elastic-agent-8.15.1-darwin-aarch64.tar.gz cd elastic-agent-8.15.1-darwin-aarch64 sudo ./elastic-agent install --url=https://localhost:2222 --enrollment-token=REDACTED --proxy-url=http://some-proxy:1111 --proxy-header "Accept-Language=en-US,en;q=0.5" --proxy-header "Accept-Encoding=gzip, deflate, br" ``` ``` $ProgressPreference = 'SilentlyContinue' Invoke-WebRequest -Uri https://my-agent-binary-source/beats/elastic-agent/elastic-agent-8.15.1-windows-x86_64.zip -OutFile elastic-agent-8.15.1-windows-x86_64.zip -Proxy "http://some-proxy:1111" -Headers @{"Accept-Language"="en-US,en;q=0.5";"Accept-Encoding"="gzip, deflate, br"} Expand-Archive .\elastic-agent-8.15.1-windows-x86_64.zip -DestinationPath . cd elastic-agent-8.15.1-windows-x86_64 .\elastic-agent.exe install --url=https://localhost:2222 --enrollment-token=REDACTED --proxy-url=http://some-proxy:1111 --proxy-header "Accept-Language=en-US,en;q=0.5" --proxy-header "Accept-Encoding=gzip, deflate, br" ``` ### To-do - [x] Unit tests - [x] API integration tests for enrollment settings endpoint (cherry picked from commit 121ff39) # Conflicts: # x-pack/plugins/fleet/server/types/rest_spec/settings.ts
# Backport This will backport the following commits from `main` to `8.x`: - [[UII] Add proxy args to install snippets (#193922)](#193922) <!--- Backport version: 8.9.8 --> ### Questions ? Please refer to the [Backport tool documentation](https://github.com/sqren/backport) <!--BACKPORT [{"author":{"name":"Jen Huang","email":"[email protected]"},"sourceCommit":{"committedDate":"2024-10-01T19:30:24Z","message":"[UII] Add proxy args to install snippets (#193922)\n\n## Summary\r\n\r\nResolves #184222. This PR:\r\n\r\n- Ensures custom agent binary download source URI is respected where\r\never it appears in command snippets, for both Fleet Server and Elastic\r\nAgent install instructions\r\n- If a proxy is associated with the source URI, the appropriate args are\r\nadded to the commands as well\r\n- For `curl` commands, these are appended as `--proxy <url>` and\r\n`--proxy-header \"<key>-<value>\"` (repeated for each header key/value\r\npair)\r\n- For Windows, these are appended as `-Proxy \"<url>\"` and `-Headers\r\n@{\"<key1>\"=\"<value1>\"; \"<key2>\"=\"<value2>\"}`\r\n- Adjusts Fleet Server `./elastic-agent install` instructions so that:\r\n- `--fleet-server-es` is the value of the data output host set on that\r\nFleet Server policy (must be ES output)\r\n- If a proxy is associated with that ES output, the corresponding args\r\nare appended:\r\n`--proxy-url=<url>` and `--proxy-header \"<key>-<value>\"` (repeated for\r\neach header key/value pair)\r\n\r\nThe internal API at `/internal/fleet/settings/enrollment` has new\r\nproperties added to its response to support this:\r\n```\r\n fleet_server: {\r\n es_output?: Output;\r\n es_output_proxy?: FleetProxy;\r\n };\r\n download_source_proxy?: FleetProxy;\r\n```\r\n\r\n## Examples\r\n\r\n**Fleet Server install with proxied custom download and proxied ES\r\nhost:**\r\n```\r\ncurl -L -O https://my-agent-binary-source/beats/elastic-agent/elastic-agent-9.0.0-linux-x86_64.tar.gz --proxy http://some-proxy:1111 --proxy-header \"Accept-Language=en-US,en;q=0.5\" --proxy-header \"Accept-Encoding=gzip, deflate, br\"\r\ntar xzvf elastic-agent-9.0.0-linux-x86_64.tar.gz\r\ncd elastic-agent-9.0.0-linux-x86_64\r\nsudo ./elastic-agent install \\\r\n --fleet-server-es=http://localhost:9999 \\\r\n --fleet-server-service-token=REDACTED \\\r\n --fleet-server-policy=027a180f-2f4a-4dd1-a531-bf1d1d64179f \\\r\n --fleet-server-port=8220 \\\r\n --proxy-url=http://some-proxy:1111 \\\r\n --proxy-header=\"Accept-Language=en-US,en;q=0.5\" \\\r\n --proxy-header=\"Accept-Encoding=gzip, deflate, br\"\r\n```\r\n```\r\n$ProgressPreference = 'SilentlyContinue'\r\nInvoke-WebRequest -Uri https://my-agent-binary-source/beats/elastic-agent/elastic-agent-9.0.0-windows-x86_64.zip -OutFile elastic-agent-9.0.0-windows-x86_64.zip -Proxy \"http://some-proxy:1111\" -Headers @{\"Accept-Language\"=\"en-US,en;q=0.5\";\"Accept-Encoding\"=\"gzip, deflate, br\"}\r\nExpand-Archive .\\elastic-agent-9.0.0-windows-x86_64.zip\r\ncd elastic-agent-9.0.0-windows-x86_64\r\n.\\elastic-agent.exe install `\r\n --fleet-server-es=http://localhost:9999 `\r\n --fleet-server-service-token=REDACTED `\r\n --fleet-server-policy=027a180f-2f4a-4dd1-a531-bf1d1d64179f `\r\n --fleet-server-port=8220 `\r\n --proxy-url=http://some-proxy:1111 `\r\n --proxy-header=\"Accept-Language=en-US,en;q=0.5\" `\r\n --proxy-header=\"Accept-Encoding=gzip, deflate, br\"\r\n```\r\n\r\n**Elastic Agent install with proxied download source and proxied Fleet\r\nServer host:**\r\n```\r\ncurl -L -O https://my-agent-binary-source/beats/elastic-agent/elastic-agent-8.15.1-darwin-aarch64.tar.gz --proxy http://some-proxy:1111 --proxy-header \"Accept-Language=en-US,en;q=0.5\" --proxy-header \"Accept-Encoding=gzip, deflate, br\"\r\ntar xzvf elastic-agent-8.15.1-darwin-aarch64.tar.gz\r\ncd elastic-agent-8.15.1-darwin-aarch64\r\nsudo ./elastic-agent install --url=https://localhost:2222 --enrollment-token=REDACTED --proxy-url=http://some-proxy:1111 --proxy-header \"Accept-Language=en-US,en;q=0.5\" --proxy-header \"Accept-Encoding=gzip, deflate, br\"\r\n```\r\n```\r\n$ProgressPreference = 'SilentlyContinue'\r\nInvoke-WebRequest -Uri https://my-agent-binary-source/beats/elastic-agent/elastic-agent-8.15.1-windows-x86_64.zip -OutFile elastic-agent-8.15.1-windows-x86_64.zip -Proxy \"http://some-proxy:1111\" -Headers @{\"Accept-Language\"=\"en-US,en;q=0.5\";\"Accept-Encoding\"=\"gzip, deflate, br\"}\r\nExpand-Archive .\\elastic-agent-8.15.1-windows-x86_64.zip -DestinationPath .\r\ncd elastic-agent-8.15.1-windows-x86_64\r\n.\\elastic-agent.exe install --url=https://localhost:2222 --enrollment-token=REDACTED --proxy-url=http://some-proxy:1111 --proxy-header \"Accept-Language=en-US,en;q=0.5\" --proxy-header \"Accept-Encoding=gzip, deflate, br\"\r\n```\r\n\r\n### To-do\r\n- [x] Unit tests\r\n- [x] API integration tests for enrollment settings endpoint","sha":"121ff399672673844c5a92996c7a379894abeea8","branchLabelMapping":{"^v9.0.0$":"main","^v8.16.0$":"8.x","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["release_note:fix","Team:Fleet","v9.0.0","backport:prev-minor"],"number":193922,"url":"https://github.com/elastic/kibana/pull/193922","mergeCommit":{"message":"[UII] Add proxy args to install snippets (#193922)\n\n## Summary\r\n\r\nResolves #184222. This PR:\r\n\r\n- Ensures custom agent binary download source URI is respected where\r\never it appears in command snippets, for both Fleet Server and Elastic\r\nAgent install instructions\r\n- If a proxy is associated with the source URI, the appropriate args are\r\nadded to the commands as well\r\n- For `curl` commands, these are appended as `--proxy <url>` and\r\n`--proxy-header \"<key>-<value>\"` (repeated for each header key/value\r\npair)\r\n- For Windows, these are appended as `-Proxy \"<url>\"` and `-Headers\r\n@{\"<key1>\"=\"<value1>\"; \"<key2>\"=\"<value2>\"}`\r\n- Adjusts Fleet Server `./elastic-agent install` instructions so that:\r\n- `--fleet-server-es` is the value of the data output host set on that\r\nFleet Server policy (must be ES output)\r\n- If a proxy is associated with that ES output, the corresponding args\r\nare appended:\r\n`--proxy-url=<url>` and `--proxy-header \"<key>-<value>\"` (repeated for\r\neach header key/value pair)\r\n\r\nThe internal API at `/internal/fleet/settings/enrollment` has new\r\nproperties added to its response to support this:\r\n```\r\n fleet_server: {\r\n es_output?: Output;\r\n es_output_proxy?: FleetProxy;\r\n };\r\n download_source_proxy?: FleetProxy;\r\n```\r\n\r\n## Examples\r\n\r\n**Fleet Server install with proxied custom download and proxied ES\r\nhost:**\r\n```\r\ncurl -L -O https://my-agent-binary-source/beats/elastic-agent/elastic-agent-9.0.0-linux-x86_64.tar.gz --proxy http://some-proxy:1111 --proxy-header \"Accept-Language=en-US,en;q=0.5\" --proxy-header \"Accept-Encoding=gzip, deflate, br\"\r\ntar xzvf elastic-agent-9.0.0-linux-x86_64.tar.gz\r\ncd elastic-agent-9.0.0-linux-x86_64\r\nsudo ./elastic-agent install \\\r\n --fleet-server-es=http://localhost:9999 \\\r\n --fleet-server-service-token=REDACTED \\\r\n --fleet-server-policy=027a180f-2f4a-4dd1-a531-bf1d1d64179f \\\r\n --fleet-server-port=8220 \\\r\n --proxy-url=http://some-proxy:1111 \\\r\n --proxy-header=\"Accept-Language=en-US,en;q=0.5\" \\\r\n --proxy-header=\"Accept-Encoding=gzip, deflate, br\"\r\n```\r\n```\r\n$ProgressPreference = 'SilentlyContinue'\r\nInvoke-WebRequest -Uri https://my-agent-binary-source/beats/elastic-agent/elastic-agent-9.0.0-windows-x86_64.zip -OutFile elastic-agent-9.0.0-windows-x86_64.zip -Proxy \"http://some-proxy:1111\" -Headers @{\"Accept-Language\"=\"en-US,en;q=0.5\";\"Accept-Encoding\"=\"gzip, deflate, br\"}\r\nExpand-Archive .\\elastic-agent-9.0.0-windows-x86_64.zip\r\ncd elastic-agent-9.0.0-windows-x86_64\r\n.\\elastic-agent.exe install `\r\n --fleet-server-es=http://localhost:9999 `\r\n --fleet-server-service-token=REDACTED `\r\n --fleet-server-policy=027a180f-2f4a-4dd1-a531-bf1d1d64179f `\r\n --fleet-server-port=8220 `\r\n --proxy-url=http://some-proxy:1111 `\r\n --proxy-header=\"Accept-Language=en-US,en;q=0.5\" `\r\n --proxy-header=\"Accept-Encoding=gzip, deflate, br\"\r\n```\r\n\r\n**Elastic Agent install with proxied download source and proxied Fleet\r\nServer host:**\r\n```\r\ncurl -L -O https://my-agent-binary-source/beats/elastic-agent/elastic-agent-8.15.1-darwin-aarch64.tar.gz --proxy http://some-proxy:1111 --proxy-header \"Accept-Language=en-US,en;q=0.5\" --proxy-header \"Accept-Encoding=gzip, deflate, br\"\r\ntar xzvf elastic-agent-8.15.1-darwin-aarch64.tar.gz\r\ncd elastic-agent-8.15.1-darwin-aarch64\r\nsudo ./elastic-agent install --url=https://localhost:2222 --enrollment-token=REDACTED --proxy-url=http://some-proxy:1111 --proxy-header \"Accept-Language=en-US,en;q=0.5\" --proxy-header \"Accept-Encoding=gzip, deflate, br\"\r\n```\r\n```\r\n$ProgressPreference = 'SilentlyContinue'\r\nInvoke-WebRequest -Uri https://my-agent-binary-source/beats/elastic-agent/elastic-agent-8.15.1-windows-x86_64.zip -OutFile elastic-agent-8.15.1-windows-x86_64.zip -Proxy \"http://some-proxy:1111\" -Headers @{\"Accept-Language\"=\"en-US,en;q=0.5\";\"Accept-Encoding\"=\"gzip, deflate, br\"}\r\nExpand-Archive .\\elastic-agent-8.15.1-windows-x86_64.zip -DestinationPath .\r\ncd elastic-agent-8.15.1-windows-x86_64\r\n.\\elastic-agent.exe install --url=https://localhost:2222 --enrollment-token=REDACTED --proxy-url=http://some-proxy:1111 --proxy-header \"Accept-Language=en-US,en;q=0.5\" --proxy-header \"Accept-Encoding=gzip, deflate, br\"\r\n```\r\n\r\n### To-do\r\n- [x] Unit tests\r\n- [x] API integration tests for enrollment settings endpoint","sha":"121ff399672673844c5a92996c7a379894abeea8"}},"sourceBranch":"main","suggestedTargetBranches":[],"targetPullRequestStates":[{"branch":"main","label":"v9.0.0","labelRegex":"^v9.0.0$","isSourceBranch":true,"state":"MERGED","url":"https://github.com/elastic/kibana/pull/193922","number":193922,"mergeCommit":{"message":"[UII] Add proxy args to install snippets (#193922)\n\n## Summary\r\n\r\nResolves #184222. This PR:\r\n\r\n- Ensures custom agent binary download source URI is respected where\r\never it appears in command snippets, for both Fleet Server and Elastic\r\nAgent install instructions\r\n- If a proxy is associated with the source URI, the appropriate args are\r\nadded to the commands as well\r\n- For `curl` commands, these are appended as `--proxy <url>` and\r\n`--proxy-header \"<key>-<value>\"` (repeated for each header key/value\r\npair)\r\n- For Windows, these are appended as `-Proxy \"<url>\"` and `-Headers\r\n@{\"<key1>\"=\"<value1>\"; \"<key2>\"=\"<value2>\"}`\r\n- Adjusts Fleet Server `./elastic-agent install` instructions so that:\r\n- `--fleet-server-es` is the value of the data output host set on that\r\nFleet Server policy (must be ES output)\r\n- If a proxy is associated with that ES output, the corresponding args\r\nare appended:\r\n`--proxy-url=<url>` and `--proxy-header \"<key>-<value>\"` (repeated for\r\neach header key/value pair)\r\n\r\nThe internal API at `/internal/fleet/settings/enrollment` has new\r\nproperties added to its response to support this:\r\n```\r\n fleet_server: {\r\n es_output?: Output;\r\n es_output_proxy?: FleetProxy;\r\n };\r\n download_source_proxy?: FleetProxy;\r\n```\r\n\r\n## Examples\r\n\r\n**Fleet Server install with proxied custom download and proxied ES\r\nhost:**\r\n```\r\ncurl -L -O https://my-agent-binary-source/beats/elastic-agent/elastic-agent-9.0.0-linux-x86_64.tar.gz --proxy http://some-proxy:1111 --proxy-header \"Accept-Language=en-US,en;q=0.5\" --proxy-header \"Accept-Encoding=gzip, deflate, br\"\r\ntar xzvf elastic-agent-9.0.0-linux-x86_64.tar.gz\r\ncd elastic-agent-9.0.0-linux-x86_64\r\nsudo ./elastic-agent install \\\r\n --fleet-server-es=http://localhost:9999 \\\r\n --fleet-server-service-token=REDACTED \\\r\n --fleet-server-policy=027a180f-2f4a-4dd1-a531-bf1d1d64179f \\\r\n --fleet-server-port=8220 \\\r\n --proxy-url=http://some-proxy:1111 \\\r\n --proxy-header=\"Accept-Language=en-US,en;q=0.5\" \\\r\n --proxy-header=\"Accept-Encoding=gzip, deflate, br\"\r\n```\r\n```\r\n$ProgressPreference = 'SilentlyContinue'\r\nInvoke-WebRequest -Uri https://my-agent-binary-source/beats/elastic-agent/elastic-agent-9.0.0-windows-x86_64.zip -OutFile elastic-agent-9.0.0-windows-x86_64.zip -Proxy \"http://some-proxy:1111\" -Headers @{\"Accept-Language\"=\"en-US,en;q=0.5\";\"Accept-Encoding\"=\"gzip, deflate, br\"}\r\nExpand-Archive .\\elastic-agent-9.0.0-windows-x86_64.zip\r\ncd elastic-agent-9.0.0-windows-x86_64\r\n.\\elastic-agent.exe install `\r\n --fleet-server-es=http://localhost:9999 `\r\n --fleet-server-service-token=REDACTED `\r\n --fleet-server-policy=027a180f-2f4a-4dd1-a531-bf1d1d64179f `\r\n --fleet-server-port=8220 `\r\n --proxy-url=http://some-proxy:1111 `\r\n --proxy-header=\"Accept-Language=en-US,en;q=0.5\" `\r\n --proxy-header=\"Accept-Encoding=gzip, deflate, br\"\r\n```\r\n\r\n**Elastic Agent install with proxied download source and proxied Fleet\r\nServer host:**\r\n```\r\ncurl -L -O https://my-agent-binary-source/beats/elastic-agent/elastic-agent-8.15.1-darwin-aarch64.tar.gz --proxy http://some-proxy:1111 --proxy-header \"Accept-Language=en-US,en;q=0.5\" --proxy-header \"Accept-Encoding=gzip, deflate, br\"\r\ntar xzvf elastic-agent-8.15.1-darwin-aarch64.tar.gz\r\ncd elastic-agent-8.15.1-darwin-aarch64\r\nsudo ./elastic-agent install --url=https://localhost:2222 --enrollment-token=REDACTED --proxy-url=http://some-proxy:1111 --proxy-header \"Accept-Language=en-US,en;q=0.5\" --proxy-header \"Accept-Encoding=gzip, deflate, br\"\r\n```\r\n```\r\n$ProgressPreference = 'SilentlyContinue'\r\nInvoke-WebRequest -Uri https://my-agent-binary-source/beats/elastic-agent/elastic-agent-8.15.1-windows-x86_64.zip -OutFile elastic-agent-8.15.1-windows-x86_64.zip -Proxy \"http://some-proxy:1111\" -Headers @{\"Accept-Language\"=\"en-US,en;q=0.5\";\"Accept-Encoding\"=\"gzip, deflate, br\"}\r\nExpand-Archive .\\elastic-agent-8.15.1-windows-x86_64.zip -DestinationPath .\r\ncd elastic-agent-8.15.1-windows-x86_64\r\n.\\elastic-agent.exe install --url=https://localhost:2222 --enrollment-token=REDACTED --proxy-url=http://some-proxy:1111 --proxy-header \"Accept-Language=en-US,en;q=0.5\" --proxy-header \"Accept-Encoding=gzip, deflate, br\"\r\n```\r\n\r\n### To-do\r\n- [x] Unit tests\r\n- [x] API integration tests for enrollment settings endpoint","sha":"121ff399672673844c5a92996c7a379894abeea8"}}]}] BACKPORT-->
Summary
Resolves #184222. This PR:
curl
commands, these are appended as--proxy <url>
and--proxy-header "<key>-<value>"
(repeated for each header key/value pair)-Proxy "<url>"
and-Headers @{"<key1>"="<value1>"; "<key2>"="<value2>"}
./elastic-agent install
instructions so that:--fleet-server-es
is the value of the data output host set on that Fleet Server policy (must be ES output)--proxy-url=<url>
and--proxy-header "<key>-<value>"
(repeated for each header key/value pair)The internal API at
/internal/fleet/settings/enrollment
has new properties added to its response to support this:Examples
Fleet Server install with proxied custom download and proxied ES host:
Elastic Agent install with proxied download source and proxied Fleet Server host:
To-do