投稿

ラベル(ubuntu)が付いた投稿を表示しています

cloudflareの開発環境作るのにmiseで一撃で環境構築

 cloudflareの開発用環境ほしくなったので、はやりの mise とか使って一撃で環境構築しました。「え、こんな楽なのかよ」って拍子抜けするほどあっさりできました。 Hyper-V で乱立している AWS と Google と Azure のCLI用仮想マシンとか、こいつで統合して管理してしまえばわざわざそれぞれの開発用 Docker 準備しなくていいじゃねぇかとか思えるくらい優れモノです。 まだ、node環境しか試せてないですが terraform まで入るなんて、すげぇって感じです。 この前出たところの Ubuntu26.04LTS をHyper-Vに放り込んでVS-Codeでリモート接続して作業する予定です。 会社でCloudFlareのローカル開発しようとして環境を汚したくなかったので CodeSpace 使ってちまちまやってたのですが、時間課金とか気にしながらやるのも違うしやはりローカルでやってしまいたいなと感じたので試しに入れて、結構使えたので本格的に使い始めることにしました。(CodespaceはCodespaceで手軽でよいんですけどね) Dockerで開発環境作るより、はるかにスムーズっす。まぁインフラの人はこっちの方が使いやすいかもしれないですね。アプリの方は コンテナ で マイクロサービス 動かすことが多いのでやはりまだまだDockerって気もしますが・・・・ ヨワヨワなのでコマンドは 生成AI に吐かせました。ほとんどコマンドもプログラムも生成AI任せになってきてるので更にヨワヨワになってきていますね。 Ubuntu26.04LTS入れるときに少し不安定な感じがしたのは気の静かな。入れてしまって動かしたら特に違和感はなかってけど。。。。 マルチクラウドVPNの環境も合わせてごそっと新しい環境に移し替えようかなと・・・ 開発用仮想マシンも数が増えてきてそろそろ整理していきたいし、将来的な脱Windowsを考えると開発環境は身軽にしておきたいのでいろいろと整理ですね。 ◆参考用コマンド # ssh設定 sudo sed -i.bak \ -e 's/^#\?PubkeyAuthentication.*/PubkeyAuthentication yes/' \ -e 's/^#\?PasswordAuthent...

EC2を起動したときにRoute53に登録されているAレコードを更新する

既にいろんなとこでやってる人がいる小ネタっす。  EC2で開発環境を作成していて、IPアドレスで接続するのが面倒くさいのでRoute53にIPアドレスを登録した。 まぁそれはそれで便利にはなったもののIP変わる都度、手動でRoute53にIPを設定するのも煩わしいので、EC2インスタンスの電源が入る都度、自動でRoute53を更新する様にした。 ◆コマンド # スクリプトのディレクトリを作成 mkdir init # ここからEOF_SCRIPTまでがroute53.shの内容になります # バッククォート (`) は `\` でエスケープしてください。 # `$` は自動で展開されるのでエスケープ不要です。 cat << 'EOF_SCRIPT' > init/route53.sh #!/bin/bash set -euxo pipefail DOMAIN_NAME="yourdomain.com" SUB_NAME="yoursubname" HOSTED_ZONE_ID="YOUR_HOSTED_ZONE_ID" # IMDSv2 (Instance Metadata Service Version 2) のトークンを取得 TOKEN=$(curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600") # トークンが取得できたか確認 if [ -z "$TOKEN" ]; then echo "エラー: IMDSv2トークンを取得できませんでした。インスタンスのIMDS設定を確認してください。" >&2 exit 1 fi # 取得したトークンを使用してパブリックIPアドレスを取得 # X-aws-ec2-metadata-token ヘッダーにトークンを含める必要があります IP_ADDRESS=$(curl -H "X-aws-ec2-metadata-token: $TOKEN" -s ht...

