星期日, 7月 28, 2019

使用 gcloud 建立 openSUSE Leap 15 GCE with startup-script 小記

使用 gcloud 建立 openSUSE Leap 15 GCE with startup-script 小記

上一篇 Blog 寫 AWS CLI with userdata, 這一篇來寫 使用 gcloud 建立 openSUSE Leap 15 的 GCE ( Google Compute Engine ) 加上 startup-script ( 開機指令碼 )

目的跟之前一樣, 就是建立 VM ( 就是 GCE ) 的同時, 設定建立完成要執行的指令

OS: Container with openSUSE Leap 15
GCE: openSUSE Leap 15 on GCP

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

啟動 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

  • 這邊我有透過 -v 把本機上面的三個平台的設定檔掛載到容器內, 還有 .ssh 目錄 也掛載上面, 因為 google 的 SSH 金鑰 也會存放在裡面


==== 在 container 內 ====

參考官方文件

可以使用 --metadata-from-file 以及 startup-script 方式來指定

建立一個 default_startup-script 內容如下

#!/bin/bash
# edit by sakana 2019/7/27
# 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
useradd -m css-user
echo "css-user:20190727GCE" | chpasswd

# force user change password when first login
passwd -e css-user
#
sed -i 's|[#]*PasswordAuthentication no|PasswordAuthentication yes|g' /etc/ssh/sshd_config
systemctl restart sshd.service

  • 這邊我有實驗過, 不可以將兩個指令用 && 串接, 會失敗, 所以就先拆開為兩行, 以後再找原因

使用 gcloud 指令建立 openSUSE Leap 15 的 GCE ( VM )

# gcloud  compute  --project=sakanatest  instances  create  --zone=asia-east1-b  --machine-type=n1-standard-1  --image-project=opensuse-cloud  --image-family opensuse-leap --boot-disk-size=30GB --metadata-from-file startup-script=GCP/startup-script/default_startup-script  test20190727

  • --project 是因為我有多個 profile 所以指定那一個專案
  • 使用指定 --image-family 方式來取得最新的 image, 而不是 --image 指定某個版本 image 


接下來驗證是否成功

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

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

~ enjoy it



Reference:


沒有留言: