From f3d02f96d834a3492735cc0e8ab29d00f452f700 Mon Sep 17 00:00:00 2001 From: Ryan Hass Date: Tue, 8 Oct 2024 17:01:48 -0700 Subject: [PATCH] Fix order of operations in instructions. (#195503) ## Summary The enroll command must be executed after the elastic-agent is running. This updates the instructions so that users are told to enable and start the agent before running the `enroll` command to ensure the socket file is created and available. This fixes issues with errors like this: ``` {"log.level":"info","@timestamp":"2024-10-08T20:47:06.857Z","log.origin":{"function":"github.com/elastic/elastic-agent/internal/pkg/agent/cmd.(*enrollCmd).enrollWithBackoff","file.name":"cmd/enroll_cmd.go","file.line":518},"message":"Starting enrollment to URL: https://.fleet.us-west-2.aws.elastic.cloud:443/","ecs.version":"1.6.0"} {"log.level":"info","@timestamp":"2024-10-08T20:47:08.681Z","log.origin":{"function":"github.com/elastic/elastic-agent/internal/pkg/agent/cmd.(*enrollCmd).daemonReloadWithBackoff","file.name":"cmd/enroll_cmd.go","file.line":481},"message":"Restarting agent daemon, attempt 0","ecs.version":"1.6.0"} {"log.level":"error","@timestamp":"2024-10-08T20:47:08.683Z","log.origin":{"function":"github.com/elastic/elastic-agent/internal/pkg/agent/cmd.(*enrollCmd).daemonReloadWithBackoff","file.name":"cmd/enroll_cmd.go","file.line":495},"message":"Restart attempt 0 failed: 'rpc error: code = Unavailable desc = connection error: desc = \"transport: Error while dialing: dial unix /usr/share/elastic-agent/elastic-agent.sock: connect: no such file or directory\"'. Waiting for 2s","ecs.version":"1.6.0"} ``` ### Checklist N/A ### For maintainers - [ ] This was checked for breaking API changes and was [labeled appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process) (cherry picked from commit 13c2c7663546da0f6b34e5dd85932ebc74ecafa7) # Conflicts: # x-pack/plugins/fleet/public/applications/fleet/components/fleet_server_instructions/utils/install_command_utils.test.ts --- .../utils/install_command_utils.test.ts | 36 +++++++++---------- .../utils/install_command_utils.ts | 4 +-- .../enrollment_instructions/manual/index.tsx | 4 +-- 3 files changed, 22 insertions(+), 22 deletions(-) diff --git a/x-pack/plugins/fleet/public/applications/fleet/components/fleet_server_instructions/utils/install_command_utils.test.ts b/x-pack/plugins/fleet/public/applications/fleet/components/fleet_server_instructions/utils/install_command_utils.test.ts index 21a2cc53257f76..5000caa69e3e79 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/components/fleet_server_instructions/utils/install_command_utils.test.ts +++ b/x-pack/plugins/fleet/public/applications/fleet/components/fleet_server_instructions/utils/install_command_utils.test.ts @@ -74,12 +74,12 @@ describe('getInstallCommandForPlatform', () => { expect(res).toMatchInlineSnapshot(` "curl -L -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent--x86_64.rpm sudo rpm -vi elastic-agent--x86_64.rpm + sudo systemctl enable elastic-agent + sudo systemctl start elastic-agent sudo elastic-agent enroll \\\\ --fleet-server-es=http://elasticsearch:9200 \\\\ --fleet-server-service-token=service-token-1 \\\\ - --fleet-server-port=8220 - sudo systemctl enable elastic-agent - sudo systemctl start elastic-agent" + --fleet-server-port=8220" `); }); @@ -93,12 +93,12 @@ describe('getInstallCommandForPlatform', () => { expect(res).toMatchInlineSnapshot(` "curl -L -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent--amd64.deb sudo dpkg -i elastic-agent--amd64.deb + sudo systemctl enable elastic-agent + sudo systemctl start elastic-agent sudo elastic-agent enroll \\\\ --fleet-server-es=http://elasticsearch:9200 \\\\ --fleet-server-service-token=service-token-1 \\\\ - --fleet-server-port=8220 - sudo systemctl enable elastic-agent - sudo systemctl start elastic-agent" + --fleet-server-port=8220" `); }); @@ -199,13 +199,13 @@ describe('getInstallCommandForPlatform', () => { expect(res).toMatchInlineSnapshot(` "curl -L -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent--x86_64.rpm sudo rpm -vi elastic-agent--x86_64.rpm + sudo systemctl enable elastic-agent + sudo systemctl start elastic-agent sudo elastic-agent enroll \\\\ --fleet-server-es=http://elasticsearch:9200 \\\\ --fleet-server-service-token=service-token-1 \\\\ --fleet-server-policy=policy-1 \\\\ - --fleet-server-port=8220 - sudo systemctl enable elastic-agent - sudo systemctl start elastic-agent" + --fleet-server-port=8220" `); }); @@ -220,13 +220,13 @@ describe('getInstallCommandForPlatform', () => { expect(res).toMatchInlineSnapshot(` "curl -L -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent--amd64.deb sudo dpkg -i elastic-agent--amd64.deb + sudo systemctl enable elastic-agent + sudo systemctl start elastic-agent sudo elastic-agent enroll \\\\ --fleet-server-es=http://elasticsearch:9200 \\\\ --fleet-server-service-token=service-token-1 \\\\ --fleet-server-policy=policy-1 \\\\ - --fleet-server-port=8220 - sudo systemctl enable elastic-agent - sudo systemctl start elastic-agent" + --fleet-server-port=8220" `); }); }); @@ -356,6 +356,8 @@ describe('getInstallCommandForPlatform', () => { expect(res).toMatchInlineSnapshot(` "curl -L -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent--x86_64.rpm sudo rpm -vi elastic-agent--x86_64.rpm + sudo systemctl enable elastic-agent + sudo systemctl start elastic-agent sudo elastic-agent enroll --url=http://fleetserver:8220 \\\\ --fleet-server-es=http://elasticsearch:9200 \\\\ --fleet-server-service-token=service-token-1 \\\\ @@ -364,9 +366,7 @@ describe('getInstallCommandForPlatform', () => { --fleet-server-es-ca= \\\\ --fleet-server-cert= \\\\ --fleet-server-cert-key= \\\\ - --fleet-server-port=8220 - sudo systemctl enable elastic-agent - sudo systemctl start elastic-agent" + --fleet-server-port=8220" `); }); @@ -383,6 +383,8 @@ describe('getInstallCommandForPlatform', () => { expect(res).toMatchInlineSnapshot(` "curl -L -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent--amd64.deb sudo dpkg -i elastic-agent--amd64.deb + sudo systemctl enable elastic-agent + sudo systemctl start elastic-agent sudo elastic-agent enroll --url=http://fleetserver:8220 \\\\ --fleet-server-es=http://elasticsearch:9200 \\\\ --fleet-server-service-token=service-token-1 \\\\ @@ -391,9 +393,7 @@ describe('getInstallCommandForPlatform', () => { --fleet-server-es-ca= \\\\ --fleet-server-cert= \\\\ --fleet-server-cert-key= \\\\ - --fleet-server-port=8220 - sudo systemctl enable elastic-agent - sudo systemctl start elastic-agent" + --fleet-server-port=8220" `); }); }); diff --git a/x-pack/plugins/fleet/public/applications/fleet/components/fleet_server_instructions/utils/install_command_utils.ts b/x-pack/plugins/fleet/public/applications/fleet/components/fleet_server_instructions/utils/install_command_utils.ts index 79809b94470e4e..5158483cdb1f35 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/components/fleet_server_instructions/utils/install_command_utils.ts +++ b/x-pack/plugins/fleet/public/applications/fleet/components/fleet_server_instructions/utils/install_command_utils.ts @@ -124,8 +124,8 @@ export function getInstallCommandForPlatform( linux: `${artifact.downloadCommand}\nsudo ./elastic-agent install ${commandArgumentsStr}`, mac: `${artifact.downloadCommand}\nsudo ./elastic-agent install ${commandArgumentsStr}`, windows: `${artifact.downloadCommand}\n.\\elastic-agent.exe install ${commandArgumentsStr}`, - deb: `${artifact.downloadCommand}\nsudo elastic-agent enroll ${commandArgumentsStr}\nsudo systemctl enable elastic-agent\nsudo systemctl start elastic-agent`, - rpm: `${artifact.downloadCommand}\nsudo elastic-agent enroll ${commandArgumentsStr}\nsudo systemctl enable elastic-agent\nsudo systemctl start elastic-agent`, + deb: `${artifact.downloadCommand}\nsudo systemctl enable elastic-agent\nsudo systemctl start elastic-agent\nsudo elastic-agent enroll ${commandArgumentsStr}`, + rpm: `${artifact.downloadCommand}\nsudo systemctl enable elastic-agent\nsudo systemctl start elastic-agent\nsudo elastic-agent enroll ${commandArgumentsStr}`, kubernetes: '', cloudFormation: '', googleCloudShell: '', diff --git a/x-pack/plugins/fleet/public/components/enrollment_instructions/manual/index.tsx b/x-pack/plugins/fleet/public/components/enrollment_instructions/manual/index.tsx index e5733983dd754c..df0000681c5765 100644 --- a/x-pack/plugins/fleet/public/components/enrollment_instructions/manual/index.tsx +++ b/x-pack/plugins/fleet/public/components/enrollment_instructions/manual/index.tsx @@ -72,11 +72,11 @@ cd elastic-agent-${agentVersion}-windows-x86_64 const linuxDebCommand = `curl -L -O ${downloadBaseUrl}/beats/elastic-agent/elastic-agent-${agentVersion}-amd64.deb sudo dpkg -i elastic-agent-${agentVersion}-amd64.deb -sudo elastic-agent enroll ${enrollArgs} \nsudo systemctl enable elastic-agent \nsudo systemctl start elastic-agent`; +sudo systemctl enable elastic-agent \nsudo systemctl start elastic-agent \nsudo elastic-agent enroll ${enrollArgs} \n`; const linuxRpmCommand = `curl -L -O ${downloadBaseUrl}/beats/elastic-agent/elastic-agent-${agentVersion}-x86_64.rpm sudo rpm -vi elastic-agent-${agentVersion}-x86_64.rpm -sudo elastic-agent enroll ${enrollArgs} \nsudo systemctl enable elastic-agent \nsudo systemctl start elastic-agent`; +sudo systemctl enable elastic-agent \nsudo systemctl start elastic-agent \nsudo elastic-agent enroll ${enrollArgs} \n`; const googleCloudShellCommand = `gcloud config set project ${gcpProjectId} && ${ gcpAccountType === 'organization-account' ? `ORG_ID=${gcpOrganizationId}` : ``