投稿

最新の投稿

AWS-CLIでFSx for Windowsを構築してみた(独自AD)

WindowsファイルサーバなのにSambaばかりというのもどうかなぁという気もしていたのでAWSならば FSxforWindowsFileServer なるものがあるので、それを試してみることにしました。ほとんどコピペなので構築したとは言わんが・・・。 WindowsServer2019 を 日本語化 して sysprep したものをAMIにして使用、手軽に上げたいので CloudShell でShellで AWS-CLI をキックしてやるやつです。GUIだと面倒なので PowerShell で AD を準備してます。 ◆AD構築用 ・日本語化後のsysprepでもロケール変わらないので変更 > Set-TimeZone -Id "Tokyo Standard Time" > Set-Culture -CultureInfo ja-JP > Set-WinHomeLocation -GeoId 0x7a > Set-WinUserLanguageList -LanguageList ja-JP,en-US -Force > Set-WinSystemLocale -SystemLocale ja-JP > Rename-Computer -NewName pdc-cl-01 > Restart-Computer ・ADのインストールとフォレストの設定 > Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools > Install-ADDSForest -DomainName yourdomain -DomainNetbiosName YOURDOMAIN -InstallDnsぱ パスワードを入力して再起動後に以下を実行 > Set-ADAccountPassword -Identity Administrator -NewPassword (ConvertTo-SecureString -AsPlainText "YOURPASSWORD" -Force) ◆Shellスクリプト本体(CloudShellで実行) $ vi fsxcreate.sh -----------

3大クラウドのストレージ使ってsyslogのログローテーションしてみる

Samba使ってマウントしたファイルサーバ ってのを以前に準備しました。 その応用で業務にてsyslogサーバ立ててマウントしてそこにログを逃がす形式で構築する機会がありました。しかしながら、よく考えると マウント したディレクトリに移動させるより ローテート の際にコマンドで直でストレージに送ればいいかなと思って試してみました。AWSだけだと面白くないので GC Sと AzureBlob にも対応してみました。次回やるときに苦労するの嫌なので現時点で一撃でやれるようにShellにしてます。 ◆Shellスクリプト実行環境の前提 ・AWS:IAMロールでS3フルアクセス可能なものが存在しEC2に付与されている。AWS-CLIインストール済でクレデンシャル発行済 ・GCP:GCEのアクセススコープで[ストレージ]がフル設定となっている ・Azure:V-NETとストレージアカウントとBlobコンテナーが設定されていること ・Ubuntu22.04LTSにて確認(ロケールと言語は日本語に変換済) ◆Shell本体 #!/bin/bash LOGDIR=/var/log/remote CONFIG=10-remoete.conf LOGNAME=syslog S3BUCKET=s3://202402-syslog-srv-test GCSBUCKET=gs://202402-syslog RESOURCENAME=syslogexam AZ_ACCOUNTNAME=202402storageaccount AZ_CONTAINERNAME=202402-syslog-test EXPIRY=$(date -d "+10 years" +%Y-%m-%dT00:00:00Z) CMD="logrotatecommand" # AWS read -p "## Do you want to setting AWS ? (y/n) [y]: " -e -i "y" awsResponse if [ "$awsResponse" == "y" ] || [ "$awsResponse" == "Y" ]; then

