投稿

マルチクラウドでVPC同士接続してみるその②(AWSとAzure編)

イメージ
  前回 から時間が空きましたが、今度はAzureとAWSを Site to SiteVPN で接続してみました。ひとまずは EC2 とA zureVM も立てて通信できているかも確認しました。Azureの方で VPNGateway 作成するときに20分とか結構な時間がかかるので要注意かな。 構成は以下の図みたいな感じです。 ◆シリーズ 1.AWSとGCP接続 2.AWSとAzure接続 3.GCPとAzure接続 4.AWSとGCPとAzure接続 5.CDK for terrformで再構成 ◆大まかな流れ 1.AWSでVPCとサブネット作成 2.AzureでVNETとサブネット作成 3.AzureでVPNGateway作成 4.AWSで仮想プライベートゲートウェイ作成 5.Azureでローカルネットワークゲートウェイ作成とトンネル設定 6.AWSでプライベートサブネットにEC2作成 7.AZureでサブネットにVMを作成 8.Azure側の後始末 9.AWS側の後始末 ◆コマンドライン(先頭にプロンプト付きなので注意) 1.AWSでVPCとサブネット作成 1.1.VPC作成 $ REGION=ap-northeast-1 $ VPC_NAME=multi-cloud-vpn-aws $ VPC_CIDR=172.20.0.0/16 $ STRING_EC2_VPC_TAG="ResourceType=vpc,Tags=[{Key=Name,Value=${VPC_NAME}}]" \ && echo ${STRING_EC2_VPC_TAG} $ aws ec2 create-vpc \ --cidr-block ${VPC_CIDR} \ --tag-specifications ${STRING_EC2_VPC_TAG} 1.2.サブネット作成 $ AZ_CODE="a" $ SUBNET_TYPE="private" $ SUBNET_NAME=${VPC_NAME}"-"${SUBNET_TYPE}"-subnet-"${AZ_CODE} \ && echo ${SUBNET_NAME} $ SUBNET_CID...

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

 少しだけ時間ができたので、全然今の仕事と関係ないけどIT資産管理とかでいいやつないかなと探してたら出てきたのがこの Snipe-IT とかいうやつ。 なんかいろいろできそうで、挙句に PC構成情報まで無料で集められる とかいうなかなかの優れものらしい。とりあえず環境作るのに色々とあれらしいのでひとまず、簡単に試せるようにしとこうとインストールについてスクリプトで動かせるようにしておいた。 ◆Shellスクリプト #!/bin/bash HOST_NAME=snipeit-srv DATABASE=snipeit DB_INITIAL_PASSWORD=password DB_ROOT_PASSWORD=password DB_USER=snipeit DB_PASSWORD=snipeit DB_HOST=localhost MAIL_HOST=YOURSMTP_SERVER MAIL_USERNAME=YOUR_USER MAIL_PASSWORD=YOUR_PASSWORD MAIL_FROM_ADDR=snipe-it@example.com MAIL_FROM_NAME=system-admin MAIL_REPLYTO_ADDR=snipe-it@example.com MAIL_REPLYTO_NAME=system-admin PHP_VERSION=8.3 WEB_USER=www-data SERVER_NAME=snipeit.example.com SITE_URL=https://snipeit.example.com WEB_DIR=/var/www/ DOCUMENT_ROOT=${WEB_DIR}/snipe-it ADMIN_MAIL=yourmail@example.com sudo hostnamectl set-hostname ${HOST_NAME} # --------------------------------------------- # 1.PHPとComposerインストール # --------------------------------------------- read -p "## Do you want to install php? (y/n) [y]: " -e...

マルチクラウドでVPC同士接続してみるその①(AWSとGCP編)

