はじめに
そうだ、ブログサーバを引っ越ししましょう。
引っ越し前のブログサーバは、1 台の VPS に WordPress や MySQL などすべてを入れて動かしています。
今回、引越し先のサーバをセットアップし、WordPress が使用できる状態にするまでを記録します。
サーバインスタンスを立ち上げて、接続設定を行い、最後に Ansible を実行するところまでが範囲となります。
環境
- Ansible コントロールノード: CentOS 7.5 (Mac 上の仮想マシン)
- Ansible ターゲットノード: CentOS 7.5 (Conoha、以下、VPS)
- Ansible 以外で VPS をいじるのは MacBook Pro (Retina, 13-inch, Late 2012)、以下、Mac
作業一覧
- Conoha 管理画面からサーバを作成
- root ユーザでの SSH 接続の確認
- ユーザの追加
- root の SSH 接続を禁止
- 追加ユーザの公開鍵認証でのSSH接続
- Ansible 用ユーザ ansible の追加
- ansible ユーザの公開鍵認証でのSSH接続
- Ansible playbook の実行
- パスワードによる SSH 接続の禁止
Conoha 管理画面からサーバを作成
- サービス: メモリ512M
- イメージタイプ: CentOS 7.5(64bit)
- 他はデフォルトのまま。
root ユーザでの SSH 接続の確認
Mac などから
ssh root@192.0.2.0
ユーザの追加
VPS での作業
useradd username passwd username
Mac などのクライアントから追加ユーザで SSH ログインを確認
ssh username@192.0.2.0
root の SSH 接続を禁止
/etc/ssh/sshd_config の PermitRootLogin yes
を PermitRootLogin no
へと修正します。
# 編集と差分確認 cp -a /etc/ssh/sshd_config /etc/ssh/sshd_config.org sed -i -e 's/PermitRootLogin yes/PermitRootLogin no/g' /etc/ssh/sshd_config diff -up /etc/ssh/sshd_config.org /etc/ssh/sshd_config # 文法チェック sshd -t # ssh 再起動 systemctl restart sshd
Mac などのクライアントから root での SSH 接続できないことを確認
追加ユーザの公開鍵認証でのSSH接続
Mac での作業
cd ~/.ssh # 公開鍵および秘密鍵を作成 # ファイル名、パスフレーズ、パスフレーズの確認、の順に入力する。 ssh-keygen # VPS へ公開鍵を追加 # ssh-copy-id -i 公開鍵ファイル ユーザ名@接続先 ssh-copy-id -i ~/.ssh/conoha.pub username@192.0.2.0 # 公開鍵認証でのSSH接続確認 # ↓は公開鍵認証を使用しない SSH 接続 ssh username@192.0.2.0 # VPS での作業 # 追加した鍵情報が表示されれば OK cat .ssh/authorized_keys
Ansible 用ユーザの追加
VPS にて root ユーザで実施
useradd ansible passwd ansible # sudo 可能にする gpasswd -a ansible wheel
Ansible コントロールノードからターゲットノードへの接続確認と playbook の実行
の README.md にしたがって操作し、VPS へ接続できることを確認しました。
そして、playbook を実行し、ウェブブラウザからアクセスしてテスト用の WordPress が表示・操作できることを確かめました。
パスワードによる SSH 接続の禁止
/etc/ssh/sshd_config の PasswordAuthentication yes
を PasswordAuthentication no
へと修正します。
# 編集と差分確認 sed -i -e 's/PasswordAuthentication yes/PasswordAuthentication no/g' /etc/ssh/sshd_config diff -up /etc/ssh/sshd_config.org /etc/ssh/sshd_config # 文法チェック sshd -t # ssh 再起動 systemctl restart sshd
おわりに
Ansible のコントロールノードは仮想マシンとしました。けれども、公開鍵認証を行うことを考えると、別の機会に playbook 実行を同じターゲットノードへと行いたい場合、仮想マシンを破棄してしまっていては以前にターゲットノードに登録してた公開鍵が使えません。
コントロールノードで作成した秘密鍵をとっておかなければなりません。なんだか面倒です。
公開鍵認証での接続という方法自体には問題はありませんが、コマンドがあまり洗練されていないように感じます。ssh_config あたりを調べてもう少し学習してみようかと存じます。
さて、それはそれとして、無事に WordPress サーバが一瞬にして構築されました。続いて、引っ越しをしてまいりましょう♪
以上です。