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

Serverspecでcommand実行のResource Typesを使ったときに戻り値が空白になったときのワークアラウンド的なもの

大分ブログを書いていませんでした。
リハビリ的に備忘メモを。


ServerspecでcommandのResource Typesを使って、stderrのチェックするテストを
行っていたのですが、どうも戻り値が空白になるようでうまく動かない。


今回の例は特定のユーザ用にPythonの環境をコンパイルしており、
そのバージョンチェックをテストにしています。テストはこんな感じです。

describe command("/home/myuser/python/bin/python -V") do
  its(:stderr) { should match "Python 2.7.3" }
end


結果はこんな感じ。

 2) Command "su -l myuser -c '/home/myuser/python/bin/python -V'" stderr should match "Python 2.7.3"
            Failure/Error: its(:stderr) { should match "Python" }
              expected "" to match "Python 2.7.3"
              /bin/sh -c su\ -l\ myuser\ -c\ \'/home/myuser/python/bin/python\ -V\'


色々やってみたのですが、うまくいかなかったので、
ワークアラウンド的に参考リンクを元に、全てを標準出力に出してみました。

describe command("su -l myuser -c '/home/myuser/python/bin/python -V 2>&1'") do
  its(:stdout) { should match "Python 2.7.3" }
end


こうすることで、一旦テストは成功するようになりました。
今日はこんなところで。

TrailDashを使ってみる

CloudTrailを可視化するTrailDashというものがあることを知り、使ってみました。
# 参考のサイトほぼそのままですが、自分でやったメモです。

CloudTrailとSQS環境を作る


まずはCloudTrail環境を作ります。

f:id:think-t:20150413001546p:plain


S3バケットとSNSの設定を行います。

f:id:think-t:20150413001554p:plain


CloudTrailを有効にしました。

f:id:think-t:20150413001601p:plain


次にSQSの設定を行います。Queueの設定を行います。

f:id:think-t:20150413001607p:plain


デフォルトの設定でQueueを設定します。

f:id:think-t:20150413001614p:plain


SNS Topicとの関連付けを行います。

f:id:think-t:20150413001621p:plain

SNS Topicの設定を行います。

f:id:think-t:20150413002756p:plain

設定を有効にしました。

f:id:think-t:20150413001635p:plain

TrailDash環境を作る

TrailDashはDocker上で動きます。
今回はEC2でCentOS6.6のインスタンスを稼動させ、ここでDockerを動かしました。


まずは、EC2インスタンスにIAMRoleの設定をするためにIAMRoleを作成しました。
IAMRoleは、S3およびSQSのフルアクセスをつけたRoleとしました。


次にepelのリポジトリを参照できるようにし、Dockerをインストール。

# rpm -ivh http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
# yum install --enablerepo=epel docker-io
# service docker start


その後、TrailDashのテンプレートをダウンロードし、コンテナを起動。

# docker pull appliedtrust/traildash
# docker run -i -d -p 7000:7000 -e "AWS_SQS_URL=https://sqs.ap-northeast-1.amazonaws.com/<your id>/cloudtrail" -e "AWS_REGION=ap-northeast-1" -e "DEBUG=1" -v /home/traildash:/var/lib/elasticsearch/ appliedtrust/traildash


指定した7000番ポートにブラウザでアクセスしたところ、TrailDashの画面が表示されました。

f:id:think-t:20150413003754p:plain



ログがグラフィカルに表示され、とても素敵な感じです。


いろいろ工夫してみようと思います。


今日はこんなところで。

Dockerを触る

触ろう、触ろうと思ってなかなか触れなかったDockerを簡単に触ったので、そのメモです。


今回はCentOS6.6(64bit版)を使って環境を作りました。

インストール


EPELリポジトリからRPMパッケージでインストールします。

# rpm -ivh http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
# yum install --enablerepo=epel docker-io


サービスが起動できればOK。

# service docker start                                                                                                      
Starting cgconfig service:                                 [  OK  ]
Starting docker:                                           [  OK  ]

コンテナを操作してみる


コマンドを試してみます。

