Amazon Linux 2

Amazon Linux 2

Amazon Linux 2 is the next generation of Amazon Linux, a Linux server operating system from Amazon Web Services (AWS). It provides a secure, stable, and high performance execution environment to develop and run cloud and enterprise applications. With Amazon Linux 2, you get an application environment that offers long term support with access to the latest innovations in the Linux ecosystem. Amazon Linux 2 is provided at no additional charge.

Package update

  sudo yum update

Get system info

  cat /etc/image-id
  cat /etc/system-release

Mount a volume (EBS)

# Get drives info 
suod lsblk
# Get volumen info
sudo file -s /dev/xvdf
# Format volumne
sudo mkfs -t xfs /dev/xvdf
# Mount volume to folder data
sudo mkdir /data
sudo mount /dev/xvdf /data 

Extend the EBS

sudo xfs_growfs -d /data

Auto attached volume

sudo cp /etc/fstab /etc/fstab.orig

sudo lsblk -o +UUID
# You will see similar output below
# NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT UUID
# xvda    202:0    0  20G  0 disk
# └─xvda1 202:1    0  20G  0 part /          e75a1891-3463-448b-8f59-5e3353af90ba
# xvdb    202:16   0  60G  0 disk /data      897b5130-c5c1-4ac9-aae3-699d1eaa9fd5

# Use vim to edit /etc/fstab
sudo vim /etc/fstab

# Add following line 
# UUID=897b5130-c5c1-4ac9-aae3-699d1eaa9fd5  /data  xfs defaults,nofail  0  2

# Verify the mounting
sudo umount /data
sudo mount -a

lsblk

Add new user

  • Add new user without password

    sudo adduser new_user 
    
    ## Add user without password 
    sudo adduser new_user  --disabled-password
    
  • Switch to new user

    sudo su - new_user
    
  • Set password for new user

    sudo passwd new_user
    
  • Allow the new user to use sudo

    sudo usermod -aG wheel new_user
    

Install MySql

  • Install MySql 5.7

    # Add repo
    sudo wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
    sudo yum localinstall mysql57-community-release-el7-11.noarch.rpm 
    
    # Install mysql
    sudo yum install mysql-community-server
    
  • MySql configuration file sits in /etc/my.cnf

  • Update data directory

    # backup original one
    sudo cp /etc/my.cnf /etc/my.cnf.orig
    
  • Use vim to update the data directory

    datadir=/data/mysql
    

Start MySql as service

  • Install polkit before start the service, otherwise you will get error

    sudo yum install polkit
    
  • Enable & Start mysql

    sudo systemctl enable mysqld.service
    sudo systemctl start mysqld.service
    
  • Find the temporay password created for root in /var/log/mysql.log

    sudo cat /var/log/mysql.log | grep "temporary password"
    # output
    # [Note] A temporary password is generated for root@localhost: l<C-eX&GW8?m
    

Reset root password

  sudo mysql_secure_installation

Create remote login credentials

CREATE USER 'user_id'@'localhost' IDENTIFIED BY 'your_secret';
CREATE USER 'user_id'@'%' IDENTIFIED BY 'your_secret';

GRANT ALL ON *.* TO 'user_id'@'localhost';
GRANT ALL ON *.* TO 'user_id'@'%';

Install AWS CLI

# Install aws cli without sudo 
curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"
unzip awscli-bundle.zip
./awscli-bundle/install -b ~/bin/aws

# Configure cli 
aws configure
AWS Access Key ID [None]: AKXXXXXXXXXXXXXXXXXXXX
AWS Secret Access Key [None]: wJ37hsfSFJSDfhsfihakhfakhfu9763Fhshfsuff
Default region name [None]: region-code
Default output format [None]: json

Install EKS

curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
sudo mv /tmp/eksctl /usr/local/bin
ekstool --version

Install kubectl

curl -o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.15.10/2020-02-22/bin/linux/amd64/kubectl
chmod +x ./kubectl
mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$PATH:$HOME/bin

Install EPEL repository

## Amazon Linux 1 / 2
sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo yum update

## Amazon Linux 2
sudo amazon-linux-extras install epel