Chef solo users cookbook
/etc/passwd
と /etc/shadow
を管理する users クックブックを利用します。
http://community.opscode.com/cookbooks/users
環境
使い方
Berksfile には chef-solo-search
, users
を追記します。 chef-solo-search
は Chef solo でローカルの data-bag を検索するようにするクックブックです。
cookbook "chef-solo-search" cookbook "users"
ユーザ情報を格納した data_bag を作成します。data_bags/users/<user-id>.json
password は以下のコマンドで生成します。
% openssl passwd -1 "plaintextpassword"
{ "id": "<user-id>", "password": "<passowrd>", "ssh_keys": [ "ssh-rsa AAAA..." ], "groups": ["sysadmin"], "uid": 1000, "shell": "\/bin\/bash" }
users クックブックは全ノードで利用するので、共通利用する site-cookbooks/common
を生成します。
% knife cookbook create common -o site-cookbooks
common クックブックの recipes/default.rb
で users クックブックの users_manage
LWRP を利用します。
include_recipe 'users' users_manage 'sysadmin' do group_id 2300 action [:remove, :create] end
users
, chef-solo-search
を common クックブック metadata.rb
の depends に指定します。
depends 'chef-solo-search' depends 'users'
common クックブックを適切な Role または Node の run_list に追加してください。
まとめ
ざっくり手順をまとめました。細かいところはドキュメントを参照してください。
Chef 難しすぎる気がします。自分だけの利用で足りる簡単なクックブックを作成して構成管理するのはまだ簡単でシンプルに済ませることができたけど、 Berkshelf などを用いた外部のクックブックを利用しようとするとそのクックブックの利用方法を理解するだけでしんどいです。
今のところは基本的な users, openssh, sudo クックブックなどは外部のものを使用しています。全ノード対象な設定は common クックブックに書いて、 base ロールで管理しているけど、これでいいんだろうか。あと話題になっているわりには公式ドキュメント、海外エントリが主な情報源になっていて ぐぬぬ... な感じです。
iTerm2 でプロファイルごとにログインシェルの設定を変更する
iTerm2 でプロファイルを Login shell
に設定している場合、プロファイル名がログインシェルの環境変数 ITERM_PROFILE
に設定されているので、それを用いてシェルの設定を出し分けます。
% echo $ITERM_PROFILE Hotkey Window
自分はログイン時に screen を自動で起動するようにしているんだけど、Hotkey Window
プロファイルで起動したときは自動で起動しないようにしている。
if [ "$ITERM_PROFILE" != "Hotkey Window" -a \ $SHLVL -eq 1 -a -x "`which screen 2>/dev/null`" ]; then screen -UxR fi
GNU screen の title に ssh リモートホスト名を表示する
別途シェルスクリプトを介してやってたんですが、 .ssh/config
だけで済んだので更新。
以下を .ssh/config
に貼りつけたら動きます。 % man ssh_config
にありますが、%h
がリモートホスト名に置換されるため、それを弄ってます。
PermitLocalCommand yes LocalCommand [[ "$TERM" =~ ^screen ]] && echo -ne "\ek$(echo '%h' | awk -F '.' '{print $1}')\e\\"
ローカルホストでは実行しているコマンド名を表示するようにしてます(zsh
autoload -Uz add-zsh-hook function _precmd_screen_title() { echo -ne "\ek$(basename $SHELL)\e\\" } function _preexec_screen_title() { echo -ne "\ek$1\e\\" } add-zsh-hook precmd _precmd_screen_title add-zsh-hook preexec _preexec_screen_title
iMac (2008 Early) の HDD を SSD に換装した
Macbook Pro 15 Retina をメインにしてから利用していなかった iMac (Early 2008) をサーバ用途で再利用しようと思い、せっかくなので SSD に換装した。
SSD は安定してるらしいインテルならなんでもいいかなと思い、アマゾンがおすすめしてきたものを安直に選択した。kakaku 最安よりちょい高い。
インテル Boxed SSD 335 Series 240GB MLC 2.5inch 9.5mm Jay Crest Reseller BOX SSDSC2CT240A4K5
iMac の分解は初めての作業だったが、表に出てくるネジを外していくだけで済んだので思っていたより楽に済んだ。必要な工具は、100均の吸盤(正面パネルを外す)、トルクスドライバ T8、プラスドライバ 2番(不確か)。ディスプレイを本体から引き剥がす際に勢い良く引くとケーブルが千切れることが考えられるため、そこだけ注意したい。SSD の固定は難しかったためセロハンテーブで本体に貼り付けて固定した。HDD と違い振動しないし、たぶん剥がれることもないと思う。
OS は後日 Ubuntu Server LTS 12.04 を入れる予定。
Homebrew で screen (git-master) をインストールする
screen のデフォルトの formula は縦割りに対応していないため、見つけた formula を利用してみたが、 ansi.c へのパッチが当たっておらずビルドできなかったので修正して利用させてもらった。
% brew install --HEAD https://gist.github.com/superbrothers/908aedf677eb512e9ea1/raw/6b0c396d8be8bc137131a7caf43d6608e7771e8f/screen-vertical-split.rb
UFJ ダイレクトトップページの口座残高をマスクするユーザスクリプト
数ヶ月に UFJ ダイレクトがリニューアルされてからサイトトップの口座残高の表示が気になっていた。
以前はトップに口座残高の表示はなかったような覚えがあるけど、残高確認の利用が多いからかでっかくサイトトップに載るようになった。口座残高は秘密にしたい情報であるし、公共の場で開くと覗き見されることも考えられるため非常に良くないと思う。
口座残高の表示は便利なので残しつつ通常はコメ印とし、マウスオーバーで数字に変更する実装を要望として投げたが、いつ実装されるかそもそも聞き入れられるかもわからないため、ユーザスクリプトでひとまず対応した。銀行サイトで利用されるスクリプトなため、利用される方は実装内容を正しく理解し自己責任でお願いします。
livedoor Reader のクリップ登録を Pocket に変更する
livedoor Reader のクリップボタンは他のサービスを使うように変更ができる。任意を URL を別ウィンドウで展開でき、その際記事のタイトル、URL、選択文字列を置換できるようになっている。最近は Pocket を頻繁に利用するので、Pocket に登録するように変更した。
Pocket はエントリを登録するブックマークレットが用意されているため、ブックマークレットのエントリのタイトル、URL を設定する部分を指定の文字列に書き換える。また、別ウィンドウでブックマークレットを実行後ウィンドウが開きっぱなしになるので、スクリプト読み込み完了後 100ms 遅れてウィンドウを閉じるようにした。
設定変更 -> クリップの設定 -> クリップボタンの設定 -> 他のサービスを使う
以下のブックマークレットを ジャンプするURL(別ウィンドウに表示されます) に入力して 設定を保存 をクリック。
javascript:(function(){var e=function(t,n,r,i,s){var o=[2272008,2689325,5299544,1474200,2649928,6356120,1279247,5950253,7548592,5987561];var i=i||0,u=0,n=n||[],r=r||0,s=s||0;var a={'a':97,'b':98,'c':99,'d':100,'e':101,'f':102,'g':103,'h':104,'i':105,'j':106,'k':107,'l':108,'m':109,'n':110,'o':111,'p':112,'q':113,'r':114,'s':115,'t':116,'u':117,'v':118,'w':119,'x':120,'y':121,'z':122,'A':65,'B':66,'C':67,'D':68,'E':69,'F':70,'G':71,'H':72,'I':73,'J':74,'K':75,'L':76,'M':77,'N':78,'O':79,'P':80,'Q':81,'R':82,'S':83,'T':84,'U':85,'V':86,'W':87,'X':88,'Y':89,'Z':90,'0':48,'1':49,'2':50,'3':51,'4':52,'5':53,'6':54,'7':55,'8':56,'9':57,'\/':47,':':58,'?':63,'=':61,'-':45,'_':95,'&':38,'$':36,'!':33,'.':46};if(!s||s==0){t=o[0]+t}for(var f=0;f<t.length;f++){var l=function(e,t){return a[e[t]]?a[e[t]]:e.charCodeAt(t)}(t,f);if(!l*1)l=3;var c=l*(o[i]+l*o[u%o.length]);n[r]=(n[r]?n[r]+c:c)+s+u;var p=c%(50*1);if(n[p]){var d=n[r];n[r]=n[p];n[p]=d}u+=c;r=r==50?0:r+1;i=i==o.length-1?0:i+1}if(s==189){var v='';for(var f=0;f<n.length;f++){v+=String.fromCharCode(n[f]%(25*1)+97)}o=function(){};return v+'077a87607f'}else{return e(u+'',n,r,i,s+1)}};var t=document,n='[[url]]',r='[[title]]';var i=e(n);var s=t.createElement('script');s.type='text/javascript';s.src='https://getpocket.com/b/r4.js?h='+i+'&u='+encodeURIComponent(n)+'&t='+encodeURIComponent(r);s.onload=function(){setTimeout(function(){window.close()},100)};e=i=function(){};var o=t.getElementsByTagName('head')[0]||t.documentElement;o.appendChild(s)})()