ご利用ガイド スタートアップスクリプトを作成する
スタートアップスクリプトを利用することでサーバーの追加時にあらかじめ設定したコマンド操作などを自動的に実行することができます。
スタートアップスクリプトによって「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を利用してサーバーを追加してみましょう。
- 問題は解決できましたか?
-