Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save chrisalbright/eee6b4eea28ab9d19a1f991130dce2ec to your computer and use it in GitHub Desktop.
Save chrisalbright/eee6b4eea28ab9d19a1f991130dce2ec to your computer and use it in GitHub Desktop.
#! /bin/bash
EC2_METADATA=http://169.254.169.254/latest
REGION=$(curl -s $EC2_METADATA/dynamic/instance-identity/document | jq -r '.region')
INSTANCE_ID=$(curl -s $EC2_METADATA/meta-data/instance-id);
INSTANCE_IP=$(curl -s $EC2_METADATA/latest/meta-data/local-ipv4);
cat > /etc/init.d/cloudmap-register <<-EOF
#! /bin/bash -ex
aws servicediscovery register-instance \
--region $REGION \
--service-id {{serviceId}} \
--instance-id $INSTANCE_ID \
--attributes AWS_INSTANCE_IPV4=$INSTANCE_IP,AWS_INSTANCE_PORT={{instancePort}}
exit 0
EOF
chmod a+x /etc/init.d/cloudmap-register
cat > /etc/init.d/cloudmap-deregister <<-EOF
#! /bin/bash -ex
aws servicediscovery deregister-instance \
--region $REGION \
--service-id {{serviceid}} \
--instance-id $INSTANCE_ID
exit 0
EOF
chmod a+x /etc/init.d/cloudmap-deregister
cat > /usr/lib/systemd/system/cloudmap.service <<-EOF
[Unit]
Description=Run CloudMap service
Requires=network-online.target network.target
DefaultDependencies=no
Before=shutdown.target reboot.target halt.target
[Service]
Type=oneshot
KillMode=none
RemainAfterExit=yes
ExecStart=/etc/init.d/cloudmap-register
ExecStop=/etc/init.d/cloudmap-deregister
[Install]
WantedBy=multi-user.target
EOF
systemctl enable cloudmap.service
systemctl start cloudmap.service
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment