cup日記

追記

2016-03-07 Terraform tfstateファイルを切り分ける

_ tfstateファイルからaws_route53だけ切り出す

 cat xxxx.tfstate | jq  '.modules[].resources | to_entries[] | select(.key | startswith("aws_route53")) | [.] | from_entries'

2014-07-04 Chefでrpmバージョンを固定する

rpm -qa --qf '%{INSTALLTIME} package "rpm-check-%{name}" do package_name "%{name}"; version "%{version}-%{release}" end\n' | sort |sed -e 's/^[0-9]* //g'

2013-11-18 chefのレシピを自動生成

_ chefのレシピを自動生成する

_ 他のレシピとリソース名の衝突を避けるためにプレフィクスを付け、冗長な書き方をしている。

_ rpmのバージョンを固定する

ssh sv01  "rpm -qa --qf 'package \"rpm-check-%{name}\" do package_name \"%{name}\"; version \"%{version}-%{release}\" end\n' " > sv01.rb

_ サービスの稼働状況を固定する

chkconfig --list |sed -e '/^$/,$d' | awk '{print $1" "$5}' | /opt/chef/embedded/bin/ruby -ne 's,v = $_.chomp.split; puts %Q(service "chkconfig-check-#{s}" do service_name "#{s}";action [#{v == "3:on" ? ":enable" : ":disable" }]; end)

2013-02-06 日本の休日判定をワンライナーで

_ 日本の休日判定をワンライナーで

 ruby -rrss -e 'exit RSS::Parser.parse("https://www.google.com/calendar/feeds/japanese__ja%40holiday.calendar.google.com/public/basic?max-results=100").items.map{|i| i.content.content.scan(%r|\d{4}/\d{2}/\d{2}|).to_s}.include?(Time.now.strftime("%Y/%m/%d"))'
終了コード:0=実行日は祝日、 1==実行日は祝日でない

_ 追記

max-resultsを書くより、icalを使ったが安全そう
ruby -ropen-uri -e 'exit open("https://www.google.com/calendar/ical/japanese__ja%40holiday.calendar.google.com/public/basic.ics").read.scan(/DTSTART;VALUE=DATE:(\d{8})/).flatten.sort.include?(Time.now.strftime("%Y%m%d"))'

2012-11-13 vmstatの出力に時刻を含める

_ vmstatの出力に時刻を含める

http://d.hatena.ne.jp/higher_tomorrow/20110601/1306887919
vmstat -n 3 | gawk '{ print strftime("%Y/%m/%d %H:%M:%S"), $0 } { fflush() }' >> vmstat.log

2012-08-07 パーティショニングが必要なケース

_ パーティショニングが必要なケースはどういうときか

以前、動的に容量割り当ての変更が可能な外部ストレージに対してパーティショニングが必要かどうか検討したケースがあったが、パーティショニングが明らかに必要なケースがあるということを知った。

「市販されているHDDは1TBや2TBなど切りのいい数字で販売されているが、実際の容量はわずかですが違いがある」ということ。

つまり、1TBなどは最低保証として確保できるが、端数についてはメーカーによって(場合によっては同型でも製造時期によっても?)に異なるということだ。

パーティショニングせずに、全部使用するとした場合、ディスク故障で交換した場合に、端数箇所に保存されたデータが消失するリスクがある。

これを回避するためには、交換前のディスクよりも容量が大きいものを用意すればいいのだが、これを良しとできるかはポリシーの問題だ


2011-03-02 メモリキャッシュを開放する

_ メモリキャッシュを開放する

メモリ上のキャッシュを開放するには以下のようにする。
sync
echo 3 > /proc/sys/vm/drop_caches

2010-06-05 容量を動的に変更できる外部ストレージにパーティションが必要か

_ 容量を動的に変更できる外部ストレージにパーティションが必要か

必要ない。

最近のストレージ製品は、割り当てたボリュームサイズを後から増やすことができる。この領域をiscsiでマウントしているサーバ側では、パーティションを切る必要があるのかよくわからなかった。

サーバ側でパーティションを切ってファイルシステムを作成していると、ストレージ側でサイズを増やしてもファイルシステムのサイズは変わらない。LVSを使っている場合はPVを作成してLVに追加、lvextendすることができるようになるが、領域拡張の機能がないocfs2などのファイルシステムをを使っているとそうは行かない。

そこで、そもそもパーティションとは何だと思って探してみた。で、

以下のサイトをみて不要であるとの結論に達している。

http://nobumasa-web.hp.infoseek.co.jp/partition/partition.html


2010-05-01 WakeOnLan

_ WakeOnLanで電源を入れる

/sbin/ether-wake コマンドでLinuxからPCの電源投入ができる。

このコマンドは、net-toolsパッケージの中に入っている。


2009-12-01 スイッチ側tagポート−CentOS5側untagポート=通信不可

_ スイッチ側tagポート−CentOS5側untagポート=通信不可

スイッチ側がtagポートになっていて、VLAN1,10,20を束ねているような場合、CentOS5側のポートもVLAN=yesして同じVLANポートの設定をしないと通信が正常におこなわれない。tcpdumpすると、パケットはCentOS5側のポートに届いているけど、プロセスにまで渡らないという不可思議現象にたっぷりはまる。スイッチにあるデフォルトVLANやPVIDといった設定はCentOS5ではできないのだ。

したがって、そのようなスイッチに接続していたサーバ筐体をネットワーク経由でインストールしなおそうとするときには、スイッチ側のtagポートを一度解除して、インストールするのがいい。そうでないと、インストールの途中で通信が途絶える。

_ その後の調査の結果、スイッチ側でPVIDをタグ化するかしないかという設定ができることがわかった。つまり、スイッチと整合をとらないといけないということだ。


2009-11-25 bash文字列操作Tips

_ bash文字列操作Tips

シェルで文字列をパースして部分文字列を抜き出したいとき
>>>i="cup@test.jp"
>>>echo ${i#*@}
test.jp
>>>echo ${i%@*}
cup
>>>

2009-10-05 LiveUSBで復旧しようとしてはまる

_ LiveUSBで復旧しようとしてはまる

LVMのロジカルボリュームをlvremoveで削除した後に、rebootすると、OS起動が失敗した。途中で削除したロジカルボリュームをfsckしにいき、デバイスがない!といってシェルモードに落ちるのだ。

調べると、/etc/fstabから削除したロジカルボリューム行を削除するのを忘れていた。

仕方がないので、/etc/fstabを編集しようと、Fedora9のLiveUSBで起動しなおし、ハードディスクをマウントして/etc/fstabを編集、保存して再起動!が、やはり、削除したロジカルボリュームをfsckしにいって失敗して起動できない・・・・。

どこに削除したボリュームの情報が残ってるんだーとさんざん探しまくると、先ほど編集したはずの/etc/fstabが元に戻っている・・・・。どういうこと????

3回ほど編集しなおしたが、LiveUSB上では編集されている/etc/fstabが、やっぱり編集前にもどっている摩訶不思議現象・・・果たしてその正体は・・・




「LiveUSBは、COW形式でファイルの編集結果を保持する」でした。 つまり、LiveUSBから起動して、ローカルハードディスクを編集したつもりになっていたけど、編集内容はcowファイルとしてLiveUSBの中に保存されて、ローカルハードディスクは全然変更されていないのだ。  これには一本取られました・・・。インストールCDで、linux rescueして/etc/fstabを編集したら、一発で復活しました

2009-09-30 CentOSをセキュアにしたい(アカウント)

_ CentOSをセキュアにしたい(アカウント)

OSをセキュアに仕立てたい。その時不要パッケージを入れない、不要サービスを停止する等は基本だが、不要アカウントも消しておきたい。 しかし、いったい何をどこまで消していいやらわからない。そこで、このサイトhttp://www.faqs.org/docs/securing/chap5sec42.htmlが参考になる。 アカウントは初期インストール後こんな感じ。
userdel adm
userdel lp
userdel sync
userdel shutdown
userdel halt
userdel news
userdel uucp
userdel operator
userdel games
userdel gopher
userdel mail
userdel ftp
groupdel adm
groupdel lp
groupdel news
groupdel uucp
groupdel games
groupdel dip
groupdel mail

2009-09-29 CentOS5を小さくインストールする(locale編)

_ CentOS5を小さくインストールする(locale編)

CentOS5を小さくインストールしたい時、インストールするパッケージを絞り込むのが定石だ。更に加えて、/usr/share/{doc,locale}を削ることで、より小さくすることができる。 http://osdir.com/ml/fedora-livecd/2009-08/msg00003.htmlにならってキックスタートファイルを以下のようにする。
%packages --excludedocs --instLangs=ja_JP.utf8:en_US.utf8
(略)
%post
rpm -qda | xargs rm -f
localedef --list-archive | grep -v -i -E 'ja_JP.utf8|en_US.utf8' |
xargs localedef --delete-from-archive
mv /usr/lib/locale/locale-archive /usr/lib/locale/locale-archive.tmpl
/usr/sbin/build-locale-archive

2009-09-28 snmpdのログ出力を抑制したい

_ snmpdのログ出力を抑制したい

CentOS 5.3でsnmpdのログが大量に、/var/log/messagesに出力される。これを抑制したい。
Sep 28 19:02:16 host2 snmpd[3064]: NET-SNMP version 5.3.2.2
Sep 28 19:02:16 host2 snmpd[3064]: Received SNMP packet(s) from callback: 1 on fd 4
Sep 28 19:02:29 host2 snmpd[3064]: Connection from UDP: [10.20.0.60]:33030
Sep 28 19:02:29 host2 snmpd[3064]: Received SNMP packet(s) from UDP: [10.20.0.60]:33030
Sep 28 19:02:29 host2 snmpd[3064]: Connection from UDP: [10.20.0.60]:33030
Sep 28 19:03:26 host2 snmpd[3064]:last message repeated 12 times
それには、こんな塩梅に設定を追加してやればよい。
[root@host2 snmp]# cat /etc/sysconfig/snmpd.options 
# snmpd command line options
# OPTIONS="-Lsd -Lf /dev/null -p /var/run/snmpd.pid -a"
OPTIONS="-LS5d -Lf /dev/null -p /var/run/snmpd.pid -a"
[root@host2 snmp]#
他のサイト(http://bluenotes.justblog.jp/technote/2009/01/snmpd-bdc4.html)にあった設定方法とはちょっと異なる。パッケージじゃないのかな?ちなみに私の環境は以下。
[root@host2 snmp]# rpm -qa net-snmp*
net-snmp-libs-5.3.2.2-5.el5
net-snmp-5.3.2.2-5.el5
net-snmp-utils-5.3.2.2-5.el5
net-snmp-libs-5.3.2.2-5.el5
[root@host2 snmp]# 

2009-09-25 auditのログを集約する

_ auditのログを集約する(CentOS5)

auditのログをリモートサーバに飛ばしたい。その機能は、audispdが持っている。
## クライアント側
yum install audispd-plugins 
vi /etc/audisp/audisp-remote.conf
# remote_serverを設定する。
vi /etc/audisp/plugins.d/au-remote.conf
# activeをyesに変更する
/etc/init.d/audit restart
ps awfx # 下記プロセスが確認できる。
(略)
 6970 ?        S<sl   0:00 auditd
 6972 ?        S<sl   0:00  \_ /sbin/audispd
 6973 ?        S<     0:00      \_ /sbin/audisp-remote
 
## サーバ側
vi /etc/auditd.conf
# tcp_listen_port をクライアント側のものに合わせる。初期値60

2009-09-23 プロキシの自動構成スクリプトを使う

_ プロキシの自動構成スクリプトを使う

今まで、仕事で使うサイトに外からアクセスする際には、都度ブラウザのプロキシ設定を切り替えてアクセスしていたが、これが面倒くさい。そこで、仕事で使うサイトに限ってプロキシ設定が有効となるようにした。 キーワードは自動構成スクリプトだ。 c:\proxy.pacを置いて、ブラウザでfile://c:/proxy.pacと設定する。
function FindProxyForURL(url,host)
{
	if(shExpMatch(host, "portal.business.hoge")){
		return "PROXY 123.12.12.12:8080";
	}else{
		return "DIRECT";
	}
}
なお、IEではこの設定をおこなうと、セキュリティ警告がでるようになってうるさい。そこで、セキュリティ設定を変更する。ローカルイントラネットのサイト設定で ローカルイントラネット ダイアログのチェックをすべて外す。こうすることで、すべてインターネットゾーンとみなされて警告が出なくなる。対応が雑だけど、セキュリティを強固なほうに傾けているから、ひとまずよしとする。

2009-09-16 ホストOSで困ることとその対応

_ ホストOSで困ることとその対応

仮想化ホストOS上のオペレーションで、意図せぬ状態を作り出してしまい回復できないで困ることがよくある。主に、isoイメージをアタッチしたり、NFSでマウントした領域がNFSサーバのトラブルなどによりアクセスできなくなったり・・・

_ こういうとき、OSを再起動してしまえれば楽なのだが、ゲストが複数動いているホストではそうもいかない。なんとか回復できないかとおもうが、たいていの場合調査のためのコマンドラインがフリーズする。

_ 調査の方法だが、straceを使ってみる。

strace lsof
strace df -h
strace losetup -a
などを試して、どこで詰まっているのかを確認する。

_ 詰まった箇所から、怪しいデバイスにあたりをつけて、対処していく。こういう場合、たいていはデバイスを触りに行って応答がなくなることが多い気がする。

このときは、デバイスを握っているプロセスを停止(強制終了)し、losetup -d /dev/xxaなどとして不要なデバイスを削除する。


2009-09-15 CentOS DVDイメージをダウンロードする

_ CentOS DVDイメージをダウンロードする

dagをレポジトリに登録して、
yum install bittorrent
する。

_ これで、bittorrent-console, bittorrent-curses, bittorrent-trackerというコマンドが使えるようになる。

それぞれの違いがわからないが、*consoleは、標準出力に都度状態が出力され、*cursesは画面の定位置に状態が表示されるもののよう。

http://ftp.jaist.ac.jp/pub/Linux/CentOS/5.3/isos/x86_64/CentOS-5.3-x86_64-bin-DVD.torrentをローカルにコピーしておいて、
 bittoreent-curses CentOS-5.3-x86_64-bin-DVD.torrent
とすることでダウンロードが始まる。15分程度でダウンロードできた。

_ CentOSのリポジトリ(EPEL)を追加する

wget http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-3.noarch.rpm

rpm -ivh epel-release-5-3.noarch.rpm


2009-09-11 PDFを背景にして書類を作成

_ PDFを背景にして書類を作成

PDFで書類をもらうことがあるが、これに文字を記入して扱いたいことがある。やり方は

(1)PDFを画像ファイル(BMP)にして、(2)それをWordで背景として読み込み、(3)テキストを記入する。

(1)PDFCreator(http://en.pdfforge.org/pdfcreator)を使う。文字化けするので、ここ(http://whitespace01.blogspot.com/2008/01/pdfcreator-095.html)をみて直す。これで、PDF印刷してPDFCreatorでBMPとして保存する。

(2)Wordのヘッダーに、(1)で作成したBMPを挿入する。(挿入-オブジェクト)

(3)テキストボックスを配置して、テキストを記入する。


追記