投稿

2023の投稿を表示しています

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=/

TypeScriptでGraphQLのお勉強①

AWSの APPSync を使う前に GraphQL のお勉強をしようと思い、 Appolo + TypeScript を使って実験をしてみた。弱っちいので相変わらずコピペの権化みたいな感じになっています。 queryとmutationとsubscriptionがあるとかいうのはなんとなくは分かったものの、どうやって使うかはこれから試行錯誤ですかな・・・ ◆環境構築 1.nodeの仮想環境インストール $ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash $ echo 'export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm' $ source ~/.bashrc $ nvm ls-remote $ nvm install stable $ nvm install --lts --latest-npm $ nvm alias default 'lts/*' $ nvm current v18.17.1 2.Appoloほか環境構築 $ mkdir graphql-server-example && \ cd graphql-server-example && \ mkdir configs && \ mkdir data && \ touch index.ts && \ touch configs/resolver.ts && \ touch configs/query.graphql && \ touch configs/schema.graphql &&a

tinyMCEでローカルで動作するHTML用WYSWYGエディタ作ってみた

 tinyMCE というライブラリがあったので、それを使って WordPress みたいなエディタを作成してみました。JavaScriptオンリーで作成しています。あとライブラリ類は全部ローカルに落とし込んでいるのでネットにつながらない環境でも利用することができます。 簡易な検索機能と、その他ファイルの閲覧のみの機能も備えてみました。 javascriptはシロート並みなので当然ながら ChatGPT にほとんど作成してもらってます。まぁ弱っちいのでそうなります。そのうち淘汰されるんだろうなと感じながら日々生きてます。 tinyMCEを制御している主要なjsのみ掲載しときます。後はGitHubのコード見てください。弱っちいのでもっといい書き方あるよとか教えていただけると幸いです。 // オリジナルHTMLを保持する let originHtml = ''; const initialConfig = { selector: '#editor', language: 'ja', language_url: './langs/ja.js', branding: false, plugins: 'link image code codesample table lists media visualblocks wordcount preview save textpattern', textpattern_patterns: [ { start: '*', end: '*', format: 'italic' }, { start: '**', end: '**', format: 'bold' }, { start: '#', format: 'h1' }, { start: '##', format: 'h2' }, { start: '###', format: 'h3'

【PowerShell】Slackに日本語のコメント付きで投稿するPowerShell

 なんか月の作業でSlackに添付ファイル付けて投稿するとかいう定例の作業があるので面倒なので何とかできないかと思ってPowerShellを準備してみました。結構手こずりましたが何とか動きました。 SlackのAPI難しい・・・・。 ■PowerShell # Slack APIのトークンと投稿先チャンネルを設定 $slackToken = "xoxp-" $channel = "T" # チャンネルIDを適宜変更 $scriptPath = Split-Path -Parent $MyInvocation.MyCommand.Path # テキストファイルから日本語メッセージをUTF-8エンコーディングで読み込む $filePath = Join-Path -Path $scriptPath -ChildPath "work\message.txt" $message = Get-Content -Path $filePath -Raw -Encoding UTF8 # 月と年を取得 $month = Get-Date -Format "MM" $year = Get-Date -Format "yyyy" # $monthを置換してコメントにセット $message = $message -replace '\$month', $month # Slack APIに送信するリクエストの組み立て $apiURL = "https://slack.com/api/files.upload" $headers = @{ "Authorization" = "Bearer $slackToken" } try { # 添付ファイルのパスを設定 (ここでは例として"yyyymm_capture.xlsx"を指定) $attachmentFileName = "work\{0}{1}_capture.xlsx" -f $year, $month $attachmentPath = Join-Path -Path $s

【GoogleAPPScript】GASでマトリクス表を作成させる

