Why does my SystemD service not restart on reboots?

497 Views Asked by At

I am building an AMI using Packer, which has a custom SystemD unit configured. The AMI is then deployed to an EC2. The issue is that if the EC2 reboots, then the unit is not restarted.

Here is my unit:

[Unit]
Description=My service
After=network.target
StartLimitIntervalSec=0
StartLimitAction=reboot

[Service]
Type=simple
Restart=always
RestartSec=30
User=ubuntu
ExecStart=/opt/app/app

[Install]
WantedBy=multi-user.target

And here is my Packer configuration:

{
  "variables": {
    "aws_access_key": "{{env `AWS_ACCESS_KEY_ID`}}",
    "aws_secret_key": "{{env `AWS_SECRET_ACCESS_KEY`}}",
    "region":         "{{env `AWS_REGION`}}"
  },
  "builders": [
    {
      "access_key": "{{user `aws_access_key`}}",
      "ami_name": "my-app-{{timestamp}}",
      "instance_type": "t2.micro",
      "region": "{{user `region`}}",
      "secret_key": "{{user `aws_secret_key`}}",
      "source_ami_filter": {
        "filters": {
        "virtualization-type": "hvm",
        "name": "ubuntu/images/*ubuntu-bionic-18.04-amd64-server-*",
        "root-device-type": "ebs"
        },
        "owners": [ "099720109477" ],
        "most_recent": true
      },
      "ssh_username": "ubuntu",
      "type": "amazon-ebs"
    }
  ],
  "provisioners": [
    {
      "type": "shell",
      "script": "{{template_dir}}/provision.sh"
    },
    {
      "type": "file",
      "source": "{{template_dir}}/files/app.service",
      "destination": "/tmp/upload/etc/systemd/system/app.service"
    },
    {
      "type": "file",
      "source": "{{template_dir}}/../bin/Release/netcoreapp3.1/",
      "destination": "/tmp/upload/opt/app"
    },
    {
      "type": "shell",
      "inline": [
        "sudo rsync -a /tmp/upload/ /",
        "cd /opt/app",
        "sudo systemctl daemon-reload",
        "sudo systemctl enable app.service"
      ]
    }
  ]
}

Strangely, if I SSH into the running EC2 and enable the service, then it does restart after a reboot.

sudo systemctl enable app.service
sudo reboot

This makes me think I am not creating the AMI correctly, but in my Packer configuration I do enable the service!

Why does my AMI not have my SystemD unit enabled?

0

There are 0 best solutions below