On Ubuntu
EC2Server:
Type: AWS::EC2::Instance
Metadata:
Comment1: Configure the bootstrap helpers
AWS::CloudFormation::Init:
configSets:
default:
- "04_install_docker"
04_install_docker:
commands:
a_get_certificates:
command: 'sudo apt-get install -y apt-transport-https ca-certificates'
b_set_gpg_key:
command: 'curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg'
c_add_docker_repo:
command: 'echo "deb [arch=arm64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list'
d_update_aptget:
command: 'sudo apt-get update'
e_install_docker:
command: !Sub 'sudo apt-get install -y docker-ce docker-ce-cli containerd.io'
f_create_service:
command: 'sudo service docker start'
g_add_ubuntu_user_to_docker_group:
command: 'sudo usermod -aG docker ubuntu'
h_verify_installation:
command: 'docker run hello-world'
UserData:
Fn::Base64:
!Sub |
#!/bin/bash -xe
apt-get update
apt-get install -y python-setuptools
apt-get install -y net-tools
mkdir -p /opt/aws/bin
apt-get install -y wget
wget https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-py3-latest.tar.gz
python3 -m easy_install --script-dir /opt/aws/bin aws-cfn-bootstrap-py3-latest.tar.gz
wget https://s3.amazonaws.com/amazoncloudwatch-agent/ubuntu/arm64/latest/amazon-cloudwatch-agent.deb -O /tmp/amazon-cloudwatch-agent.deb
dpkg -i /tmp/amazon-cloudwatch-agent.deb
/opt/aws/bin/cfn-init -v --stack ${AWS::StackId} --resource EC2Server --region ${AWS::Region} --configsets default
/opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackId} --resource EC2Server --region ${AWS::Region}