Skip to content

Commit 092e76e

Browse files
committed
TUN-5954: Start cloudflared service in Linux too similarly to other OSs
1 parent 62e1330 commit 092e76e

File tree

4 files changed

+31
-13
lines changed

4 files changed

+31
-13
lines changed

CHANGES.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,14 @@
44
achievable with: `cloudflared tunnel token --cred-file /path/to/file.json TUNNEL`. This new feature only works for
55
Tunnels created with cloudflared version 2022.3.0 or more recent.
66

7+
### Bug Fixes
8+
- `cloudflared service install` now starts the underlying agent service on Linux operating system (similarly to the
9+
behaviour in Windows and MacOS).
10+
711
## 2022.3.3
812
### Bug Fixes
913
- `cloudflared service install` now starts the underlying agent service on Windows operating system (similarly to the
10-
behaviour in Linux and MacOS).
14+
behaviour in MacOS).
1115

1216
## 2022.3.1
1317
### Bug Fixes

cmd/cloudflared/linux_service.go

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,12 @@ const (
4343
serviceConfigFile = "config.yml"
4444
serviceCredentialFile = "cert.pem"
4545
serviceConfigPath = serviceConfigDir + "/" + serviceConfigFile
46+
cloudflaredService = "cloudflared.service"
4647
)
4748

4849
var systemdTemplates = []ServiceTemplate{
4950
{
50-
Path: "/etc/systemd/system/cloudflared.service",
51+
Path: fmt.Sprintf("/etc/systemd/system/%s", cloudflaredService),
5152
Content: `[Unit]
5253
Description=cloudflared
5354
After=network.target
@@ -268,16 +269,19 @@ func installSystemd(templateArgs *ServiceTemplateArgs, log *zerolog.Logger) erro
268269
return err
269270
}
270271
}
271-
if err := runCommand("systemctl", "enable", "cloudflared.service"); err != nil {
272-
log.Err(err).Msg("systemctl enable cloudflared.service error")
272+
if err := runCommand("systemctl", "enable", cloudflaredService); err != nil {
273+
log.Err(err).Msgf("systemctl enable %s error", cloudflaredService)
273274
return err
274275
}
275276
if err := runCommand("systemctl", "start", "cloudflared-update.timer"); err != nil {
276277
log.Err(err).Msg("systemctl start cloudflared-update.timer error")
277278
return err
278279
}
279-
log.Info().Msg("running systemctl daemon-reload")
280-
return runCommand("systemctl", "daemon-reload")
280+
if err := runCommand("systemctl", "daemon-reload"); err != nil {
281+
log.Err(err).Msg("systemctl daemon-reload error")
282+
return err
283+
}
284+
return runCommand("systemctl", "start", cloudflaredService)
281285
}
282286

283287
func installSysv(templateArgs *ServiceTemplateArgs, log *zerolog.Logger) error {
@@ -300,7 +304,7 @@ func installSysv(templateArgs *ServiceTemplateArgs, log *zerolog.Logger) error {
300304
continue
301305
}
302306
}
303-
return nil
307+
return runCommand("service", "cloudflared", "start")
304308
}
305309

306310
func uninstallLinuxService(c *cli.Context) error {
@@ -323,8 +327,12 @@ func uninstallLinuxService(c *cli.Context) error {
323327
}
324328

325329
func uninstallSystemd(log *zerolog.Logger) error {
326-
if err := runCommand("systemctl", "disable", "cloudflared.service"); err != nil {
327-
log.Err(err).Msg("systemctl disable cloudflared.service error")
330+
if err := runCommand("systemctl", "disable", cloudflaredService); err != nil {
331+
log.Err(err).Msgf("systemctl disable %s error", cloudflaredService)
332+
return err
333+
}
334+
if err := runCommand("systemctl", "stop", cloudflaredService); err != nil {
335+
log.Err(err).Msgf("systemctl stop %s error", cloudflaredService)
328336
return err
329337
}
330338
if err := runCommand("systemctl", "stop", "cloudflared-update.timer"); err != nil {
@@ -337,10 +345,18 @@ func uninstallSystemd(log *zerolog.Logger) error {
337345
return err
338346
}
339347
}
348+
if err := runCommand("systemctl", "daemon-reload"); err != nil {
349+
log.Err(err).Msg("systemctl daemon-reload error")
350+
return err
351+
}
340352
return nil
341353
}
342354

343355
func uninstallSysv(log *zerolog.Logger) error {
356+
if err := runCommand("service", "cloudflared", "stop"); err != nil {
357+
log.Err(err).Msg("service cloudflared stop error")
358+
return err
359+
}
344360
if err := sysvTemplate.Remove(); err != nil {
345361
log.Err(err).Msg("error removing service template")
346362
return err

cmd/cloudflared/service_template.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,10 +95,10 @@ func runCommand(command string, args ...string) error {
9595
return fmt.Errorf("error starting %s: %v", command, err)
9696
}
9797

98-
_, _ = ioutil.ReadAll(stderr)
98+
output, _ := ioutil.ReadAll(stderr)
9999
err = cmd.Wait()
100100
if err != nil {
101-
return fmt.Errorf("%s returned with error: %v", command, err)
101+
return fmt.Errorf("%s %v returned with error code %v due to: %v", command, args, err, string(output))
102102
}
103103
return nil
104104
}

component-tests/test_service.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -141,12 +141,10 @@ def test_sysv_service_with_token(self, tmp_path, component_tests_config):
141141

142142
def sysv_service_scenario(self, config, tmp_path, extra_assertions=None, use_token=False):
143143
with self.run_service(tmp_path, config, root=True, use_token=use_token):
144-
self.sysv_cmd("start")
145144
self.sysv_cmd("status")
146145
wait_tunnel_ready(tunnel_url=config.get_url())
147146
if extra_assertions is not None:
148147
extra_assertions()
149-
self.sysv_cmd("stop")
150148

151149
# Service install copies config file to /etc/cloudflared/config.yml
152150
subprocess.run(["sudo", "rm", "/etc/cloudflared/config.yml"])

0 commit comments

Comments
 (0)