コンテナの情報を表示
# docker info
Containers: 0
Images: 2
Storage Driver: devicemapper
 Pool Name: docker-253:0-25057-pool
 Pool Blocksize: 65.54 kB
 Data file: /var/lib/docker/devicemapper/devicemapper/data
 Metadata file: /var/lib/docker/devicemapper/devicemapper/metadata
 Data Space Used: 306.8 MB
 Data Space Total: 107.4 GB
 Metadata Space Used: 782.3 kB
 Metadata Space Total: 2.147 GB
 Library Version: 1.02.89-RHEL6 (2014-09-01)
Execution Driver: native-0.2
Kernel Version: 2.6.32-504.12.2.el6.x86_64
Operating System: <unknown>
CPUs: 1
Total Memory: 490.4 MiB
Name: localhost.localdomain
ID: YEDK:TCTC:VEJU:TQWG:ETRC:LSX2:TIY5:YTMC:62GJ:ZY7L:HS74:OSXG
バージョンの確認
# docker version                                                                                                            
Client version: 1.4.1
Client API version: 1.16
Go version (client): go1.3.3
Git commit (client): 5bc2ff8/1.4.1
OS/Arch (client): linux/amd64
Server version: 1.4.1
Server API version: 1.16
Go version (server): go1.3.3
Git commit (server): 5bc2ff8/1.4.1
Docker Imageをダウンロード

CentOSの最新版イメージをダウンロードする例です。

# docker pull centos:latest
centos:latest: The image you are pulling has been verified
511136ea3c5a: Pull complete                                                                                                                   
b6718650e87e: Pull complete                                                                                                                   
41054cbffecc: Pull complete                                                                                                                   
214a4932132a: Pull complete                                                                                                                   
Status: Downloaded newer image for centos:latest  
Docker Imageの一覧表示
# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
centos              latest              214a4932132a        43 hours ago        229.6 MB
Docker Imageを起動する
# docker run -i -t -d 214a4932132a /bin/bash
506b46e19ba9da0760c83f947cdf972693ad6a47f05ead789efea499c83555c7
起動中のコンテナを表示する
# docker ps                                                                                                                 
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
506b46e19ba9        centos:latest       "/bin/bash"         8 minutes ago       Up 8 minutes                            furious
起動したコンテナに接続する
# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
506b46e19ba9        centos:latest       "/bin/bash"         9 seconds ago       Up 8 seconds                            furious

# docker exec -it 506b46e19ba9 /bin/bash                                                                       
[root@506b46e19ba9 /]# ps -fe
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 12:03 ?        00:00:00 /bin/bash
root        19     0  0 12:05 ?        00:00:00 /bin/bash
root        38    19  0 12:05 ?        00:00:00 ps -fe
[root@506b46e19ba9 /]# cat /etc/redhat-release 
CentOS Linux release 7.1.1503 (Core) 
コンテナを起動する
# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
506b46e19ba9        centos:latest       "/bin/bash"         9 seconds ago       Up 8 seconds                            furious

# docker start 506b46e19ba9
506b46e19ba9
コンテナを停止する
# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
506b46e19ba9        centos:latest       "/bin/bash"         9 seconds ago       Up 8 seconds                            furious

# docker stop 506b46e19ba9                                                                                                  
506b46e19ba9
コンテナを再起動する
# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
506b46e19ba9        centos:latest       "/bin/bash"         9 seconds ago       Up 8 seconds                            furious

# docker restart 506b46e19ba9
506b46e19ba9
コンテナを削除する
# docker stop 506b46e19ba9
506b46e19ba9

# docker rm 506b46e19ba9
506b46e19ba9

# docker ps -a                                                                                                              
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
イメージを削除する
# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
centos              latest              214a4932132a        43 hours ago        229.6 MB

# docker rmi 214a4932132a
Untagged: centos:latest
Deleted: 214a4932132a05e9cc97624436a77743f368948c4776b186975d319140e8b45c
Deleted: 41054cbffecca8ca909a0c4c163eb0ddb25f50311a96de136239d3b4287b3618
Deleted: b6718650e87e3706c52682c87ecfd7a7e1fc176c9095d73d627ca41b2584839b
Deleted: 511136ea3c5a64f264b78b5433614aec563103b4d4702f3ba7d4d2698e22c158

# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE


時間を作ってまた触っていこうと思います。


今日はこんなところで。

AWS Configを有効にしてみる

