-
Notifications
You must be signed in to change notification settings - Fork 0
Home
wate edited this page Aug 10, 2021
·
8 revisions
-
全体構成
- リポジトリはhistudy/infra
- サーバ基盤としてさくらのクラウドを利用
- ただしRedmineはwateさんの個人サーバを利用中
- TerraFormによるリソース管理
- TerraForm Cloudからプロビジョニングを実施
- usacloudプラグインを利用してさくらのクラウドを利用
- 管理対象
- 公開用Webサーバ
- 勉強会サイト(主に開催ログ掲載)
- ベースはさくらのクラウドのアーカイブにある
Debian GNU/Linux 10
- CPU 1コア/Mem 1GB/Disk 20GB
- DNSレコード(histudy.jp)
- Webサーバ用 Aレコード
- メールサーバ用 NS/MXレコード(さくらのメールサーバに向けてる)
- 公開用Webサーバ
-
Webサーバ(基盤部分)
- リポジトリはhistudy/server
- ホスト名:
histudy.jp
- Ansibleによる基盤管理
- ホスト名の設定
- 必要パッケージのインストール
- ufw
- sudo
- etckeeper
- fail2ban
- 攻撃対応
- sshのポート開放
- ufwでsshをallow
- 管理ユーザのsudo管理
- sshのポート開放
- パッケージを最新版優先とする
- backportsリポジトリの追加
- デフォルトリリースをbackportsに設定
- リソース監視対応
- mackerelのインストール
- リポジトリのAPTキー(GPG)を登録(Ansible apt_keyモジュール)
- リポジトリの登録(Ansible apt_repository)
- パッケージのインストール
- mackerel-agent
- mackerel-agent-plugins
- mackerel-check-plugins
- mkr
- 監視サービスのAPI設定
- mackerel-agentのコンフィグを書き換え(Ansible lineinfileモジュール)
- mackerelのインストール
- Webサーバの準備
- nignxインストール(Ansible apt)
- SSL向けDiffie-Hellmanキーの生成(Ansible openssl_dhparam)
- nginx.confの生成(Ansible Templateモジュール)
- バーチャルホストの設定(Ansible Templateモジュール)
- バーチャルホストの有効化/無効化(Ansible Fileモジュール)
- /etc/nginx/sites-enableのファイル生成/削除
- ufwのポート開放
- http/https(WWW Full)のallowルール追加
- SSLの対応
- 前提パッケージのインストール
- dehydrated
- lexicon
- dehydrated設定ファイルの生成(Ansible Templateモジュール)
- 全体設定(/etc/dehydrated/conf.d/local.sh)
- 対象ドメイン設定(/etc/dehydrated/domains.txt)
- フックスクリプト(/etc/dehydrated/hook.sh)
- Let's Encryptアカウント登録(Ansible command:dehydrated --register)
- 前提パッケージのインストール
- サービス類の起動、自動起動設定(Ansible Systemd:enabled/started)
- nginx
- mackerel-agent
- fail2ban
- 管理ユーザ/グループの管理(group_vars/all.yml)
- 管理ユーザグループの作成
- 管理アカウントの作成、追加
- 各アカウントの公開鍵登録
- 各アカウントの管理者グループへの登録
- Webサーバのドキュメントルートのアクセス権の設定
- Vimのインストール
-
Webサーバ(公開コンテンツ)
- リポジトリはhistudy/site
- コンテンツはHexo(静的サイトジェネレータ)で生成
- ローカルで生成テスト等実施の場合はnodejsのインストールが必要
- デプロイはCicleCIを使って実施
- siteリポジトリのmasterにpushがあるとCIが回る
- rsyncでサーバのドキュメントルートに配置
- 各コンテンツはsource配下にmarkdownで作成
-
全体構成
- リポジトリはhistudy/infraを利用
- サーバ基盤としてさくらのクラウドを利用
- TerraFormによるリソース管理
- TerraForm Cloudからプロビジョニングを実施
- usacloudプラグインを利用してさくらのクラウドを利用
- 管理対象
- 公開用Webサーバ
- Redmineサーバ
- DNSレコード
- Webサーバ(www.histudy.jp/histudy.jp)
- Redmineサーバ(redmine.histudy.jp)
-
公開用Webサーバ
- 基本は現状構成を利用
- 既知の問題
- dehydratedでLet's EncryptのSSL発行がうまく行かない
- おそらくlexiconのドメイン登録時にFQDN指定が誤っている
- dehydratedでLet's EncryptのSSL発行がうまく行かない
-
公開用Webサーバ(コンテンツ部)
- 基本は現状構成を利用
- 既知の問題
- npmパッケージ群のアップデートが対処できていない
- GithubのBotからプルリクが出てる
- コンテンツが2019くらいで止まってる
- HackMD自体は更新できているのでmarkdown落として来て記事化する流れのFixが必要
- npmパッケージ群のアップデートが対処できていない
-
Redmineサーバ
- 現状、wateさんの個人サーバなのでデータ移行が必要
- リポジトリはinfra/serverに追加
-
Debian GNU/Linux 10
ベースで構築 - 構築はansibleの各種ロールで実施
- 汎用設定ansible-role-common
- Rubyansible-role-ruby
- MariaDBansible-role-mariadb
- Redmineansible-role-redmine
-
新規環境のTerraForm構成作成(histudy/infraの新規ブランチで対応?)
- Redmineサーバの構成をTerrafromに追加
- HWの登録データ
- DNSのレコード追加(Aレコード)
- 要対応項目
- 既存サーバのDBデータ抽出、導入の手順、タイミングの調整
- 必要リソース量の確認(CPU/Mem/Disk)
- Redmineサーバの基盤部分構成
-
histudy/infra
にRedmineサーバ用の項目を追加- Webとの分離をどうするか、web,redmineを別YAMLに分けるか決める
-
- Redmineサーバの構成をTerrafromに追加
-
既存Webサーバの問題対応
- 基盤部分
- DehydratedのSSL発行問題修正
- コンテンツ部分
- npmパッケージ群のアップデート
- HackMDコンテンツの取得、格納、生成確認
- 基盤部分
- ログ管理
- Grafana Lokiなどでログデータの収集、アラート
- 機密情報管理
- valutサーバ