TypeScriptでGraphQLのお勉強②

  前回のGraphQLのお勉強 をしてみてそのままだとデータ追加とかの時にtsを書き替えるということになるのでそれが嫌だったのでjsonファイルにデータ部分を外出ししてデータを可変にできないかと思って、色々とゴニョゴニョしてみました。 TypeScriptが初心者以下の雑魚レベルのヨワヨワなのでかなり時間がかかりましたが、何とか実現できました。肝になるのはdata.tsを以下の様に書き替えるところとインタフェースを外出ししたこと位かな・・・。 後はBook以外で遊びたいと思ったので未検証ながら少し可変を意識した記述にしたところくらいです。 ・data.ts import { Data } from "../configs/types.js"; import jsonData from "./datas.json" assert { type: "json" }; export const datas: Data[] = jsonData; ・types.ts export interface Data { title: string; author: string; } ・ディレクトリ構成 src |-- configs | |-- query.graphql | |-- resolver.ts | |-- schema.graphql | `-- types.ts |-- data | |-- datas.json | `-- datas.ts `-- index.ts データを可変したい目的だったけれども TypeScript なので、jsonのテキストファイルにデータ追加してもトランスパイルしないと変更が反映されないという間抜けな結果になったのであまり意味がなかったかもしれない。データを可変的に使う場合はDB必須ですね。 次回(あるのか?)は Mutation とか Subscription とか色々と触っていきつつ、AWSの APPSync の方に入っていければと思ってます。ともかくDB必須というのが分かったのでTypeScriptでDBの取り回しとかも勉強しつつやっていこうかなと ちなみに作ったのはGitHubに上げました https://git

ObserviumのインストールをShellスクリプトで半自動化する

昔の職場で MRTG とかいうのを サーバ監視 に使ってて、サーバの可視化とかグラフ化とかありました。正直、 サーバ運用は人が不幸になる だけであまり好きではないのでこういう 監視系のツール にはあまりそそられないのですが、否応なく勉強せざるをえなくなったので仕方なしにツール入れてみることにしました。 選んだの Observium ですね。(他にもあるのに 正直なところ Grafana とか Prometheus とか mackerel とか Datadog とかキラキラで行けてる上の世界の方が使っているようなところをお勉強したかったのですが、行けてないのでなんか EC2 の上に Zabbix とかObserviumを乗っけるところからのお勉強です。 ※筆者が行けていないだけなのでツールは悪くないです。 そして次に同じ作業できる自信がないので、相変わらずの芸のないShellスクリプトで一括インストールです。公式にも インストールスクリプト あるのでそっち使えばいいんですが RDS とか CloudSQL 使うケースとかhttps化したかったのであえての自前で準備です。ラクできるときはラクする方がはるかにいいです。 ちなみにObserviumではPHP8.2以降で非推奨のMySQLライブラリ使ってるのでPHP8.1まででしか動かぬようです。早めの8.2以降対応に期待しましょう。 ◆Shellスクリプト本体 #!/bin/bash HOST_NAME=observium-srv DATABASE=observium DB_INITIAL_PASSWORD=dbpassword DB_ROOT_PASSWORD=dbpassword DB_USER=observium DB_PASSWORD=observium DB_HOST=localhost PHP_VERSION=8.1 WEB_USER=www-data HTPASSWORD_PATH=/etc/nginx/basic SERVER_NAME=yourdomain.com SITE_URL=https://yourdomain.com/ DOCUMENT_ROOT=/opt/observium/html ADMIN_MAIL=mail@yourmail.com OBS_ADMIN=admin OBS_PASSW

3大クラウドでVMとストレージを組み合わせた構成を一撃で構築する

  EC2+S3でSambaサーバ組み合わせて ファイルサーバ的なものを前回やってみましたが、 GCP とか Azure でも同じことやってみました。 GCPの場合は GCE + GCS に gcsfuse を組み合わせて構成、Azureの場合は AzureVM に Blob の機能でNFSv3を指定してやるやり方です。 Azureは 以前にredmineでAzureFiles使ってマウントしたこと がありましたが今回はBlobのコンテナ使って NFSマウント してみました。 AWSの場合はgoofysがパフォーマンスいいみたいです。GCPとAzureも書込みとか変更は我慢できないほどではないけどファイル削除に若干、時間がかかる。 頻繁な削除が発生しないなら、まぁどれでもいいんじゃなかろうかという感じです。コストはあまり見ていないですけどVMのコスト+ストレージのコスト+読み書き発生するみたいですね。 ◆Shellスクリプト実行環境の前提 ・AWS:IAMロールでS3フルアクセス可能なものが存在しEC2に付与されている。AWS-CLI用のクレデンシャルが発行済 ・GCP:GCEのアクセススコープで[ストレージ]がフル設定となっている ・Azure:V-NETとストレージアカウントが設定されていること ・Ubuntu22.04LTSにて確認(ロケールと言語は日本語に変換済) ◆Shell本体 #!/bin/bash ACCESS_KEY_ID=AKXXXXX ACCOUNT_ACCESS_KEY_ID=XXXXX ACCOUNT_REGION_ID=ap-northeast-1 ACCOUNT_OUTPUT=json S3_BUCKET_MP_PUBLIC=s3test-mountpoint-samba S3_BUCKET_S3FS=s3test-s3fs-samba S3_BUCKET_GFYS=s3test-goofys-samba GCS_BUCKET=gcstest-samba AZURE_STORAGE_ACOUNT=azuresambatest AZURE_CONTAINER=azure-samba-test MOUNT_DIR_MPS3=/mnt/test-mountpoint-s3 MOUNT_DIR_S3FS=/mnt/test-s3fs MOUNT

EC2からS3をマウントしてみる

  AWSでEC2使ってS3をマウント したいとかいう要望がったので調査がてら検証する過程で3つのマウント方法を試してみた。ついでにSambaでアクセス制御もやってみた。 MountPoint for S3 goofys s3fs MountPointの方は新規と削除しかできないのでファイルサーバ的な用途ではやや厳しく、ログファイルを新規書込みするケースのみにしか使えなさそうで、goofysとs3fsを比較すると新規作成の場合はs3fsだと作成済ファイル表示までに時間がかかってgoofysの方はすぐに作成済ファイルが表示された。ローカルからのコピーだといずれも体感差はない感じ。 AmazonLinux2023の場合MountPointとs3fsはEC2にIAMロールアタッチで使えたもののgoofysではcredentialsを登録してあげないと動かない。UbuntuではいずれもIAMロールアタッチで対応できた。なのでAmazonLinuxでEC2にIAMロールアタッチでsamba使ってS3をマウントするという要件だと今のところs3fsしかないかなという感じでした。 コマンドラインからSamba叩くのは嫌だとか言う人もいるだろうから Webmin 試してみました。rootユーザにパスワード設定しないといけないのでそこだけ注意ですかね。ひとまずお手軽にSambaユーザ追加できました。 次やる機会があるのかわかりませんが、ひとまずShellスクリプトにして再利用できるようにしときました。けどAmazonの推奨パターンは、こういうケースだとEC2+ EFS か AmazonFSx と組み合わせて使うようですね。 ◆Shell本体 #!/bin/sh ACCESS_KEY_ID=AKIXXXXXXXXX ACCOUNT_ACCESS_KEY_ID=XXXXXXXX ACCOUNT_REGION_ID=ap-northeast-1 ACCOUNT_OUTPUT=json S3_BUCKET_MP_PUBLIC=test-mountpoint-samba S3_BUCKET_S3FS=test-s3fs-samba S3_BUCKET_GFYS=test-goofys-samba MOUNT_DIR_MPS3=/mnt/test-mountpoint-s3 MOUNT_DIR_S

WordPressのインストールをShellスクリプトで半自動化する

 半自動化シリーズも結構色々とやってそこそこたまってきた。 Remineの半自動化 とか zabbixの半自動化 とか色々とやってきてここでWordPressという、 WordPress は結構、まだ使っているところ多いしサーバで運用したいとかいうニーズもなくはないのと自分でも楽したいというのもあって Redmine 共々にたまに必要なこともあるので簡単に構築できるようにしておきたいので、ほかのと合わせてShellスクリプトで一撃インストールできるようにしてみた。 ほんとは Dokcer とか k8s 使うとかの方がいいんですけど、やはり制約あって単独鯖がいいとかもあったりするし、都度、調べて手動でチマチマコマンドコピペとかやりたくないのでShellスクリプトにしてみた。大きく変わらない限りはバージョンとか変えれば使えるようにしておいた。ひとまずAWSとGCPでは試していてRDSとかCloudSQLでは使えるようにはなっていました。あと管理画面にBasic認証かけています。 #!/bin/bash HOST_NAME=wordpress-srv DATABASE=wordpress DB_INITIAL_PASSWORD=paswword DB_ROOT_PASSWORD=rootpassword DB_USER=wordpress DB_PASSWORD=wordpress DB_HOST=localhost PHP_VERSION=8.2 WP_CONFIG_URL=https://api.wordpress.org/secret-key/1.1/salt/ WEB_USER=www-data HTPASSWORD_PATH=/etc/nginx/basic BASIC_AUTH_USER=admin BASIC_AUTH_PASSWORD=admin SERVER_NAME=wp.wxample.com SITE_URL=https://wp.example.com/ DOCUMENT_ROOT=/var/www/wordpress WP_CONFIG_PATH=${DOCUMENT_ROOT}/wp-config.php ADMIN_MAIL=ujimasa@hotmail.com WORDPRESS_DL_URL=https://ja.wordpress