イメージ
 上司から何かあるとすぐに マトリクス表 で考えろと言われるので、マトリクス表を手動で作っていたけど、これ規模が拡大してくると絶対ミスるよなと思い、Googleスプレッドシートで自動生成してくれるものを準備した。 なんか最近こういうの多い・・・・。 同じ文字列だと数字の1を立ててくれて総当たりみたいなことはできるようにはしています。 なので、総当たりみたいな感じのことをしたときは同じものが当たらない様にはしてくれます。 ■GASコード function matrix() { const SHEET_URL = SpreadsheetApp.getActiveSpreadsheet().getUrl(); const ss = SpreadsheetApp.openByUrl(SHEET_URL); const cs = ss.getSheetByName('マトリクス図検討'); const START_ROW = 3; const VERTICAL_COL = 1; const SIDE_COL = 2; const SHEETNAME_CELL = 'B1' const matrix = createMatrix(cs) // write spreadsheet const sheetname = getsheetName(cs,SHEETNAME_CELL) writeSheet_matrix(ss,matrix,sheetname,VERTICAL_COL); } function createMatrix(sheet) { const rangeA = sheet.getRange("A3:A").getValues(); // A4から最終行までの値を取得 const rangeB = sheet.getRange("B3:B").getValues(); // B4から最終行までの値を取得 const numRowsA = rangeA.filter(String).length; // A列の値が入力されている行数を取得 const numRowsB = rangeB.filter(String).length

Hyper-Vで開発用のUbuntu環境を構築

Hyper-VにUbuntu22.04LTS入れて開発環境作成したんでその時の作業メモを残しとく。 別にネットでどっかから拾ってこれるもんだけれども・・・。 自分の備忘録でおいておこうかと。そのうちShellスクリプトにでもして手でコマンド打たなくてもよくしたい。 1.初期設定 1-1.日本語化 $ sudo sed -i.bak -e "s%http://us.archive.ubuntu.com/ubuntu/%http://ftp.jaist.ac.jp/pub/Linux/ubuntu/%g" /etc/apt/sources.list $ sudo apt-get -y install language-pack-ja-base language-pack-ja ibus-mozc $ sudo localectl set-locale LANG=ja_JP.UTF-8 LANGUAGE="ja_JP:ja" $ source /etc/default/locale $ echo $LANG ja_JP.UTF-8 1-2.タイムロケール変更 $ sudo timedatectl set-timezone Asia/Tokyo $ timedatectl 1-3.ソフトウェアアップデート $ sudo apt-get update $ sudo apt-get -y upgrade 1-4.ディストリビューションアップデート $ sudo apt-get -y update $ sudo apt-get dist-upgrade 1-5.デフォルトエディタ変更 $ sudo update-alternatives --config editor alternative editor (/usr/bin/editor を提供) には 4 個の選択肢があります。 選択肢 パス 優先度 状態 ------------------------------------------------------------ * 0 /bin/nano 40 自動モード 1 /bin/ed

【GoogleAPPScript】住所の補正用のスクリプト

小ネタです。   住所の突合しないといけないくて、最初はEXCELのマクロでやろうとしていたけどマクロ付シートで保管するのが嫌だったので、Googleスプレッドシートを使用して突合しました。 最初は REGEXREPLACE関数 で何とかできるかと思いましたが、それではどうにもならないのでGASの力を借りることにしました。 ユーザ関数を使用して ChatGPT と Bard の力を借りてスクリプト完成、なんかもはや自分みたいなコピペの権化は不要になるんだなと思いつつ・・・ ■スクリプト function formatAddress(input) { if (!input) { return input; } // 漢数字を通常の数値に変換(最大四十二) input = input.replace(/一丁目/g, "1丁目"); input = input.replace(/二丁目/g, "2丁目"); input = input.replace(/三丁目/g, "3丁目"); input = input.replace(/四丁目/g, "4丁目"); input = input.replace(/五丁目/g, "5丁目"); input = input.replace(/六丁目/g, "6丁目"); input = input.replace(/七丁目/g, "7丁目"); input = input.replace(/八丁目/g, "8丁目"); input = input.replace(/九丁目/g, "9丁目"); input = input.replace(/十丁目/g, "10丁目"); input = input.replace(/十一丁目/g, "11丁目"); input = input.replace(/十二丁目/g, "12丁目"); input = input.replace(/十三丁目/g, "13丁目")

【DOSのバッチ】GitからCloneしてきてCommit後にPushする

 ちょっと必要になったのでサクッと準備してみた。 シュチュエーションとしてはCSVファイルとか設定ファイルだけ外部管理してたんだけどそれをGit管理に切り替えたんだが、コマンド打つの面倒なので、カレントフォルダで作業できるようにするためです。毎回手で打てばいいんですけどね・・・ 前提条件としてWindows側にGitの設定ができていることが必要っす。 BATファイルはUTF-8でCRLFで保存してください。 @echo off chcp 65001 set WORK_DIR=%~dp0 echo ***** start ***** rem "### 対象リポジトリ取得" set /p RELEASE_VERSION=Input Git target version: IF %RELEASE_VERSION%==dev ( echo *** cloning dev ***** git clone https://github.com/XXXX ) else ( echo *** cloning release/v%RELEASE_VERSION% ***** git clone -b release/v%RELEASE_VERSION% https://github.com/XXXX ) rem "### ブランチ準備" set /p BRANCH_NO=Input branch name: set BRANCH_NAME=feature/%ISSUE_NO% echo ***** make branch feacure/%BRANCH_NO% ***** cd %WORK_DIR%XXXX git checkout -b %BRANCH_NAME% echo ***** branch create done ***** git branch rem "### 対象ファイルコピー後にCommitする :filecopy set /p TARGET_ANSWER="対象ファイルのコピーは完了しましたか? (Y/N)?" if /i {%TARGET_ANSWER%}=={y} (goto :filecopy_yes) if /i {%TARGET_ANSWER%}=={