AWSの開発環境詰め合わせ用Shellスクリプト

 ちょっと SAM-CLI さわる必要が出てきてAWSのEC2に開発環境を構築するShellを準備してみた。ローカルのVMで直接開発するケースはないけど、もしかしたら再利用するかもしれないので、Shellにしておいてまた使いまわせるようにしておこうと思いまして準備した次第です。 ◆スクリプト本体 #!/bin/bash # このスクリプトは、一般的な開発ツール(GCC、G++、Make、NVM、rbenv、pyenv、AWS CLI、Docker、SAM CLI、CDK)をインストールします。 # バージョンは以下の変数を設定することで変更できます。 # 変数の定義 nvm_ver="0.40.3" # NVM (Node Version Manager) のバージョン ruby_ver="3.4.4" # Ruby のバージョン (rbenvでインストール) python_ver="3.13.5" # Python のバージョン (pyenvでインストール) echo "--- 開発ツールのインストールを開始します ---" # 1. 必須パッケージのインストール echo "1. 必須パッケージのインストール..." sudo apt-get update sudo apt-get install -y \ gcc \ g++ \ make \ build-essential \ libssl-dev \ zlib1g-dev \ openssl \ libz-dev \ libffi-dev \ libreadline-dev \ libyaml-dev \ liblzma-dev \ libbz2-dev \ libsqlite3-dev \ unzip echo "必須パッケージのインストールが完了しました。" # 2. NVM (Node Version Manager) のインストール echo "2. NVM (Node Version Manager) のインストール..." # NVMのインストールスクリプトを実行 curl -o-...

STNSでLinuxのユーザ管理を統合してみる

 とある事情で複数台のLinuxで同一のユーザを扱うとかいう話で出てきて、都度ユーザを追加とかいう面倒なことをしなければならず、何台にも及び、かなりイラっとしたので調べてみて STNS なるものに行き着いた。 なんかLinuxのユーザ情報を一元管理できて複数台で認証情報を統合できるとかいうことらしい。最近は REST みたいなフォーマットになっているとのことで早速、実験してみる。 ・構築環境 Ubuntu24.04LTS(AmazonEC2 AMI) ◆構築方法 1.サーバ側 $ curl -fsSL https://repo.stns.jp/scripts/apt-repo.sh | sh $ sudo apt install -y stns-v2 libnss-stns-v2 cache-stnsd $ cd /etc/stns/ $ sudo mkdir conf.d $ sudo tee -a /etc/stns/server/stns.conf <<_EOS_ port = 1104 include = "/etc/stns/conf.d/*.conf" _EOS_ $ sudo groupadd -g 2000 test-example $ sudo tee /etc/stns/conf.d/sample.conf <<_EOS_ [users.example1] id = 1001 group_id = 2000 shell="/bin/bash" directory = "/home/example1" keys = ["ssh-rsa AAAAhogefuga・・・"] [users.example2] id = 1002 group_id = 1001 shell="/bin/bash" directory = "/home/example2" keys = ["ssh-rsa AAAAhogefuga・・・"] [users.example3] id = 1003 group_id = 1001 shell="/bin/sh" directory =...

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

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

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

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

 半自動化シリーズも結構色々とやってそこそこたまってきた。 Remineの半自動化 とか zabbixの半自動化 とか色々とやってきてここでWordPressという、 WordPress は結構、まだ使っているところ多いしサーバで運用したいとかいうニーズもなくはないのと自分でも楽したいというのもあって Redmine 共々にたまに必要なこともあるので簡単に構築できるようにしておきたいので、ほかのと合わせてShellスクリプトで一撃インストールできるようにしてみた。 ほんとは Dokcer とか k8s 使うとかの方がいいんですけど、やはり制約あって単独鯖がいいとかもあったりするし、都度、調べて手動でチマチマコマンドコピペとかやりたくないのでShellスクリプトにしてみた。大きく変わらない限りはバージョンとか変えれば使えるようにしておいた。ひとまずAWSとGCPでは試していてRDSとかCloudSQLでは使えるようにはなっていました。あと管理画面にBasic認証かけています。 ◆Shellスクリプト #!/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=http...

ZabbixAgentのインストールの半自動化

  ZabbixAgent もたくさん入れるとなると面倒なので、極力コピペとか避けたいと思って準備した。WindowsがサービスからZabbixAgentとSNMPトラップ有効化してあげないといけなくてなんか残念感はあるけど、他のGUIいじくらなくてよくなってたので少し楽(AWSのWindowsServer2022のみで確認) ■Linux側のAgentインストール $ cat << '_EOF_' > zabbix_agent.sh #!/bin/bash ZABBIX_DL_URL=https://repo.zabbix.com/zabbix/6.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.4-1+ubuntu22.04_all.deb ZABBIX_PKG=zabbix-release_6.4-1+ubuntu22.04_all.deb ZABBIX_SERVER_IP=10.0.10.122 wget ${ZABBIX_DL_URL} sudo sudo dpkg -i ${ZABBIX_PKG} sudo apt update sudo apt install -y zabbix-agent2 zabbix-agent2-plugin-* sudo sed -i 's/Server=127.0.0.1/Server='"${ZABBIX_SERVER_IP}"'/g' /etc/zabbix/zabbix_agent2.conf sudo sed -i 's/ServerActive=127.0.0.1/ServerActive='"${ZABBIX_SERVER_IP}"'/g' /etc/zabbix/zabbix_agent2.conf sudo sed -i 's/Hostname=Zabbix server/#Hostname=Zabbix server/g' /etc/zabbix/zabbix_agent2.conf sudo sed -i 's/# HostnameItem=system.hostname/Host...

