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