スタートアップスクリプトを利用することでサーバーの追加時にあらかじめ設定したコマンド操作などを自動的に実行することができます。

スタートアップスクリプトによって「yumコマンドを実行しあらかじめ必要なアプリケーションをインストールする」「ユーザー追加をする」等のVPS作成時に行う初期設定を自動的に行うことができます。

ConoHaではコントロールパネルおよびAPIで作成したスクリプトを利用しサーバーを追加することができます。

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

スタートアップスクリプト使ってサーバーを追加する

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

VPS 3.0の場合:APIドキュメント – サーバー作成

VPS 2.0の場合:APIドキュメント – VM追加

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

VPS 3.0の場合

ConoHa VPSのバージョンについて確認される場合は こちら をご参照ください。

スクリプトの作成方法

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

・cloud-config形式

#cloud-config

merge_how:
  - name: list
    settings: [append]
  - name: dict
    settings: [no_replace, recurse_list]

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

merge_how:
  - name: list
    settings: [append]
  - name: dict
    settings: [no_replace, recurse_list]

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する必要があります。

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

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

・実行コマンド

base64 <ファイル名>
  • ※「<ファイル名>」は対象のスクリプトファイル名に置き換えてから実行いただく必要がございます。

・実行結果例

IyEvYmluL2Jhc2****************************************************************************
  • ※指定したファイル名をbase64形式にエンコードされた実行結果が出力されます。

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

VPS 2.0の場合

ConoHa VPSのバージョンについて確認される場合は こちら をご参照ください。

スクリプトの作成方法

サーバー追加時に一般ユーザーを追加し、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する必要があります。

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

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

・実行コマンド

base64 <ファイル名>
  • ※「<ファイル名>」は対象のスクリプトファイル名に置き換えてから実行いただく必要がございます。

・実行結果例

IyEvYmluL2Jhc2****************************************************************************
  • ※指定したファイル名をbase64形式にエンコードされた実行結果が出力されます。

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

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

お役立ち情報

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