星期六, 7月 27, 2019

AWS CLI 指令建立 EC2 機器 with Userdata 小記

AWS  CLI 指令建立 EC2 機器 with Userdata 小記


之前有使用 aws cli 建立 EC2, 但是建立 EC2 之後會有後續想要進行的動作, 例如安裝套件或是其他的要求, 這個部份其實可以在安裝的時候透過 userdata 來指定, 這一篇小記就是紀錄 aws-cli 建立 EC2 加上 userdata 作法.


一樣使用之前建立的 Container with 雲平台工具


OS: Container with openSUSE Leap 15


==== 在主機上面 ====


啟動 container


> docker  run  -v  ~/.aws:/root/.aws -v  ~/.azure:/root/.azure  -v ~/.config/gcloud:/root/.config/gcloud  -v  ~/.ssh:/root/.ssh  -it  sakana/ansible_opensuse15  /bin/bash


==== 在 container 內 ====


參考官方文件


官方文件提到可以搭配 --user-data 參數使用 run-instances


先來看看這次要實驗的 defaul_userdata 檔案內容


#!/bin/bash
# Turn on password authentication for lab challenge
# not use passwd --stdin because some OS not support
#echo 'lab-password' | passwd ec2-user --stdin
# Use chpasswd to change password 
# example: useradd -m ansible && echo "ansible:2016StudyArea" | chpasswd
echo "ec2-user:2019TestEC2" | chpasswd
sed -i 's|[#]*PasswordAuthentication no|PasswordAuthentication yes|g' /etc/ssh/sshd_config
systemctl restart sshd.service


  • 將 ec2-user 密碼設定為 lab-password
  • 開啟 sshd 使用密碼驗證, 重啟 sshd 服務讓設定生效
  • 在容器內中文註解有問題, 所以我先把註解用英文


接下來準備建立 EC2, 參考之前的文章


這邊有些需要的資訊, 可以使用指令的方式, 也可以使用 console 方式來取的
  • Image-id
    • # aws  ec2  describe-images  --filters  'Name=name,Values=openSUSE*'
  • Subnet-id
    • # aws  ec2  describe-subnets
  • Security-group-id
    • # aws  ec2  describe-security-groups
  • Key-name
    • # aws ec2 describe-key-pairs

執行 aws 指令建立 EC2


# aws  ec2  run-instances --image-id  ami-026fef571e7830801 --subnet-id  subnet-92dfe4fb --security-group-ids sg-090a6648734644255  --instance-type  t2.micro --key-name  test-key --count  1 --user-data  file://AWS/user-data/default_userdata


接下來驗證是否成功


==== 在主機上面 ====


使用 ssh  -l ec2-user@SERVER_IP
看看是否可以登入, 如果可以就是大功告成


~ enjoy it

Reference:

沒有留言: