投稿

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

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