最終的にEC2かどうかは別としてもAWS上で動かすことになるんだから近い環境のAmazon Linuxがローカルで動いてれば安心じゃね?
って思ったので。
ローカルなのにEC2のロゴが出るの、なかなかの違和感。
Amazon Linux 2のVirtualBoxイメージ
https://cdn.amazonlinux.com/os-images/latest/virtualbox/
最新のVDIを取得。
seed.iso
https://cdn.amazonlinux.com/os-images/latest/
にあるサンプルのseed.isoでもいいけど。
meta-data
local-hostname: amazonlinux.onprem
user-data
#cloud-config
disable_root: false
ssh_pwauth: true
chpasswd:
expire: false
list: |
root:password
1行目はコメントっぽいけど消すと動かなくなるディレクティブのようなもの。
どうせローカル用だし必要ならあとから変えればいいのでrootでログインできるように変更し、rootのパスワードをpasswordに。
seed.isoの作成
genisoimage -output seed.iso -volid cidata -joliet -rock user-data meta-data
VirtualBox
Host-only Networkの作成
- IPv4 Address:
192.168.56.1
(お好きなように) - IPv4 ネットマスク:
255.255.255.0
(お好きなように)
VMの新規作成
Virtual machine Name and Operating System
- 名前:(お好きなように:ただし空白系の文字はNG)
- Folder:(お好きなように:ただし空白系の文字はNG)
- タイプ:
Linux
- バージョン:
RedHat (64-bit)
Hardware
- メインメモリー:(お好きなように)
- Processor:(お好きなように)
Virtual Hard disk
- Use an Existing Virtual Hard Disk File
- 指定したVM用ディレクトリにVMの名前と同じディレクトリができているので、AL2のVDIを「コピー」し、それを選択する
- なぜコピーかというと、設定をミスって最初からやり直したいときにもう一度ダウンロードしなくていいから
VMの設定
ストレージ
- 光学ドライブに作成したseed.isoをセット
ネットワーク
- アダプター 1
- 有効化
- 割り当て:NAT
- アダプター 2
- 有効化
- 割り当て:ホストオンリーアダプター
- 名前:作成したアダプターを選択
ここのアダプター 2
のMACアドレス
をしっかりメモしておく。
共有フォルダー
- フォルダーのパス:(お好きなところを)
- フォルダー名:(お好きな名前に)
- 永続化する
フォルダー名
って書いてあるけど実際は共有名みたいなもの。
ここまで設定したら一度VMを起動し、VM内で設定をする
キーボードを設定
localectl list-keymaps
localectl set-keymap jp-OADG109A
リモートからもrootで入れるように設定
/etc/ssh/sshd_config
を編集
PermitRootLogin yes
PasswordAuthentication yes
ホストオンリーネットワーク側のネットワークカード設定
※ eth0
がアダプター 1
※ eth1
がアダプター 2
/etc/sysconfig/network-scripts/ifcfg-eth1
を作成
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
DEFROUTE=no
BOOTPROTO=static
HWADDR=01:23:45:67:89:ab
NETWORK=192.168.56.0
IPADDR=192.168.56.101
NETMASK=255.255.255.0
ここがちょっと不親切。
HWADDR
はアダプター 2
のMACアドレス
NETWORK
はHost-only network
で指定したIPアドレス・ネットマスクから算出されるネットワークアドレス
IPADDR
はこのVMに割り当てたいIPアドレス(ただしネットワーク帯は意識)
NETMASK
はHost-only network
で指定したネットマスク(PREFIX
でも可)
ゲストOSから見たホストOSのIPがHost-only Network
で指定したIPv4 Address
に、
ホストOSから見たゲストOSのIPがここで設定したIPADDR
に
なる。
一旦終了
shutdown -h now
VMの設定(2回目)
ストレージ
seed.iso
はもう不要なので取り外しする。
その他設定
Guest Additions
VMのウィンドウにあるデバイス
→Guest Additions CDイメージの挿入...
を選択後、
mount /dev/cdrom /mnt/
/mnt/VBoxLinuxAdditions.run
umount /mnt/
これ以降、設定した共有フォルダを以下の書式でマウントできるようになる。
複数ある場合はシェルスクリプト化しておくと楽。
マウント先のディレクトリは先に作っておく必要がある。
mount -t vboxsf フォルダー名 マウント先パス
AWS CLI入れ直し
なんか古いしV1系統なのなぁぜなぁぜ?
yum remove awscli
以降は公式ドキュメントの手順で。
jq
curl -L https://github.com/stedolan/jq/releases/latest/download/jq-linux64 -o /usr/local/bin/jq
chmod +x /usr/local/bin/jq
yq
curl -L https://github.com/mikefarah/yq/releases/latest/download/yq_linux_386 -o /usr/local/bin/yq
chmod +x /usr/local/bin/yq
git
必要なパッケージをインストール
yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMaker autoconf gcc
ここの上の方にあるThe latest version is x.xx.x.
辺りからwget
してmake configure
して./configure
してmake all
してmake install
。
**env
pyenv
とかrbenv
とかgoenv
とか。
どのユーザでも使えるように/usr/local
以下にインストールし、設定する。
例としてpyenv
だけ。
git clone https://github.com/pyenv/pyenv.git /usr/local/pyenv
cat << EOF > /etc/profile.d/pyenv.sh
export PYENV_ROOT="/usr/local/pyenv"
export PATH="\${PYENV_ROOT}/bin:\${PATH}"
eval "\$(pyenv init -)"
EOF