信頼はずっと、挑戦はもっと。

お問い合わせ
TEL:03-3496-3888

BLOG コアテックの社員ブログ (毎週月曜~金曜更新中)

LIST OF ARTICLES

記事一覧

  • テクログ

    セッションマネージャーでSSHクライアントツールとおさらばしよう!

    マスオです。最新 – AWS Systems Manager セッションマネージャーで EC2 インスタンスへのシェルアクセスを実現少し古い公式ブログ記事ですが、最近になって当社でも使い始めた機能です。一言で表現するなら 「EC2インスタンスにSSH/RDP不要でブラウザからリモート接続できる」という機能です!Tera TermやPuttyとは長い付き合いなのですが、とうとう別れの日が来たのかもしれません。導入方法は某有名サイトなど多数の記事があるので割愛しますが、この機能の画期的な点としては ❏SSH/RDP接続用クライアントツールが不要  ブラウザがあれば良い ❏接続ポートや鍵の管理が不要  IAMで一元管理できる ❏操作ログの監査がAWSで完結  S3/CloudwatchLogsで操作履歴が確認可能の三点かと思います!今まで社外からSSH接続する際にはVPN接続してーとか、そもそも秘密鍵もってなかった誰かーとかおいおい誰だよ設定ファイル変えたのーとか時々あって管理が追い付いてない感が満載でしたがこの機能を併用する事でシンプルに解決できたらなって思ってます。現状では一部サーバにしか適用していないですが、運用実績を積んで範囲を拡大していきたいと考えてます。皆様もお試し下さい。それでは、また!
  • テクログ

    元号変更

    元号が変わっている最中はGW中ということで関連会社は全て休み。そしてGW明けのて1週間で何かしらエラーが起きるかなと思っていたが意外と起こらない。何も起こらないとは予想していたので特にあわてる事はなかったが、今日になって1件だけ。使用しているソフトの開発元がそのタイミングで変更処理を行ったためアクセス出来なくなったとの事。予想外だったのは連休明けのタイミングがほぼ全ての企業が同じだったからだと思うが幾つかの法人でネットがかなり遅くなった事。10日間で溜まった仕事をみんな一気に片付ける為なのか基地局にデータが集中していたのが原因かと思われる。実際連休明けての数日で速度は戻ってきた。ルーターの再起動で基地局の変更がかかりたまたま空いている基地局に繋がったからかもしれない。同じビル内でも今まで通りという法人もあれば遅くなったと言う法人もあったのでおそらく上記が原因だと思われる。
  • テクログ

    自作キーボードを作ってみよう

    突然なんですけど、皆さんキーボードにこだわりありますか?私は割と厚みのあるキーボードが好きです。でも会社ではMacBookProをつかっていて、厚みが全然ないのでちょこっとだけ辛いです。ネイルとかしていると頻繁に爪が切れないので、伸びてくると痛かったりもします。なので決めました。自作キーボードの沼に足を突っ込もうと...!!まだ勉強し始めなのですが、自作キーボードを一言で言ってもいろんなことを決めないといけません。どれくらいの行があるキーボードにするのか分離型にするのか(肩甲骨に良いらしい)キーキャップはどうするのかキーを押したときの感覚や深みはどれにするのか...こだわりだすとキリがないんですよね。でも初心者にどのキーキャップがいいとか、押したときの感覚とかわかるわけないじゃないですか。そんなときは、秋葉原にある「遊舎工房」さんに行きましょう。https://yushakobo.jp/唯一の実店舗が秋葉原に出来ました。いろいろなキーボードのパーツが売ってます。中で作業も出来ます。ここでいろいろなものを触って、どういうものにするかイメージすると良いと思います。私は今、mint60が気になっていてhttps://eucalyn.shop/shop/kits/mint60-starterセット売りしているこのキーキャップの色がどストライクなんですけどhttps://eucalyn.shop/shop/keycaps/abs-cubic-miami-blueプロファイル(形状)はcherryがいいので悩ましいところです(miami blueはCubic)続けられたら次回に続きます
  • テクログ

    思わず押したくなる!?ボタンエフェクト5選

    こんにちは、ささです。今回は思わず押したくなるような、ボタンエフェクトを5選ご紹介いたします!HTMLとCSSのみで実装が可能なためお気軽にお試しができます!◆Button hover effects with box-shadowhttps://codepen.io/giana/pen/BZaGyPbox-shadowを使ったシンプルなエフェクト◆Layered Buttonhttps://codepen.io/rauldronca/pen/EWeEvVパネルが積み重なってくるシンプルなエフェクト◆luxury buttonshttps://codepen.io/dbox/pen/bdzeEwグラデーションが美しい高級感のあるエフェクト◆CSS BUTTON HOVERhttps://codepen.io/ImranPardes/pen/YvmRpz次のページへ行きたくなる!?アニメーションが使われたエフェクト◆Bubble coloring buttonhttps://codepen.io/comehope/pen/eKqZjy泡がもこもこ浮き上がってくる楽しいエフェクトどんなページでもボタンをクリックして見てもらわないことには何も始まりません。これらのエフェクトを加えることで、少しでも多くクリックしてもらえるようなボタンを実装していきたいですね!
  • テクログ

    素敵だら! Linux コマンド ~基本編~

    こんにちはうなぎです。IT開発者にとって避けては通れない数ある Linux コマンドのうちから、厳選してご紹介する不定期コーナー“素敵だら! Linux コマンド”。本日は「~基本編~」。基本的かつ必要不可欠となるコマンドです。lscdcp■ ls`ls` は指定されたディレクトリにあるディレクトリ・ファイルの情報を出力するコマンドです。オプションに `ls -la` などとすれば、隠しファイル、カレントリ・親ディレクトリを含む全てのディレクトリ・ファイル(`-a`)を詳細な(`-l` )情報とともに出力することができます。オプション `-la` は便利なので、しばしば `l` や `ls` のエイリアスに設定されることもあります。`-la` しか普段使いされないといってもよいほどですが、もちろんオプションはそれだけではありません。`-h` `--human-readable` はファイルサイズの単位を 4096 であれば 4.0K のように読みやすい形で出力してくれます。`-m` はリスト対象をカンマ区切りで出力してくれます。などなど、ほかにも意外と便利なオプションが揃っています。また、他のコマンドと組み合わせて使われることもあります。例えばカレントリディレクトリ内にあるファイル数を知りたい場合はls -A | wc -l などとすることで、カレントリ・親ディレクトリを除く(`-A`)全てのディレクトリ・ファイルの数を集計(`wc -l`)できます。Linux には“パイプ”と呼ばれるものがあり、パイプはコマンド(プロセス)の出力を別のコマンド(プロセス)に入力することができ、上記のように縦線(|)で書き表されます。`ls` コマンドで出力した情報をこの“パイプ”機能によって他のコマンドに渡すことにより、より有用な情報を得ることができるわけです!■ cd`cd` はディレクトリを移動するためのコマンドです。オプションはあまりないので、しばしば使う小技をご紹介します。ホームディレクトリに移動するcd `cd` だけです。ホームディレクトリとは echo $HOME などとすると表示されるディレクトリで、ログイン直後は大体そのディレクトリに居ることになります。ひとつ前のディレクトリに戻るcd - ハイフン(`-`)をパスにすることで、ひとつ前に居たディレクトリに移動することができます。一つ前のコマンドで指定したディレクトリに移動するcd $_ `$_` は Bash の環境変数で、最後に実行したコマンドの引数が格納されています。例えばあるファイルの場所を確認するために `ls` コマンドを使用し、そのファイルが見つかったとします。次にそのディレクトリに移動したいものの、もう一度パスを指定するのが面倒ですよね?そんな時に上記のコマンドを実行することで、入力を省略することができます!※ Bash とは Linux OS を動かしているコア部分(カーネル)に処理を中継いでくれる、コマンドベースのインターフェースを持ったソフトウェアの一つです※ 他にも csh, ash, zsh などがあり、最近では fish が人気のようです`$_` 他、Bash の環境変数については以下を参照https://www.gnu.org/software/bash/manual/html_node/Special-Parameters.html■ cp`cp` はファイルやディレクトリをコピーするコマンドです。第一引数にコピー元、第二引数にコピー先を指定します。また、ディレクトリをコピーする時には、再帰コピーを示す `-R, -r, --recursive` のいずれかのオプションをつける必要があります。他にもコピー先が既に存在していた場合に強制上書き(`-f`)したり、上書き時に確認をする(`-1`)オプションなどがあります。単純にディレクトリやファイルを別の場所にコピーする際に使用する他にも、例えば設定ファイルを編集する前にバックアップを取っておきたいときなどは、cp file{,.back} とすると便利です。上記ではコピー先となる第二引数を省略し、コピー元のファイル名に `{,.back}` を付け加えています。こうすることで結果、実行したディレクトリでは file.back が生成されます。わざわざ第二引数を指定しなくて済むわけです!この `{}` は“ブレース展開”というもので、cp コマンドに限ったものではなく、例えば ファイルを移動する・ファイル名を変更する際に使用する `mv` では、mv file{,.old} とすることで、ちょっと名前を変えてファイルを置いておくこともできます。“ブレース展開”は他にも一度に複数のファイルを指定したりできるなど面白い機能ですが、今回は割愛します。`{}` については以下を参照https://www.gnu.org/software/bash/manual/html_node/Brace-Expansion.html以上少ないですが、`ls`, 'cp', 'mv' のご紹介でした。
  • テクログ

    Deployerでも動的にデプロイするホストを変更したい!

    ↑ってなりますよね?なるなるーホストが固定だと、deploy.phpにホストを書いて終わり、ってなるんですけど、AWSなどで今動いてるホストがコロコロ変わるとしたらdeploy.phpには固定で書けないですね。うーんこまったどうしよう。そんなときはこれ!hosts.yml〜くわしくはこちら!https://deployer.org/docs/hosts.htmlhosts.ymlにしたがってデプロイするよってしておけば、hosts.ymlを事前に生成すれば動的にできるんだ!(deploy.phpには inventory('hosts.yml');って書けば使われるよ。まあリンク先↑に書いてある。)なんだって!すごいね!はいソース の 例。pythonのほうが楽なんだけどいじりやすいようにphpにしましたですよ?雛形(SOURCE_hosts.yml)をつくっておいて、それのIPとインスタンスIDをリプレースしてるっす。わかるっすよね。雛形はじぶんでつくってね!(リンク先参照とかテストとかして)対象EC2はタグで絞り込んだりとかもしてます。これを使ってなにかあっても責任は全く取れませんなので十分に検証してね!hosts.yml生成するだけですけど。これをjenkinsに呼ばせるなら、失敗時はexit(1);とかすれば進まないのでは。ではいいかんじのDeployerライフを。<?php require 'aws_v3.phar'; use Aws\Ec2\Ec2Client as Ec2Client; use Aws\Exception\AwsException; echo 'generate_autoscale_yml START' . PHP_EOL . PHP_EOL; /**設定箇所 開始**/ //認証情報 $auth = [         "key"   => "ああああ",         "secret" => "いいいい",         "region" => "ap-northeast-1",         "version" => "2016-11-15", ]; //タグ、AutoScaleGroupの値 $AutoScaleGroup_value = 'もがもが'; //hosts.ymlの雛形となるものを読んでおく $source_hosts_yml_string = file_get_contents('./SOURCE_hosts.yml', FILE_USE_INCLUDE_PATH); //結果ファイル名 $hosts_yml_filename = './hosts.yml'; /**設定箇所 終了**/ //hosts.ymlに結果として書き出す文字列の殻 $hosts_yml_string = ''; try{     //動いている(running)、タグが該当のインスタンスを取得     $ec2client = Ec2Client::factory($auth);     $result = $ec2client->describeInstances([             'Filters' => [                     [                             'Name' => 'tag:AutoScaleGroup',                             'Values' => [$AutoScaleGroup_value],                     ],                     [                             'Name' => 'instance-state-name',                             'Values' => ['running'],                     ],             ],             'MaxResults' => 100,     ]);     //値の分解と使用     $reservations = $result['Reservations'];     foreach ($reservations as $reservation) {         $instances = $reservation['Instances'];         foreach ($instances as $instance) {             //もととなる文字のコピー             $mod_hosts_yml_string = $source_hosts_yml_string;             //置き換えに使う文字             $InstanceId = $instance['InstanceId'];             $publicip   = '';             foreach ($instance['NetworkInterfaces'] as $networkinterface) {                 $publicip = $networkinterface['Association']['PublicIp'];             }             //[INSTANCE_ID]と[PUBLIC_IP_ADDRESS]を置き換え             $mod_hosts_yml_string = str_replace('[INSTANCE_ID]', $InstanceId, $mod_hosts_yml_string);             $mod_hosts_yml_string = str_replace('[PUBLIC_IP_ADDRESS]', $publicip, $mod_hosts_yml_string);             $hosts_yml_string .= $mod_hosts_yml_string;         }     }     //書き込み     file_put_contents($hosts_yml_filename, $hosts_yml_string); } catch(AwsException $e){     var_dump($e->getMessage());     echo 'ERROR' . PHP_EOL . PHP_EOL; } echo 'generate_autoscale_yml END' . PHP_EOL . PHP_EOL;