いつも忘れるのでsshポートフォワーディングについてメモ ローカルフォワード localの8081番にアクセスするとremoteからアクセスできるtarget:80に繋げる例
いつも忘れるのでsshポートフォワーディングについてメモ ローカルフォワード localの8081番にアクセスするとremoteからアクセスできるtarget:80に繋げる例
自分は普段ソーシャルゲームの開発に関わっていますが、群雄割拠のグリモバ全盛期にその開発を効率化するために社内ではいろいろな取り組みがなされました。そのひとつにアプリ別ではなく機能別のチームを作るということがありました。結果としてそれは失敗だったと言えるのでそのことについて書いていきます。 背景 当時のソーシャルゲームの主流はカードゲームで、クエスト・レイドをこなしつつガチャで引いたカードを合成して強化していくスタイルが一般的でした。そしてその多くがシステムはほとんど同じで見た目だけを変えた「柄替え」アプリでした。 その中で行われたのが二つの共通化です。 コードの共通化 今までのアプリでは元のアプリのソースからフォークするなどして別のプロジェクトとして独立させそれに対して各チームが開発を行うと言う感じでしたが、今回の共通化ではゲームのコアとなるロジック部分をサブモジュールとして分離し、各アプ
Subject Alternate Names の略で、サーバ証明書のCN(Common Name)の別名というか追加名のこと。 普通サーバ証明書を買うと www.example.com など一つのホスト名がCNとして設定されたものが発行される。 ブラウザ等はサブドメインまで含めて完全一致でこのホスト名をチェックするから、www2.exmaple.com や example.com なんかのホスト名でアクセスすると証明書エラーが出る。でも www.example.com と example.com はサイトの中身同じだしどっちでもアクセスできるようにしたい。 だけどその為に証明書2枚も買うのはもったないし設定も面倒…。というのに対する一つの回答がSANという機能と思えば良い。より詳しいことは「Subject Alternate Names」でググれば分かる。 要は一つの証明書の中に2つ以上
Vagrant.configure('2') do |config| config.vm.provider :digital_ocean do |provider, override| override.ssh.private_key_path = '~/.ssh/id_rsa' override.vm.box = 'digital_ocean' override.vm.box_url = "https://github.com/smdahlen/vagrant-digitalocean/raw/master/box/digital_ocean.box" provider.private_networking = true provider.client_id = 'abc' provider.api_key = 'xyz' provider.image = 'CentOS 6.5 x64
vagrantとは 敢えて説明する必要がないくらい有名なツールですが一応、Wikipediaではこのように説明されています。 Vagrant is free and open-source software for creating and configuring virtual development environments. It can be considered a wrapper around virtualization software such as VirtualBox and configuration management software such as Chef, Salt and Puppet. vagrantはVirtualBoxなど、仮想環境を手軽に扱えるようにするためのrubyで書かれたラッパーソフトですが、プラグインで拡張することでAWSやDigita
DigitalOceanとは DigitalOcean公式の説明ではこうあります。 DigitalOcean is a platform created for developers who need to launch and scale their applications quickly. Additionally, DigitalOcean provides the perfect environment for developers to play around on the command line and learn more about customizing their own servers. DigitalOceanは、AWSのEC2の機能のみを特化させたようなクラウドプラットフォームです。 特徴 見易くシンプルな管理画面 高性能(ディスクはどのプランでもSSD) 安
バージョン 0.9 くらいのときの公式ドキュメントのざっくり訳+個人のメモ 情報が古い+理解が間違ってるとこあるかもなので注意して欲しいけど、需要がありそうなので出してみる Overview Sensu は監視ツールの一つ。Sensu はよく "monitoring router" と記述される。もっと平たく言うと、Sensu は多くのノードに対して "check" スクリプトを実行し、1 つまたは複数の Sensu サーバーにて "handler" スクリプトを実行する。 例えば、Apache の死活チェックをするとしよう。チェックスクリプトにより死活だけでなくメトリクスも収集する。そしてそのアウトプットは 1 つまたは複数の Handlers にルーティングされる。Handlers はチェック結果によって何をするのか定義するものだ。Handlers は今のところ E メール、IRC、T
Google Cloud Platform (GCP)の英語ブログに、Google Compute Engine (GCE)のライブマイグレーション機能について解説記事がポストされた。個人的にもいくつかの大規模な案件でこの機能の能力に触れて、GoogleまじGoogleだなと思わされたし、GCPチームで実際に作った人たちと会うととても誇らしげに説明してくれる。熱いのだ。そこで、上記ブログ記事+個人の経験をもとに簡単にまとめてみたい。 なお、以下の内容は個人の感想です! Heartbleedバグの時もVM再起動なし GCEでは2013年12月より、ライブマイグレーションを利用したTransparent Maintenance(自動メンテナンス)という運用を開始している。これはつまり、VMを動かしたまま同一ゾーン内の別のサーバーへ移動することで、ハードウェアやホストOSのメンテナンスを勝手にや
多種多様な構成のサーバーを Ansible で管理する場合、単一のベストプラクティスツリーに押し込むのは管理が大変すぎて現実的ではないなとおもい、どうしたものかなと悩んでいました。で、最近やっとこれかなという構成ができたので共有してみます。 何が問題か? ロールには共用できるものとできないものがある、それがいっしょこたに混ざるのが嫌 無理に共用できるようにと変数を多用するととても管理が大変。変数も覚えられないし、テストが大変 読み込むファイルのパスが大元のymlからの相対パスであり、include ではディレクトリ階層での整理が難しい -l で対象サーバーを絞り込んでも全てのタスクが表示され、skipped, skipped, skipped と関係ない task 表示がターミナルが埋まって見づらい そして、たどり着いたオレオレベストプラクティス まとめて管理したいサーバーグループ毎にベス
結論 Online DDLできない制約にひっかかってた InnoDB tables created before MySQL 5.6 do not support ALTER TABLE ... ALGORITHM=INPLACE for tables that include temporal columns (DATE, DATETIME or TIMESTAMP) and have not been rebuilt using ALTER TABLE ... ALGORITHM=COPY. In this case, an ALTER TABLE ... ALGORITHM=INPLACE operation returns the following error: ERROR 1846 (0A000): ALGORITHM=INPLACE is not supported. Rea
ここ最近、沢山シェルスクリプトを書くようになりました。 元々あまりシェルスクリプトを書いたこと無かったので、色々と勉強しつつ書いてるのですが、 他のプログラミング言語とはちょっと違って独特なクセというか、発見の度におぉー!ってなることが沢山あって楽しいです。 そんなわけで、最近学んだり参考にした中で特に感動したシェルの上手い書き方をまとめてみます。 きっとまだ知らないこととかもっと上手くやる方法なんかが沢山見つかりそうなので、 もっといいやり方あるよ!って方はコメントください 何もしない : (コロン)コマンド シェルを書いていた時に非常に欲しかったコマンドがこれ!何もしない! : というコマンド(?)を利用すると、何もせずに終了ステータス0(つまり正常終了)を返します。 これが様々な事に使える万能コマンドで、これによって面倒なエラー処理を簡潔にできたり、 入力や出力のリダイレクト元/先と
はじめに 世間を騒がせている bashの脆弱性(愛称ShellShock) ですが、 大抵の場合は yum update bash で済むようですが、 おそらく古いEC2 Instanceの場合、一緒にglibcなどが更新されて思わぬ影響が出ることがあります。 ※もちろん、AWSに限った話ではないです。 起こりえる事象として、今把握しているものは crond が機能しなくなる Apache+PHP の動作(host名解決など)が怪しくなる などがあります。 検証 bash更新作業 2013.03 の AmazonLinux で Loaded plugins: priorities, security, update-motd, upgrade-helper Installed Packages Name : bash Arch : x86_64 Version : 4.1.2 Releas
2015-08-30追記 この記事のストック数が100になって、さらに読まれそうなので補足です。 すみません、この記事の例はちょっとよくなかったです。yumのレポジトリのキーをインストールするにはAnsibleの rpm_keyモジュールが用意されているので、これを使うほうが楽です。 以下の記事は、モジュールが用意されていなくて、状態をチェックするコマンドと変更するコマンドの2つで実現するときの話だと思って読んでください。 今ではfailed_whenでスッキリ書けます (2013-10-08追記) Add failed_when module variable. by hnakamur · Pull Request #4073 · ansible/ansibleによりfailed_whenが追加されました。failed_whenについてはControlling What Defines
豚足は焼いて食べるのが常識だと思っていた@volanjaです。 さて、Ansible 1.6でreplace(置換)モジュールが出ていたので試してみました。 replaceモジュールでは、複数行の置換を行う事ができます。 これまで、複数行の置換をしたい場合はakishin999さんのAnsible で複数行の文字列置換を参考にsedを使うか、templateモジュールを使ってファイルそのものを入れ替える必要がありました。 templateを使うことがほとんどだったのですが、これで便利になりそうです。 replaceを試す。 では、akishin999さんのAnsible で複数行の文字列置換を参考に、実際にどのようになるか試してみます。 実行環境 $ ansible --version ansible 1.6.8 (release1.6.8 5a4f39bfbf) last updated
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く