東京リージョンでAWS Configが使えるようになったこともあり、使ってみることにしました。
とりあえずやってみたメモ。


マネジメントコンソールからAWS Configの管理画面を表示。


f:id:think-t:20150412151920p:plain


S3バケットとSNS Topicの設定を行います。S3バケットはAWS Config用に新規作成します。


f:id:think-t:20150412151924p:plain


AWS Configが情報収集するためのIAM Roleを作成します。基本これだけでOK.


f:id:think-t:20150412151928p:plain


それでは検索をしてみます。今回はインスタンスの変更点を見てみます。


f:id:think-t:20150412151941p:plain


インスタンスタイプの変更が記録されていました。


f:id:think-t:20150412151949p:plain


最初に記録をとるよう設定しておくと、後で何かと使えそうです。


今日はこんなところで。

参考

.gitkeepファイルをすべてのディレクトリに作成する

Gitでコードを管理する場合、空ディレクトリが存在すると、管理対象になりません。


こんなときは、find コマンドの -exec オプションを使って、.gitkeepファイルを
全てのディレクトリにとりあえず作ってしまうのが楽です。


たとえば、Chefで新しいcookbookを作ったとき。

$ knife cookbook create mycookbook -o .                                                                                                                                                                                                            
WARNING: No knife configuration file found
** Creating cookbook mycookbook
** Creating README for cookbook: mycookbook
** Creating CHANGELOG for cookbook: mycookbook
** Creating metadata for cookbook: mycookbook

$ ls -laR mycookbook/
mycookbook/:
合計 52
drwxr-xr-x. 10 myuser myuser 4096  3月 15 15:28 2015 .
drwxr-xr-x.  3 myuser myuser 4096  3月 15 15:28 2015 ..
-rw-r--r--.  1 myuser myuser  467  3月 15 15:28 2015 CHANGELOG.md
-rw-r--r--.  1 myuser myuser 1480  3月 15 15:28 2015 README.md
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:28 2015 attributes
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:28 2015 definitions
drwxr-xr-x.  3 myuser myuser 4096  3月 15 15:28 2015 files
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:28 2015 libraries
-rw-r--r--.  1 myuser myuser  284  3月 15 15:28 2015 metadata.rb
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:28 2015 providers
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:28 2015 recipes
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:28 2015 resources
drwxr-xr-x.  3 myuser myuser 4096  3月 15 15:28 2015 templates

mycookbook/attributes:
合計 8
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:28 2015 .
drwxr-xr-x. 10 myuser myuser 4096  3月 15 15:28 2015 ..

mycookbook/definitions:
合計 8
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:28 2015 .
drwxr-xr-x. 10 myuser myuser 4096  3月 15 15:28 2015 ..

mycookbook/files:
合計 12
drwxr-xr-x.  3 myuser myuser 4096  3月 15 15:28 2015 .
drwxr-xr-x. 10 myuser myuser 4096  3月 15 15:28 2015 ..
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:28 2015 default

mycookbook/files/default:
合計 8
drwxr-xr-x. 2 myuser myuser 4096  3月 15 15:28 2015 .
drwxr-xr-x. 3 myuser myuser 4096  3月 15 15:28 2015 ..

mycookbook/libraries:
合計 8
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:28 2015 .
drwxr-xr-x. 10 myuser myuser 4096  3月 15 15:28 2015 ..

mycookbook/providers:
合計 8
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:28 2015 .
drwxr-xr-x. 10 myuser myuser 4096  3月 15 15:28 2015 ..

mycookbook/recipes:
合計 12
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:28 2015 .
drwxr-xr-x. 10 myuser myuser 4096  3月 15 15:28 2015 ..
-rw-r--r--.  1 myuser myuser  136  3月 15 15:28 2015 default.rb

mycookbook/resources:
合計 8
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:28 2015 .
drwxr-xr-x. 10 myuser myuser 4096  3月 15 15:28 2015 ..

mycookbook/templates:
合計 12
drwxr-xr-x.  3 myuser myuser 4096  3月 15 15:28 2015 .
drwxr-xr-x. 10 myuser myuser 4096  3月 15 15:28 2015 ..
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:28 2015 default

mycookbook/templates/default:
合計 8
drwxr-xr-x. 2 myuser myuser 4096  3月 15 15:28 2015 .
drwxr-xr-x. 3 myuser myuser 4096  3月 15 15:28 2015 ..


