はじめに
Oracle Cloud の勉強の一環で、公式のチュートリアルを基に進めていきます。公式のチュートリアルでは日本語、かつ、GUI操作の内容となっています。わかりやすく書かれているので、基本はこちらを参照していただけるとよいと思います。
このQiitaの記事は、上記のチュートリアルを CLI であえて実施した備忘録として書きます。
CLI の理由は、GUIと比べて再現性や再実行性が高いのと、なんとなくかっこいいから
今回のテーマ
Instance を作成
https://community.oracle.com/docs/DOC-1019204
前提作業
oci cliの導入
oci cli と jq コマンドを使用可能なこと。次のQiita記事で導入した手順を書いています
https://qiita.com/sugimount/items/63a8cfe1163030ae8804
公開鍵/秘密鍵の作成
Instance接続用に公開鍵/秘密鍵を作成します。
keyの種類はRSDで、鍵長は2048bit で作成します (Default)
ssh-keygen -b 2048 -t rsa
~/.ssh
に公開鍵/秘密鍵が作成されたことを確認します。
> ls -la ~/.ssh
total 4
drwx------ 1 sugi sugi 512 Feb 2 22:35 ./
drwxr-xr-x 1 sugi sugi 512 Feb 2 22:24 ../
-rw------- 1 sugi sugi 1675 Feb 2 22:35 id_rsa
-rw-r--r-- 1 sugi sugi 394 Feb 2 22:35 id_rsa.pub
Instanceの作成
oci コマンドでInstanceを作成する前に、前回作成したVCNの OICD を変数に格納します。
set vcn_ocid (oci network vcn list | jq -r '.data | map(select(.["display-name"] == "TutorialVCN"))[].id')
subnet の OCID も変数に格納します
set subnet1_ocid (oci network subnet list --vcn-id $vcn_ocid | jq -r '.data | map(select(.["display-name"] == "tutorial_subnet1"))[].id')
次に、作成するInstanceのImageの OCID を取得します。以下のコマンドで、Oracle Linux 7.6 の Image 一覧の中から、最も最近に作成されたImageのOCIDを変数に格納します。
oci compute image list コマンドを実行した結果を目視で確認して、GPU
という文字が含まれていないものの中から選択します
oci compute image list --sort-by TIMECREATED --sort-order DESC | jq -r '.data | map(select( .["operating-system"] == "Oracle Linux" and .["operating-system-version"] == "7.6"))'
set oraclelinux76_ocid (echo ocid1.image.oc1.iad.aaaaaaaawufnve5jxze4xf7orejupw5iq3pms6cuadzjc7klojix6vmk42va)
memo ocid取得コマンド
oci compute image list --operating-system "Canonical Ubuntu" --operating-system-version "18.04 Minimal" --sort-by TIMECREATED --sort-order DESC | jq -r ".data[0].id"
Instanceを作成します。hostnameにアンダーバーは付与できないので、アンダーバーから、ハイフンに変更しています
混乱しやすい一部のパラメータの説明を書きます
--assign-public-ip
これを true にすると、作成したInstanceに紐づく VNIC に Public IP (Internet からアクセス可能なグローバルIP) が付与されます。
ただ、これは Ephemeral Public IP となるため、Reserved Public IP を付与したい場合は別の方法で設定する必要があります。
今回は、Reserved Public IP を使用したいため、false としてインスタンスを作成します。
oci compute instance launch \
--availability-domain AJtg:US-ASHBURN-AD-1 \
--fault-domain FAULT-DOMAIN-1 \
--shape VM.Standard2.1 \
--display-name ins_oralinux_1 \
--hostname-label ins-oralinux-1 \
--image-id $oraclelinux76_ocid \
--subnet-id $subnet1_ocid \
--assign-public-ip false \
--private-ip 172.16.1.2 \
--ssh-authorized-keys-file ~/.ssh/id_rsa.pub
作成したinstance の OCID を取得します
set instance1_ocid (oci compute instance list --display-name ins_oralinux_1 --lifecycle-state RUNNING | jq -r '.data[0].id')
memo instance の削除
oci compute instance terminate --instance-id $instance1_ocid --force
Reserved Public IP の作成
まずは、作成したInstanceのVNIC OCID を取得し変数へ格納します
set instance1_vnic_ocid (oci compute instance list-vnics --instance-id $instance1_ocid | jq -r '.data[0].id')
VNIC に付与されている Private IP の OCID を取得し変数へ格納します
set instance1_privateip_ocid (oci network private-ip list --vnic-id $instance1_vnic_ocid | jq -r '.data[0].id')
Reserved Public IP の作成
oci network public-ip create --lifetime RESERVED --display-name tutorial_pubip1 --private-ip-id $instance1_privateip_ocid
作成した Reserved Public IP のOCID を変数に格納します
set publicip_ocid (oci network public-ip list --scope REGION | jq -r '.data | map(select(.["display-name"] == "tutorial_pubip1"))[0].id')
SSHでアクセス
作成したインスタンスに付与されている Public IP 宛にアクセスを行います
ssh -i ~/id_rsa opc@129.213.70.149
実行例
> ssh -i ~/.ssh/id_rsa opc@129.213.70.149
[opc@ins-oralinux-1 ~]$
Instanceの諸々を確認してみた
Oracle Linux を始めて触るため、諸々を確認します
Linuxのバージョン確認
[opc@ins-oralinux-1 ~]$ cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.6 (Maipo)
Interfaceの確認。もちろん Public IP は付与されていなく、Private IP が見えています
[opc@ins-oralinux-1 ~]$ ip -d a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 promiscuity 0 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc mq state UP group default qlen 1000
link/ether 02:00:17:02:d0:81 brd ff:ff:ff:ff:ff:ff promiscuity 0 numtxqueues 4 numrxqueues 4 gso_max_size 65536 gso_max_segs 65535
inet 172.16.1.2/24 brd 172.16.1.255 scope global dynamic ens3
valid_lft 81426sec preferred_lft 81426sec
Routing Table の確認。
- Default Routeは、172.16.1.1
- 仕様で書かれている通り、
169.254.0.0/16
あての通信はStaticRouteが設定されている
[opc@ins-oralinux-1 ~]$ ip r
default via 172.16.1.1 dev ens3
169.254.0.0/16 dev ens3 proto static scope link
169.254.0.0/16 dev ens3 scope link metric 1002
172.16.1.0/24 dev ens3 proto kernel scope link src 172.16.1.2
Mountの確認
[opc@ins-oralinux-1 ~]$ df -hT
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 7.2G 0 7.2G 0% /dev
tmpfs tmpfs 7.3G 0 7.3G 0% /dev/shm
tmpfs tmpfs 7.3G 8.6M 7.3G 1% /run
tmpfs tmpfs 7.3G 0 7.3G 0% /sys/fs/cgroup
/dev/sda3 xfs 39G 2.1G 37G 6% /
/dev/sda1 vfat 200M 9.6M 191M 5% /boot/efi
tmpfs tmpfs 1.5G 0 1.5G 0% /run/user/1000
CPUの確認
Linux からは、CPUが2個見えています。 InstanceのShapeは、VM.Standard2.1を選んでいて、これはOCPU(Oracle Compute Units) が1なので、Instanceには1個の物理CPUコアを割り当てており、Hyper-threading 後の2個の論理CPUとして見えています。
[opc@ins-oralinux-1 ~]$ cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 85
model name : Intel(R) Xeon(R) Platinum 8167M CPU @ 2.00GHz
stepping : 4
microcode : 0x1
cpu MHz : 1995.309
cache size : 16384 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 1
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology cpuid tsc_known_freq pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2
x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single pti ssbd ibrs ibpb tpr_shadow vnmi flexpriority ept fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx avx512f rdseed adx smap avx512cd xsaveopt xsavec xgetbv1 xsaves arat
bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf
bogomips : 3990.61
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management:
processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 85
model name : Intel(R) Xeon(R) Platinum 8167M CPU @ 2.00GHz
stepping : 4
microcode : 0x1
cpu MHz : 1995.309
cache size : 16384 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 1
apicid : 1
initial apicid : 1
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology cpuid tsc_known_freq pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2
x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single pti ssbd ibrs ibpb tpr_shadow vnmi flexpriority ept fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx avx512f rdseed adx smap avx512cd xsaveopt xsavec xgetbv1 xsaves arat
bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf
bogomips : 3990.61
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management:
Memoryの確認
[opc@ins-oralinux-1 ~]$ free -m
total used free shared buff/cache available
Mem: 14763 231 13878 8 653 14214
Swap: 8191 0 8191
block device の確認
約46.6GBの Boot Volume を使用していることを OCI 上で確認出来ていて、Root領域、SWAP領域、Boot領域の3種類で分割されています
TRAN (転送タイプ) は表示されていないのね。local通信なのかな
[root@ins-oralinux-1 ~]# lsblk --pairs
NAME="sda" MAJ:MIN="8:0" RM="0" SIZE="46.6G" RO="0" TYPE="disk" MOUNTPOINT=""
NAME="sda2" MAJ:MIN="8:2" RM="0" SIZE="8G" RO="0" TYPE="part" MOUNTPOINT="[SWAP]"
NAME="sda3" MAJ:MIN="8:3" RM="0" SIZE="38.4G" RO="0" TYPE="part" MOUNTPOINT="/"
NAME="sda1" MAJ:MIN="8:1" RM="0" SIZE="200M" RO="0" TYPE="part" MOUNTPOINT="/boot/efi"
[root@ins-oralinux-1 ~]# lsblk -tS
NAME ALIGNMENT MIN-IO OPT-IO PHY-SEC LOG-SEC ROTA SCHED RQ-SIZE RA WSAME NAME HCTL TYPE VENDOR MODEL REV TRAN
sda 0 4096 1048576 4096 512 1 mq-deadline 256 128 32M sda 2:0:0:1 disk ORACLE BlockVolume 1.0
[root@ins-oralinux-1 ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda2 swap 10f7b32d-47ad-4fa1-96ea-2e38bef56f17 [SWAP]
├─sda3 xfs 5dfe1823-ab77-4d85-a0e9-3c4602c5f518 /
└─sda1 vfat 4A01-26AE /boot/efi
fstab の確認
[root@ins-oralinux-1 ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Tue Jan 15 22:54:24 2019
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=5dfe1823-ab77-4d85-a0e9-3c4602c5f518 / xfs defaults,_netdev,_netdev 0 0
UUID=4A01-26AE /boot/efi vfat defaults,uid=0,gid=0,umask=0077,shortname=winnt,_netdev,_netdev,x-initrd.mount 0
0
UUID=10f7b32d-47ad-4fa1-96ea-2e38bef56f17 swap swap defaults,_netdev,x-initrd.mount 0 0
######################################
## ORACLE CLOUD INFRASTRUCTURE CUSTOMERS
##
## If you are adding an iSCSI remote block volume to this file you MUST
## include the '_netdev' mount option or your instance will become
## unavailable after the next reboot.
## SCSI device names are not stable across reboots; please use the device UUID instead of /dev path.
##
## Example:
## UUID="94c5aade-8bb1-4d55-ad0c-388bb8aa716a" /data1 xfs defaults,noatime,_netdev 0 2
##
## More information:
## https://docs.us-phoenix-1.oraclecloud.com/Content/Block/Tasks/connectingtoavolume.htm
cloud-init の設定ファイル確認
growpart がコメントアウトされている?
[root@ins-oralinux-1 ~]# cat /etc/cloud/cloud.cfg
users:
- default
disable_root: 1
ssh_pwauth: 0
mount_default_fields: [~, ~, 'auto', 'defaults,nofail', '0', '2']
resize_rootfs_tmp: /dev
ssh_deletekeys: 0
ssh_genkeytypes: ~
syslog_fix_perms: ~
datasource_list: ['OpenStack']
datasource:
OpenStack:
metadata_urls: ['http://169.254.169.254']
timeout: 10
max_wait: 20
cloud_init_modules:
- migrator
- bootcmd
- write-files
# The growpart module is disabled by default. To enable automatic boot volume resizing, uncomment
# the below entry for '- growpart' and reboot. All the dependent packages for the growpart
# module to work such as cloud-utils-growpart and gdisk are already included in the image.
#- growpart
- resizefs
- rsyslog
- users-groups
- ssh
cloud_config_modules:
- mounts
- locale
- set-passwords
- yum-add-repo
- package-update-upgrade-install
- timezone
- puppet
- chef
- salt-minion
- mcollective
- disable-ec2-metadata
- runcmd
cloud_final_modules:
- rightscale_userdata
- scripts-per-once
- scripts-per-boot
- scripts-per-instance
- scripts-user
- ssh-authkey-fingerprints
- keys-to-console
- phone-home
- final-message
system_info:
default_user:
name: opc
lock_passwd: true
gecos: Oracle Public Cloud User
groups: [wheel, adm, systemd-journal]
sudo: ["ALL=(ALL) NOPASSWD:ALL"]
shell: /bin/bash
distro: rhel
paths:
cloud_dir: /var/lib/cloud
templates_dir: /etc/cloud/templates
ssh_svcname: sshd
# vim:syntax=yaml
削除時の注意
Instanceを削除したときには、それに関連するVNICは削除されますが、Reserved Public IP は削除されません。こちらも忘れずに削除するようにしましょう。
参考URL
チュートリアル一覧