読者です 読者をやめる 読者になる 読者になる

ls [internet]

技術メモ

chefでgitのdeploy key使うサンプル

deploy keyを使ったりするサンプル privateでも使える stackoverflowで見かけたやつにちょっと手を入れてます
ssh_configにgithubの接続先書きわけてもいいんですけど単一のrecipeにぺぺっとコピペする用
deploy keyだけfiles/に置いて上三行書き換えれば使えるはず。。。

private_repository   = "git@github.com:org/repo.git"
deploy_directory     = "/opt/toolname"
source_ssh_deploykey = "github-deploy.pem"


github_ssh_wrapper   = "/root/.ssh/github_git_wrapper_#{source_ssh_deploykey}.sh"
github_ssh_deploykey = "/root/.ssh/#{source_ssh_deploykey}"

cookbook_file "#{github_ssh_deploykey}" do
  source "#{source_ssh_deploykey}"
  mode 0600
end

file "#{github_ssh_wrapper}" do
  mode 0755
  content "#!/bin/sh\nexec /usr/bin/ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i #{github_ssh_deploykey} \"$@\""
end

package "git" do
  action :install
end

git "#{deploy_directory}" do
  repository "#{private_repository}"
  action :sync
  ssh_wrapper "#{github_ssh_wrapper}"
end

GCP(GCE)でalias ipを使う

IPエイリアスとかVIPとかeth0:0みたいなやつです。

と言っても現状、

Configuring an Instance's IP Addresses - Compute Engine — Google Cloud Platform

Choose an IP address that doesn't belong to any network in your project.

なので物理と同じ感覚では使えません。
AWSVPCでもインターフェース付け替えとか似たようなものですが…。

  • 一台だけの場合

    1. IP転送オプション付きでinstanceを起動する
    2. VIPを決めてeth0:0に付与する
    3. routingでinstanceを指定して転送する
  • 二台以上準備してVIPを付け替えたい場合

    1. 該当するすべてのinstanceで上記の2.までの処理をしておく
    2. 付け替え時はroutingの宛先を変更する
    3. 前のルールを削除→宛先を再作成、またはroutingのpriorityを高くして差し込む

ぐらいでしょうか。

付け替えるには、APIアクセスを許可したinstanceを使うのが楽です。

もしgoogleで辿り着いた方はMHAやredis-sentinelをGCE上で運用したいのかもしれませんが、素直にCloudSQL使ったりtwemproxy-agent使ったりするほうがいいでしょう。

curlでbashスクリプトを実行して引数も与える

curl -L https://www.chef.io/chef/install.sh | bash -s -- -v 12

まあこういうやつですね。

bashのオプション

Man page of BASH

-s
-s オプションが指定された場合と、 オプションを全て処理した後に引き数が残っていなかった場合には、 コマンドは標準入力から読み込まれます。 このオプションを使うと、 対話的シェルを起動するときに 位置パラメータを設定できます。

--
-- はオプションの終わりを示し、それ以降のオプション処理を行いません。 -- 以降の引き数は全て、ファイル名や引き数として扱われます。 引き数 - は -- と同じです。

[改訂新版] シェルスクリプト基本リファレンス  ??#!/bin/shで、ここまでできる (WEB+DB PRESS plus)

[改訂新版] シェルスクリプト基本リファレンス  ??#!/bin/shで、ここまでできる (WEB+DB PRESS plus)

bashなら机の上に一冊あるとググるよりも便利です。

OSXのcurlで正しいSSL証明書でInvalid certificate chainと警告が出る

最新版のchromeでは正常に表示される証明書がcurl経由だとエラーになる。

* SSL certificate problem: Invalid certificate chain
curl: (60) SSL certificate problem: Invalid certificate chain
More details here: http://curl.haxx.se/docs/sslcerts.html

どうもバグがあるようなのだけど、証明書とkeychainは触り始めると深淵なので一旦brewcurlを入れる。

brew install curl --with-openssl && brew link curl --force

更新前

# curl -V
curl 7.30.0 (x86_64-apple-darwin13.0) libcurl/7.30.0 SecureTransport zlib/1.2.5
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smtp smtps telnet tftp
Features: AsynchDNS GSS-Negotiate IPv6 Largefile NTLM NTLM_WB SSL libz

更新後

# curl -V
curl 7.46.0 (x86_64-apple-darwin13.4.0) libcurl/7.46.0 OpenSSL/1.0.2e zlib/1.2.5
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
Features: IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP UnixSockets

私の環境では無事警告が出なくなりました。
問題があったらunlinkで切り戻せば大丈夫。

参考

ls.hateblo.jp

CentOS 6.6のperl-devel(glibc)の依存性を解決する

[CentOS-announce] CEBA-2015:1822 CentOS 6 glibc BugFix Update - Upcoming News - Compatible Support Forums

このglibc-2.12-1.166系が入っているとperl-develを入れるときに関連パッケージの関連付けがうまくいかなかった。

今回は

yum downgrade glibc-common-2.12-1.149.el6_6.7 glibc-2.12-1.149.el6_6.7 nscd-2.12-1.149.el6_6.7

したら上手く行った。

しかしCentOSリポジトリはカオスだ。。。

grafanaのグラフが文字化けしていたので直した

f:id:madaranokarasu:20151127172441p:plain

webuiで見てる分には大丈夫なんだけど、direct linkで画像を生成すると化けてしまう。

最近のgrafanaは内部的にPhantom.JSを使ってレンダリングしているようなので、

qiita.com

このあたりを試したがダメで絶望していたのだけど、ふとこのサーバーはLANG=ja.JPだったなと思いついて

/etc/init.d/grafana-server

LANG=c

と書いたら直った。 上記の日本語フォントも必要みたいだけど。

今のところLANG=c書いた事によってgrafanaの表示は変になったりはしていないみたい。

mosh 1.2.5をCentOS6/AmazonLinuxにrpmでインストールする

mosh 1.2.5を使いたい。
epelにはcentos7系には既に入っている。
centos6とcentos6ベースのAmazon Linux(2015.09含む)は、まだepelでも1.2.4のまま。

2015/11時点での話なのでいずれ入るでしょうが、el7のepelからsrcを持って来てビルドします。

wget http://dl.fedoraproject.org/pub/epel/7/SRPMS/m/mosh-1.2.5-1.el7.src.rpm
yum -y install rpm-build rpmdevtools protobuf-compiler protobuf-devel libutempter-devel zlib-devel ncurses-devel openssh-clients perl-IO-Tty openssl-devel gcc gcc-c++
rpmbuild --rebuild mosh-1.2.5-1.el7.src.rpm

# centos6
yum install rpmbuild/RPMS/x86_64/mosh-1.2.5-1.el6.x86_64.rpm
# amazon linux
yum install rpmbuild/RPMS/x86_64/mosh-1.2.5-1.amzn1.x86_64.rpm
# yum list |grep mosh
mosh.x86_64         1.2.5-1.amzn1      @/mosh-1.2.5-1.amzn1.x86_64

完了。