こんな感じでfindコマンドを使うと、楽です。

$ find mycookbook -type d -exec touch {}/.gitkeep \;

$ ls -laR mycookbook/
mycookbook/:
合計 52
drwxr-xr-x. 10 myuser myuser 4096  3月 15 15:35 2015 .
drwxr-xr-x.  3 myuser myuser 4096  3月 15 15:28 2015 ..
-rw-r--r--.  1 myuser myuser    0  3月 15 15:35 2015 .gitkeep
-rw-r--r--.  1 myuser myuser  467  3月 15 15:28 2015 CHANGELOG.md
-rw-r--r--.  1 myuser myuser 1480  3月 15 15:28 2015 README.md
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:35 2015 attributes
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:35 2015 definitions
drwxr-xr-x.  3 myuser myuser 4096  3月 15 15:35 2015 files
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:35 2015 libraries
-rw-r--r--.  1 myuser myuser  284  3月 15 15:28 2015 metadata.rb
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:35 2015 providers
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:35 2015 recipes
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:35 2015 resources
drwxr-xr-x.  3 myuser myuser 4096  3月 15 15:35 2015 templates

mycookbook/attributes:
合計 8
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:35 2015 .
drwxr-xr-x. 10 myuser myuser 4096  3月 15 15:35 2015 ..
-rw-r--r--.  1 myuser myuser    0  3月 15 15:35 2015 .gitkeep

mycookbook/definitions:
合計 8
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:35 2015 .
drwxr-xr-x. 10 myuser myuser 4096  3月 15 15:35 2015 ..
-rw-r--r--.  1 myuser myuser    0  3月 15 15:35 2015 .gitkeep

mycookbook/files:
合計 12
drwxr-xr-x.  3 myuser myuser 4096  3月 15 15:35 2015 .
drwxr-xr-x. 10 myuser myuser 4096  3月 15 15:35 2015 ..
-rw-r--r--.  1 myuser myuser    0  3月 15 15:35 2015 .gitkeep
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:35 2015 default

mycookbook/files/default:
合計 8
drwxr-xr-x. 2 myuser myuser 4096  3月 15 15:35 2015 .
drwxr-xr-x. 3 myuser myuser 4096  3月 15 15:35 2015 ..
-rw-r--r--. 1 myuser myuser    0  3月 15 15:35 2015 .gitkeep

mycookbook/libraries:
合計 8
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:35 2015 .
drwxr-xr-x. 10 myuser myuser 4096  3月 15 15:35 2015 ..
-rw-r--r--.  1 myuser myuser    0  3月 15 15:35 2015 .gitkeep

mycookbook/providers:
合計 8
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:35 2015 .
drwxr-xr-x. 10 myuser myuser 4096  3月 15 15:35 2015 ..
-rw-r--r--.  1 myuser myuser    0  3月 15 15:35 2015 .gitkeep

mycookbook/recipes:
合計 12
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:35 2015 .
drwxr-xr-x. 10 myuser myuser 4096  3月 15 15:35 2015 ..
-rw-r--r--.  1 myuser myuser    0  3月 15 15:35 2015 .gitkeep
-rw-r--r--.  1 myuser myuser  136  3月 15 15:28 2015 default.rb

mycookbook/resources:
合計 8
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:35 2015 .
drwxr-xr-x. 10 myuser myuser 4096  3月 15 15:35 2015 ..
-rw-r--r--.  1 myuser myuser    0  3月 15 15:35 2015 .gitkeep

mycookbook/templates:
合計 12
drwxr-xr-x.  3 myuser myuser 4096  3月 15 15:35 2015 .
drwxr-xr-x. 10 myuser myuser 4096  3月 15 15:35 2015 ..
-rw-r--r--.  1 myuser myuser    0  3月 15 15:35 2015 .gitkeep
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:35 2015 default

mycookbook/templates/default:
合計 8
drwxr-xr-x. 2 myuser myuser 4096  3月 15 15:35 2015 .
drwxr-xr-x. 3 myuser myuser 4096  3月 15 15:35 2015 ..
-rw-r--r--. 1 myuser myuser    0  3月 15 15:35 2015 .gitkeep

今日はこんなところで。