Redmineのインストールをいい塩梅に半自動化する

日を置いてから 過去のブログの これ とか これ を参照してRedmine入れようとしてもなかなかうまいこと行かないことが多いのでむかついて、インストールをShellスクリプト化した。 プラグインとかcronの仕込みとかはできていないのと、SendGridでメール飛ぶか試せていないのでそこは今後、試していこうかなと思っていたりする。 ちなみに固定IP取ってDNSに登録すれば AWS:EC2+RDS、EC2単体 GCP:GCE+CloudSQL(PostgreSQL)、GCE単体 上記2つで動くところまでは見れてます。 細かな部分はチューニングすれば、まぁ最小の労力でRedmine立てれるな。というより4年前に作っとけよって話ですよな・・・・。 ◆Shellスクリプト #!/bin/bash SHELL_USER=yourexec_user HOST_NAME=redmine-srv POSTGRE_VER=postgresql-15 DB_VERSION=15 DATABASE=redmine MASTER_USER=postgres DB_USER=redmine DB_PASSWORD=redmine MAIL_ADDORESS=smtp.sendgrid.net MAIL_DOMAIN=smtp.sendgrid.net PORT=587 MAIL_DOMAIN=smtp.sendgrid.net MAIL_USER_NAME=apikey MAIL_PASSWORD=SG.XXXXXXXX ATTATCHMENT_PATH=/var/www/redmine/files RUBY_VER=3.2.2 WEB_USER=www-data SERVER_NAME=web.example.com SITE_URL=https://web.example.com/ DOCUMENT_ROOT=/var/www/html ADMIN_MAIL=yourmail@example.com sudo hostnamectl set-hostname ${HOST_NAME} # --------------------------------------------- # 1.nginxインストール # ---------------------------------...

ZabbixServerのインストールをShellでいい塩梅に半自動化する

なんかZabbixのお勉強をしないといけなくなってEC2で構築しようとしたけれども何回もやるのかったるいのでShellスクリプトでコマンドコピペしなくても動くようにしました。 zabbix.shとかいう名前つけてファイル保存してから権限つけて ./zabbix.shとしてあげればZabbixServerとWeb-UI入れてくれます。なんかtime-scaleがうまく動かないのと細かいパラメータは調整いるけど、かなり楽にはなって試行錯誤しやすくなりました。 事前に EIP を取って Route53 に登録してやれば EC2 + RDS(PostgreSQL) 構成もしくはEC2単体構成で動かすことができます。【 AWS 構成】 もしくは 静的外部アドレス とって CloudDNS を登録してあげれば GCE + CloudSQL(PostgreSQL) 構成もしくはGCE単体で動かすこともできます。【 GCP 構成】 Azure と普通の Ubuntu の場合は試していないけど必要なパッケージ入れてあげれば動くと思います。たぶん 動くは動くけど、なんか time-scaledb はうまく機能していない(´;ω;`) バージョンは切替できるので、それで試してみるとうまく動くかな。それとパラメータあまりいじくっていないのでそのあたりは細かく設定する必要あり。 ちなみに、一々コピペしてコマンド貼り付けなくてよいのでかなり楽になったかな ◆Shellスクリプト #!/bin/bash HOST_NAME=zabbix-srv POSTGRE_VER=timescaledb-2-2.12.2-postgresql-15=2.12.2~ubuntu22.04 #POSTGRE_VER=timescaledb-2-postgresql-15 DB_VERSION=15 DATABASE=zabbix MASTER_USER=postgres DB_USER=zabbix DB_PASSWORD=zabbix PHP_FPM=php8.2-fpm PG_SQL=php8.2-pgsql PHP_VERSION=8.2 SERVER_NAME=zabbix.example.com SITE_URL=https://zabbix.example.com/ DOCUMENT_ROOT=/...