Responsive Ads Here

Friday 18 October 2019

Install/Bootstrap Node.js on EC2 instance with User Data

EC2 User data is probably the best way to bootstrap your instance. While AWS Documentation provides a great way to install Node.js on EC2 server once it is up, instructions provided in there are a little tricky to put together in a user data script / command. Primary reason being that the instructions don’t use a standard package manager (yum / apt-get).
Here is the simplest way to achieve that with a shell script, you can specify it in the User data
Here’s a screenshot
install node

install_node.sh


1
2
3
4
#!/bin/bash
USER=ec2-user # For Ubuntu AMI mention ubuntu etc.
NODE_VERSION=node # installs latest, for specific mention version number e.g. 8.9.4
su - $USER -c "#!/bin/bash;  cd ~ ;curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.32.0/install.sh > install.sh;chmod +x install.sh;./install.sh; cd .nvm ; chmod +x nvm.sh ;. ./nvm.sh ; nvm install $NODE_VERSION"

Copy the above content into a file on your computer and provide that for user data (Configure Instance -> Advanced Details -> User data, select As file and provide this file)
The script installs the latest version of node but you can also specify a particular version, for example to install version 8.9.4, assign version number like this

1
NODE_VERSION=8.9.4 # installs latest, for specific mention version number e.g. 8.9.4

In case of AMIs other than Amazon Linux please update the USER for example in case of an Ubuntu AMI, assign following

1
USER=ubuntu # For Ubuntu AMI mention ubuntu etc.

Script Actions

  1. Download the NVM (node version manager) install script
  2. Changes permissions to make it executable
  3. Installs NVM
  4. Loads NVM paths to profile
  5. Installs Node.js

Installation Verification

Once the EC2 instance is provisioned and running, login and run following command

1
node -v

Installation logs can be found in /var/log/cloud-init-output.log

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# /var/log/cloud-init-output.log
Installing Node.js for ec2-user version (node)
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
^M  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0^M100 10007  100 10007    0     0  43334      0 --:--:-- --:--:-- --:--:-- 43508
=> Downloading nvm as script to '/home/ec2-user/.nvm'

=> Appending source string to /home/ec2-user/.bashrc
=> Close and reopen your terminal to start using nvm or run the following to use it now:

export NVM_DIR="/home/ec2-user/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"  # This loads nvm
######################################################################## 100.0%
Computing checksum with sha256sum
Checksums matched!
Now using node v11.8.0 (npm v6.5.0)