Configure EC2 Instance
Scenarios:
- Ensure the EC2 machine created has
- some softwares (like git etc ) instance
- services like apache/tableu etc are started
- some files downloaded from internet
- Solution:
- for software installations we might create an ami (but ami requires storage cost)
- Services can be automatically started if they are configured in that way in AMI otherwise change AMI to meet your needs
- If we write some kind of startup script, which gets executed when the machine is created, then it will help.
- Lets install apache server on amazon linux instance
- As shown in the image below create an instance by changing user-data
- As shown in the image below create an instance by changing user-data
Cloud-init
-
A Startup script which gets launched when the vm is created and this approach is adopted by multiple clouds using a standard called as cloud-init.
-
In Cloud-init, user is expected to write a yaml file as mentioned over here
-
For overall documentation of cloud-init refer here
-
Userdata is stored in a service running in the ec2 machine on the ipaddress ‘169.254.169.254’
- To get latest userdata
curl http://169.254.169.254/latest/user-data
- To run user-data without restarting the machine
sudo -i curl http://169.254.169.254/latest/user-data > userdata.sh sh ./userdata.sh
- The logs of the user data are stored in /var/log/cloud-init-output.log
-
Instance-Metadata: Refer Here
-
Refer Here for simple cloud-init
-
simple example of cloud-init
#cloud-config
repo_update: true
repo_upgrades: all
packages:
- git
- tree
runcmd:
- [echo, 'helloworld']
- [echo, 'helloworld1']