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環境を作ります。
S3バケットとSNSの設定を行います。
CloudTrailを有効にしました。
次にSQSの設定を行います。Queueの設定を行います。
デフォルトの設定でQueueを設定します。
SNS Topicとの関連付けを行います。
SNS Topicの設定を行います。
設定を有効にしました。
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の画面が表示されました。
ログがグラフィカルに表示され、とても素敵な感じです。
いろいろ工夫してみようと思います。
今日はこんなところで。
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を有効にしてみる
.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
今日はこんなところで。