Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save chrisalbright/eee6b4eea28ab9d19a1f991130dce2ec to your computer and use it in GitHub Desktop.

Select an option

Save chrisalbright/eee6b4eea28ab9d19a1f991130dce2ec to your computer and use it in GitHub Desktop.

Revisions

  1. chrisalbright renamed this gist Dec 11, 2021. 1 changed file with 0 additions and 0 deletions.
  2. chrisalbright created this gist Dec 11, 2021.
    48 changes: 48 additions & 0 deletions configure-service-discovery-registration.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,48 @@
    #! /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