#1. はじめに
IBM CloudのVPCでサーバープロビジョニング時に自動的に初期化処理をしたいという要件がある(例えば、特定のSoftwareを導入する、など)。VPCのサーバーはcloud-initを利用しているので、このcloud-initにユーザーデータ(スクリプトやcloud-configなど)を送りこむことができる。今回はその機能が稼働することを試してみた。
#1. public gatewayの事前構成
サーバーから外部サイトのGitHubにインターネットアクセスできるようにしたいため、以下の設定を構成しておく
#2. サーバープロビジョニング時に、User data
にスクリプトを指定
VPCのVSIは内部的にはcloud-initを利用しているので、cloud-config
形式やシェル形式で記載できる。IBM Cloud docsでの記載はこちら。今回はシェルを記載した。
スクリプト例(タイムゾーンを反映させるためにApacheの自動起動を設定した後に再起動)
#!/bin/sh
timedatectl set-timezone Asia/Tokyo
yum install -y httpd mod_ssl openssl git
git clone https://github.com/nin2yasu/sampleweb.git
mv sampleweb/docs/* /var/www/html/
systemctl enable httpd
reboot
#3. テスト
# curl -I http://10.0.0.8
HTTP/1.1 200 OK
Date: Wed, 26 Aug 2020 03:19:00 GMT
Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips
Last-Modified: Wed, 26 Aug 2020 03:17:47 GMT
ETag: "153-5adbf439494f8"
Accept-Ranges: bytes
Content-Length: 339
Content-Type: text/html; charset=UTF-8
(他のVPC内部のサーバーからアクセスする)
# ssh root@10.0.0.8
The authenticity of host '10.0.0.8 (10.0.0.8)' can't be established.
ECDSA key fingerprint is SHA256:lmnbQ+aGJBrharZzfZNUFOlz4LTvMKhKeRMbQKgaf6U.
ECDSA key fingerprint is MD5:49:96:bd:68:48:d0:2f:28:0e:d1:65:f4:de:95:65:8d.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.0.8' (ECDSA) to the list of known hosts.
[root@web1 ~]# date
2020年 8月 26日 水曜日 12:29:16 JST