目次

スタートアップスクリプトを利用することでサーバーの追加時にあらかじめ設定したコマンド操作などを自動的に実行することができます。スタートアップスクリプトによって「yumコマンドを実行しあらかじめ必要なアプリケーションをインストールする」「ユーザー追加をする」等のVPS作成時に行う初期設定を自動的に行うことができます。ConoHaではコントロールパネルおよびAPIで作成したスクリプトを利用しサーバーを追加することが出来ます。

コントロールパネルでスタートアップスクリプトを使用してサーバーを追加する方法は下記でご案内しています。
スタートアップスクリプト使ってサーバーを追加する

APIでスタートアップスクリプトを使用してサーバーを追加する際は下記のAPIを使用します。
APIドキュメント – VM追加

ここではスタートアップスクリプトの作成の例を紹介します。

スクリプトの作成方法

サーバー追加時に一般ユーザーを追加し、rootユーザのsshログインを禁止する場合のスタートアップスクリプトの一例を紹介します。(cloud-config形式とシェルスクリプト形式の2パターンを紹介します。)

cloud-config形式

#cloud-config

users:
  - default
  - name: "作成したいユーザー名"
    groups: wheel

runcmd:
  - echo "作成したユーザーに設定したいパスワード" | passwd --stdin "作成したいユーザー名"
  - sed -i /etc/ssh/sshd_config -e "s/PermitRootLogin yes/PermitRootLogin no/g"
  - sed -i /etc/ssh/sshd_config -e "s/#PermitRootLogin yes/PermitRootLogin no/g"
  - sed -i /etc/ssh/sshd_config -e "s/#PermitRootLogin no/PermitRootLogin no/g"
  - systemctl restart sshd

シェルスクリプト形式

#!/bin/sh

USERNAME='作成したいユーザー名'
PASSWORD='作成したユーザーに設定するパスワード'

useradd -m -G wheel -s /bin/bash "${USERNAME}"
echo "${PASSWORD}" | passwd --stdin "${USERNAME}"

sed -e "s/PermitRootLogin yes/PermitRootLogin no/g" -i /etc/ssh/sshd_config
sed -e "s/#PermitRootLogin yes/PermitRootLogin no/g" -i /etc/ssh/sshd_config
sed -e "s/#PermitRootLogin no/PermitRootLogin no/g" -i /etc/ssh/sshd_config

systemctl restart sshd

次にyum upgradeを実行し、Dockerをインストールするスタートアップスクリプトの例を紹介します。

cloud-config形式

#cloud-config

runcmd:
  - yum -y upgrade
  - yum -y install docker
  - systemctl enable --now docker
  - docker swarm join --token SWARM_TOKEN SWARM_MASTERNODE_IPADDRESS

シェルスクリプト形式

#!/bin/sh

yum -y upgrade
yum -y install docker
systemctl enable --now docker
docker swarm join --token SWARM_TOKEN SWARM_MASTERNODE_IPADDRESS

作成したスクリプトをエンコードする

APIでサーバーを追加する際にスタートアップスクリプトを利用する場合、あらかじめスクリプトをbase64 encodeする必要があります。

※コントロールパネルでスタートアップスクリプトを使用する場合にはエンコードする必要はありません。

ここでは一例として作成したスクリプトをCentOS7を使用してエンコードする方法を紹介します。

# base64 <ファイル名>

#下記のような結果が返ってきます。
IyEvYmluL2Jhc2****************************************************************************

以上でスタートアップスクリプトが用意できましたので、APIを利用してサーバーを追加してみましょう。

問題は解決できましたか?

お役立ち情報

ConoHaではサポートコンテンツの他にも以下のようなお役立ち情報をご用意しております。ぜひご活用ください。