イメージ
 マルチクラウドでネットワーク構成してみて強固なバックエンドを作れないかとゆうのを5年くらい前から夢見てて、ようやく手出しができそうになってきたのでお勉強しようとしてみた。最初に AWSのVPC と GCPのVPC をつないでEC2とGCEで通信できるようにしてみた。 ホントは クラウド間通信のサービス で組むんだろうけど個人の勉強なので Site to SiteVPN と ClassicVPN という構成からスタートする。 貧乏なのでどっちも最小構成的な感じからスタートしてみて構成に慣れて短時間で構築できる様になったら Google推奨のHA構成 で組んでみようかなと思ってます。 まぁいろんなとこで出尽くしている感じがあるので、いまさらですがヨワヨワなのでご容赦ください。構成はこんな感じです。 マネジメントコンソールでやるのも面白くないのでどちらもCloudShell使ってやってみることにした。(単に環境準備するのが面倒なだけ) ◆シリーズ 1.AWSとGCP接続 2.AWSとAzure接続 3.GCPとAzure接続 4.AWSとGCPとAzure接続 5.CDK for terrformで再構成 ◆大まかな流れ 1.AWSでVPCとサブネット作成 2.GCPでVPCとサブネット作成 3.GCPでVPNGateway作成 4.AWSで仮想プライベートゲートウェイ作成 5.AWSでGCPとのVPN接続作成 6.GCPでVPNトンネル作成 7.AWSでプライベートサブネットにEC2作成 8.GCPでGCEをサブネットに作成 9.GCP側の後始末 10.AWS側の後始末 ◆コマンドライン(先頭にプロンプト付きなので注意) 1.AWSでVPCとサブネット作成 1.1.VPC作成 $ REGION=ap-northeast-1 $ VPC_NAME=multi-cloud-vpn-aws $ VPC_CIDR=172.20.0.0/16 $ STRING_EC2_VPC_TAG="ResourceType=vpc,Tags=[{Key=Name,Value=${VPC_NAME}}]" \ && echo ${STRING_EC2_VPC_TAG} $ aws ec2 create-vpc \ --cidr-block ${VP...

CDKで静的WebSiteホスティング

  このサイト のGitHubをCloneしてきてCloudFront+S3やってみました(ほぼ丸パクリ)。 1リージョンでしか作成できなかったのでバージニア北部リージョンで作成した ACM を使えるようにして東京リージョンでS3を使えるようにしたかったので、やってみました。たぶん、そういうニーズあるの自分くらいでしょうけれども・・・。 修正したやつは以下のGitHubmに上げてます https://github.com/Otazoman/static-website-cdk-sample ◆環境構築(node) $ nvm install --lts --latest-npm $ nvm alias default 'lts/*' $ node -v v20.13.1 ◆AWS-CDKインストール $ cd $ mkdir aws-cdk $ cd aws-cdk $ echo 'lts/iron' > .nvmrc $ nvm use $ npm install -g aws-cdk $ npm install -g typescript $ cdk version 2.141.0 (build 3d1c06e) 既存のソース使ってるのでクロスリージョンのところでかなり嵌ってしまって、何とか調べながら対応しました。かなり時間かかった。(一応、苦労した箇所の説明) まず、スタックからhostedzone取得するところで必要になるパラメータを吐き出してやります。 // for Cross Region this.certificateArn = certificateConstruct?.certificate.certificateArn || ""; this.hostedZone = hostedZoneConstruct ? { hostedZoneId: hostedZoneConstruct?.hostedZone.hostedZoneId, zoneName: hostedZoneConstruct?.hostedZone.zoneName, } : undefined; ...

TypeScriptでGraphQLのお勉強③

 久しぶりの更新です。 前回 のを踏まえてデータベース必須ということで、データベースをバックエンドにして GraphQL のQueryとMutationを中心に試してみた。動くかどうかは定かではないもののsubscriptionも追加はしています。 特に prisma で色々と嵌りました。テストコードとかも勉強してみたかったので jest とかも組み込んでみました。 それと Docker 使ってバックエンドを切り替えられるようにしてみました(ここでも嵌りました)。prismaでmigrationする際に切替が効くので、GraphQLをお気軽に試せる環境は準備できたかなと思ってます。あと、 node もコンテナにしているので一々、環境を作らなくてよくなったので少し楽かなというところです。 稚拙ながらconsole.logにクエリーのリクエストとエラー時のログを吐き出すようにしています。dockerなのでログよりは 標準出力 の方がいいかなと思ってこうしてます。 後はどこかのサイトからパクったもののオンパレードです。 ChatGPT とか Gemini にフル稼働してもらいました。自分はほとんど何もできていなくて退化しているのを感じる一方です。 config配下の data.ts と condition.ts 、 graphql の箇所と prisma配下 のスキーマ定義をいじればいい塩梅に色々と変更できるのではないかなと勝手に考えています。 備忘録かねて一式GitHubに保存してます。 https://github.com/Otazoman/graphql-db-example/tree/main やってみてまだまだ、勉強が必要と痛感させられました。ひとまずバックエンドのGraphQLの原理は朧気ながら把握できたと思うのでいよいよ本丸の APPSync をやっていくか、フロントエンドとの連結をどうしていくかの学習進めるか悩みどころです。

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 ...