-
Notifications
You must be signed in to change notification settings - Fork 145
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
Fix Elastic Agent non-fleet broken upgrade between 8.3.x releases #701
Changes from all commits
da44852
57025b3
ed8393b
5d89a4d
574395a
a73437d
88157ca
56a5001
d797de1
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
#!/usr/bin/env bash | ||
|
||
set -e | ||
|
||
symlink="/usr/share/elastic-agent/bin/elastic-agent" | ||
old_agent_dir="$( dirname "$(readlink -f -- "$symlink")" )" | ||
|
||
commit_hash="{{ commit_short }}" | ||
|
||
yml_path="$old_agent_dir/state.yml" | ||
enc_path="$old_agent_dir/state.enc" | ||
|
||
new_agent_dir="$( dirname "$old_agent_dir")/elastic-agent-$commit_hash" | ||
|
||
if ! [[ "$old_agent_dir" -ef "$new_agent_dir" ]]; then | ||
echo "migrate state from $old_agent_dir to $new_agent_dir" | ||
|
||
if test -f "$yml_path"; then | ||
echo "found "$yml_path", copy to "$new_agent_dir"." | ||
cp "$yml_path" "$new_agent_dir" | ||
fi | ||
|
||
if test -f "$enc_path"; then | ||
echo "found "$enc_path", copy to "$new_agent_dir"." | ||
cp "$enc_path" "$new_agent_dir" | ||
fi | ||
|
||
if test -f "$symlink"; then | ||
echo "found symlink $symlink, unlink" | ||
unlink "$symlink" | ||
fi | ||
|
||
echo "create symlink "$symlink" to "$new_agent_dir/elastic-agent"" | ||
ln -s "$new_agent_dir/elastic-agent" "$symlink" | ||
fi | ||
|
||
systemctl daemon-reload 2> /dev/null | ||
exit 0 |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -37,6 +37,7 @@ import ( | |
"github.com/elastic/elastic-agent/internal/pkg/agent/configuration" | ||
"github.com/elastic/elastic-agent/internal/pkg/agent/control/server" | ||
"github.com/elastic/elastic-agent/internal/pkg/agent/errors" | ||
"github.com/elastic/elastic-agent/internal/pkg/agent/migration" | ||
"github.com/elastic/elastic-agent/internal/pkg/agent/storage" | ||
"github.com/elastic/elastic-agent/internal/pkg/cli" | ||
"github.com/elastic/elastic-agent/internal/pkg/config" | ||
|
@@ -121,6 +122,22 @@ func run(override cfgOverrider) error { | |
createAgentID = false | ||
} | ||
|
||
// This is specific for the agent upgrade from 8.3.0 - 8.3.2 to 8.x and above on Linux and Windows platforms. | ||
// Addresses the issue: https://github.com/elastic/elastic-agent/issues/682 | ||
// The vault directory was located in the hash versioned "Home" directory of the agent. | ||
// This moves the vault directory two levels up into the "Config" directory next to fleet.enc file | ||
// in order to be able to "upgrade" the agent from deb/rpm that is not invoking the upgrade handle and | ||
// doesn't perform the migration of the state or vault. | ||
// If the agent secret doesn't exist, then search for the newest agent secret in the agent data directories | ||
// and migrate it into the new vault location. | ||
err = migration.MigrateAgentSecret(logger) | ||
logger.Debug("migration of agent secret completed, err: %v", err) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Does it need to be There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. think it's fine, it's noop on Darwin and would only do this kind of migration if the 8.3.0-8.3.2 agents where previously installed. |
||
if err != nil { | ||
err = errors.New(err, "failed to perfrom the agent secret migration") | ||
logger.Error(err) | ||
AndersonQ marked this conversation as resolved.
Show resolved
Hide resolved
|
||
return err | ||
} | ||
|
||
// Ensure we have the agent secret created. | ||
// The secret is not created here if it exists already from the previous enrollment. | ||
// This is needed for compatibility with agent running in standalone mode, | ||
|
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.
typo?