Skip to content

Commit d5778cc

Browse files
authored
[Elastic Agent] Fix RPM and DEB packaging for Elastic Agent (#19959) (#19993)
* Fix the path.config argument. * Fix run to be the default subcommand, add in the logging flags to elastic-agent. * Run mage fmt. * Fix more packaging issues. * Fix format. * Fix packaging. * Fix go vet. (cherry picked from commit f053295)
1 parent 2848ad7 commit d5778cc

File tree

8 files changed

+39
-27
lines changed

8 files changed

+39
-27
lines changed

dev-tools/packaging/packages.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,16 +54,16 @@ shared:
5454
/etc/init.d/{{.BeatServiceName}}:
5555
template: '{{ elastic_beats_dir }}/dev-tools/packaging/templates/{{.PackageType}}/init.sh.tmpl'
5656
mode: 0755
57-
/etc/{{.BeatName}}/data/downloads/filebeat-{{ beat_version }}{{if .Snapshot}}-SNAPSHOT{{end}}-{{.GOOS}}-{{.AgentArchName}}.tar.gz:
57+
/var/lib/{{.BeatName}}/downloads/filebeat-{{ beat_version }}{{if .Snapshot}}-SNAPSHOT{{end}}-{{.GOOS}}-{{.AgentArchName}}.tar.gz:
5858
source: '{{ elastic_beats_dir }}/x-pack/filebeat/build/distributions/filebeat-{{ beat_version }}{{if .Snapshot}}-SNAPSHOT{{end}}-{{.GOOS}}-{{.AgentArchName}}.tar.gz'
5959
mode: 0644
60-
/etc/{{.BeatName}}/data/downloads/metricbeat-{{ beat_version }}{{if .Snapshot}}-SNAPSHOT{{end}}-{{.GOOS}}-{{.AgentArchName}}.tar.gz:
60+
/var/lib/{{.BeatName}}/downloads/metricbeat-{{ beat_version }}{{if .Snapshot}}-SNAPSHOT{{end}}-{{.GOOS}}-{{.AgentArchName}}.tar.gz:
6161
source: '{{ elastic_beats_dir }}/x-pack/metricbeat/build/distributions/metricbeat-{{ beat_version }}{{if .Snapshot}}-SNAPSHOT{{end}}-{{.GOOS}}-{{.AgentArchName}}.tar.gz'
6262
mode: 0644
63-
/etc/{{.BeatName}}/data/downloads/filebeat-{{ beat_version }}{{if .Snapshot}}-SNAPSHOT{{end}}-{{.GOOS}}-{{.AgentArchName}}.tar.gz.sha512:
63+
/var/lib/{{.BeatName}}/downloads/filebeat-{{ beat_version }}{{if .Snapshot}}-SNAPSHOT{{end}}-{{.GOOS}}-{{.AgentArchName}}.tar.gz.sha512:
6464
source: '{{ elastic_beats_dir }}/x-pack/filebeat/build/distributions/filebeat-{{ beat_version }}{{if .Snapshot}}-SNAPSHOT{{end}}-{{.GOOS}}-{{.AgentArchName}}.tar.gz.sha512'
6565
mode: 0644
66-
/etc/{{.BeatName}}/data/downloads/metricbeat-{{ beat_version }}{{if .Snapshot}}-SNAPSHOT{{end}}-{{.GOOS}}-{{.AgentArchName}}.tar.gz.sha512:
66+
/var/lib/{{.BeatName}}/downloads/metricbeat-{{ beat_version }}{{if .Snapshot}}-SNAPSHOT{{end}}-{{.GOOS}}-{{.AgentArchName}}.tar.gz.sha512:
6767
source: '{{ elastic_beats_dir }}/x-pack/metricbeat/build/distributions/metricbeat-{{ beat_version }}{{if .Snapshot}}-SNAPSHOT{{end}}-{{.GOOS}}-{{.AgentArchName}}.tar.gz.sha512'
6868
mode: 0644
6969

dev-tools/packaging/templates/linux/systemd.unit.tmpl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ Group={{ .BeatUser }}
1212
Environment="BEAT_LOG_OPTS="
1313
Environment="BEAT_CONFIG_OPTS=-c /etc/{{.BeatName}}/{{.BeatName}}.yml"
1414
Environment="BEAT_PATH_OPTS=--path.home /usr/share/{{.BeatName}} --path.config /etc/{{.BeatName}} --path.data /var/lib/{{.BeatName}} --path.logs /var/log/{{.BeatName}}"
15-
ExecStart=/usr/share/{{.BeatName}}/bin/{{.BeatName}} -environment systemd $BEAT_LOG_OPTS $BEAT_CONFIG_OPTS $BEAT_PATH_OPTS
15+
ExecStart=/usr/share/{{.BeatName}}/bin/{{.BeatName}} --environment systemd $BEAT_LOG_OPTS $BEAT_CONFIG_OPTS $BEAT_PATH_OPTS
1616
Restart=always
1717

1818
[Install]

dev-tools/packaging/templates/windows/install-service.ps1.tmpl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ $workdir = Split-Path $MyInvocation.MyCommand.Path
1111
# Create the new service.
1212
New-Service -name {{.BeatName}} `
1313
-displayName {{.BeatName | title}} `
14-
-binaryPathName "`"$workdir\{{.BeatName}}.exe`" -environment=windows_service -c `"$workdir\{{.BeatName}}.yml`" --path.home `"$workdir`" --path.data `"C:\ProgramData\{{.BeatName}}`" --path.logs `"C:\ProgramData\{{.BeatName}}\logs`" -E logging.files.redirect_stderr=true"
14+
-binaryPathName "`"$workdir\{{.BeatName}}.exe`" --environment=windows_service -c `"$workdir\{{.BeatName}}.yml`" --path.home `"$workdir`" --path.data `"C:\ProgramData\{{.BeatName}}`" --path.logs `"C:\ProgramData\{{.BeatName}}\logs`" -E logging.files.redirect_stderr=true"
1515

1616
# Attempt to set the service to delayed start using sc config.
1717
Try {

libbeat/logp/configure/logging.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ func init() {
4242
flag.BoolVar(&verbose, "v", false, "Log at INFO level")
4343
flag.BoolVar(&toStderr, "e", false, "Log to stderr and disable syslog/file output")
4444
common.StringArrVarFlag(nil, &debugSelectors, "d", "Enable certain debug selectors")
45-
flag.Var((*environmentVar)(&environment), "environment", "set environment the Beat is run in")
45+
flag.Var((*environmentVar)(&environment), "environment", "set environment being ran in")
4646
}
4747

4848
// Logging builds a logp.Config based on the given common.Config and the specified

x-pack/elastic-agent/pkg/agent/application/global_config.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,10 @@ func InjectAgentConfig(c *config.Config) error {
2525
func agentGlobalConfig() map[string]interface{} {
2626
return map[string]interface{}{
2727
"path": map[string]interface{}{
28-
"data": paths.Data(),
29-
"home": paths.Home(),
28+
"data": paths.Data(),
29+
"config": paths.Config(),
30+
"home": paths.Home(),
31+
"logs": paths.Logs(),
3032
},
3133
}
3234
}

x-pack/elastic-agent/pkg/agent/application/info/agent_id.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ type ioStore interface {
3737

3838
// AgentConfigFile is a name of file used to store agent information
3939
func AgentConfigFile() string {
40-
return filepath.Join(paths.Home(), defaultAgentConfigFile)
40+
return filepath.Join(paths.Config(), defaultAgentConfigFile)
4141
}
4242

4343
// AgentActionStoreFile is the file that will contains the action that can be replayed after restart.

x-pack/elastic-agent/pkg/agent/application/paths/paths.go

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,18 @@ import (
1111
)
1212

1313
var (
14-
homePath string
15-
dataPath string
16-
logsPath string
14+
homePath string
15+
configPath string
16+
dataPath string
17+
logsPath string
1718
)
1819

1920
func init() {
2021
exePath := retrieveExecutablePath()
2122

2223
fs := flag.CommandLine
2324
fs.StringVar(&homePath, "path.home", exePath, "Agent root path")
25+
fs.StringVar(&configPath, "path.config", exePath, "Config path is the directory Agent looks for its config file")
2426
fs.StringVar(&dataPath, "path.data", filepath.Join(exePath, "data"), "Data path contains Agent managed binaries")
2527
fs.StringVar(&logsPath, "path.logs", exePath, "Logs path contains Agent log output")
2628
}
@@ -31,6 +33,11 @@ func Home() string {
3133
return homePath
3234
}
3335

36+
// Config returns a directory where configuration file lives
37+
func Config() string {
38+
return configPath
39+
}
40+
3441
// Data returns the data directory for Agent
3542
func Data() string {
3643
return dataPath

x-pack/elastic-agent/pkg/agent/cmd/common.go

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,14 @@ package cmd
66

77
import (
88
"flag"
9-
"fmt"
109
"os"
1110
"path/filepath"
1211

1312
"github.com/spf13/cobra"
1413

14+
// import logp flags
15+
_ "github.com/elastic/beats/v7/libbeat/logp/configure"
16+
1517
"github.com/elastic/beats/v7/x-pack/elastic-agent/pkg/agent/application/paths"
1618
"github.com/elastic/beats/v7/x-pack/elastic-agent/pkg/basecmd"
1719
"github.com/elastic/beats/v7/x-pack/elastic-agent/pkg/cli"
@@ -20,23 +22,17 @@ import (
2022
const defaultConfig = "elastic-agent.yml"
2123

2224
type globalFlags struct {
23-
PathConfig string
24-
PathConfigFile string
25-
FlagStrictPerms bool
25+
PathConfigFile string
2626
}
2727

2828
// Config returns path which identifies configuration file.
2929
func (f *globalFlags) Config() string {
3030
if len(f.PathConfigFile) == 0 || f.PathConfigFile == defaultConfig {
31-
return filepath.Join(paths.Home(), defaultConfig)
31+
return filepath.Join(paths.Config(), defaultConfig)
3232
}
3333
return f.PathConfigFile
3434
}
3535

36-
func (f *globalFlags) StrictPermission() bool {
37-
return f.FlagStrictPerms
38-
}
39-
4036
// NewCommand returns the default command for the agent.
4137
func NewCommand() *cobra.Command {
4238
return NewCommandWithArgs(os.Args, cli.NewIOStreams())
@@ -50,19 +46,26 @@ func NewCommandWithArgs(args []string, streams *cli.IOStreams) *cobra.Command {
5046

5147
flags := &globalFlags{}
5248

49+
// path flags
5350
cmd.PersistentFlags().AddGoFlag(flag.CommandLine.Lookup("path.home"))
51+
cmd.PersistentFlags().AddGoFlag(flag.CommandLine.Lookup("path.config"))
5452
cmd.PersistentFlags().AddGoFlag(flag.CommandLine.Lookup("path.data"))
5553
cmd.PersistentFlags().AddGoFlag(flag.CommandLine.Lookup("path.logs"))
54+
cmd.PersistentFlags().StringVarP(&flags.PathConfigFile, "c", "c", defaultConfig, `Configuration file, relative to path.config`)
5655

57-
cmd.PersistentFlags().StringVarP(&flags.PathConfigFile, "", "c", defaultConfig, fmt.Sprintf(`Configuration file, relative to path.config (default "%s")`, defaultConfig))
58-
cmd.PersistentFlags().StringVarP(&flags.PathConfig, "path.config", "", "${path.home}", "Configuration path")
59-
cmd.PersistentFlags().BoolVarP(&flags.FlagStrictPerms, "strict.perms", "", true, "Strict permission checking on config files")
56+
// logging flags
57+
cmd.PersistentFlags().AddGoFlag(flag.CommandLine.Lookup("v"))
58+
cmd.PersistentFlags().AddGoFlag(flag.CommandLine.Lookup("e"))
59+
cmd.PersistentFlags().AddGoFlag(flag.CommandLine.Lookup("d"))
60+
cmd.PersistentFlags().AddGoFlag(flag.CommandLine.Lookup("environment"))
6061

61-
// Add version.
62+
// subcommands
63+
run := newRunCommandWithArgs(flags, args, streams)
6264
cmd.AddCommand(basecmd.NewDefaultCommandsWithArgs(args, streams)...)
63-
cmd.AddCommand(newRunCommandWithArgs(flags, args, streams))
65+
cmd.AddCommand(run)
6466
cmd.AddCommand(newEnrollCommandWithArgs(flags, args, streams))
6567
cmd.AddCommand(newIntrospectCommandWithArgs(flags, args, streams))
68+
cmd.Run = run.Run
6669

6770
return cmd
6871
}

0 commit comments

Comments
 (0)