geek.conf.2

あるエンジニアの備忘録

TOEIC 第202回 (僕は初回)

試験日:2015/07/26
結果発表日:2015/08/17 正午
点数:L:335, R:240 T:575/990
勉強期間:20日(2015/07/06 - 2015/07/25)
利用した参考書:1. はじめての新TOEICテスト完全攻略バイブル
        2. TOEICテスト究極の模試600問
勉強方法:
 まず、1. のはじめての新TOEICを3週し、次に2. の究極の模試600問を2週しました。
 これだけ。
 究極の模試での1週目の成績はテスト1:500、テスト2:540、テスト3:490、2週目は
 もちろん100点以上上がりました。
感想:
 思ったより、スコアが良かった!ここまで来ると600行きたかたが、
 Reading、、もっと勉強すれば、600行けたかなぁ

sensu + graphiteでのメモ

・rabbitmqのWeb管理画面へログインするためには?
URL:http://hostname:15672
ユーザ名/パスワード:以下の手順で作成する

rabbitmqctl add_user admin password
rabbitmqctl set_permissions admin ".*" ".*" ".*"
rabbitmqctl set_user_tags admin administrator

※ユーザadminを作って、権限を付与して、ロールを設定

・graphiteへのメトリック情報をクリアする
sensuに登録済みmetricスクリプトを編集して収集するメトリックに変更を加えたい時、
whisperデータベースを削除しないとgraphiteに変更が反映されない。以下のように削除する。

rm -f /var/lib/carbon/whisper/

vagrant/chef-soloでいろいろprovisioningしたvmware fusionをbox化してAtlasにアップロード

※ローカルはmac OS X Yosemiteです。

1. Vagrant plugin for vmware fusionをインストール
# vagrant plugin install vagrant-vmware-fusion
# vagrant plugin license vagrant-vmware-fusion license.lic
※license.licはhashicorpから買う。確か$79だった。

2.centos6.4のvmware fusion用boxをadd
www.vagrantbox.es
から適当に。
# vagrant box add centos6-vmware_fusion https://dl.dropbox.com/u/5721940/vagrant-boxes/vagrant-centos-6.4-x86_64-vmware_fusion.box

3.vagrant up --provider=vmware_fusionする
このままprovisioningすると以下のエラーがでる。
default: Waiting for HGFS kernel module to load...
これを回避するためにprovisioningせずにただupして、sshして以下のコマンドを実行する。
echo "answer AUTO_KMODS_ENABLED yes" | sudo tee -a /etc/vmware-tools/locations

4.一旦box化
# cd .vagrant/machines/default/vmware_fusion/xxxxxxxx/
# /Applications/VMware\ Fusion.app/Contents/Library/vmware-vdiskmanager -d Virtual\ Disk.vmdk
※Defragment
# /Applications/VMware\ Fusion.app/Contents/Library/vmware-vdiskmanager -k Virtual\ Disk.vmdk
※Shrink
# rm -f vmware*.log
# tar cvzf centos-6.6-vmware_fusion-tmp.box ./*

5.box addする
# vagrant box remove centos6-vmware_fusion
# vagrant box add centos6-vmware_fusion centos-6.6-vmware_fusion-tmp.box

6.chef-soloでprovisioningしてserverspecでテスト
Vagrantfileでvagrant up --provider=vmware_fusion
※cookbookやらspecは適当に。
Vagrantfileについて
config.vm.box = "centos6-vmware_fusion"とする。
ミソはconfig.ssh.insert_key = falseを追加すること。
なんかv1.7.0以上だとinsecure keyっていうここのキーペアを利用している場合、replaceするらしい。DLしたvmware fusion用boxはここのキーペアを利用しているので、とりあえずreplaceしないようにconfig.ssh.insert_key = falseを追加する。

あとsudoレシピでvagrantユーザを追加しています。じゃないとserverspecをsudoでやると失敗します。

7.正式box化の準備
vagrant sshでprovisioningしたvagrant boxにログインして
box化のためのお掃除をする。
# vagrant ssh
$ sudo yum clean all
$ sudo rm -rf /tmp/*
$ sudo rm -f /var/log/wtmp /var/log/btmp
$ history -c
$ sudo shutdown -h now

8.正式box化
# cd .vagrant/machines/default/vmware_fusion/yyyyyyyy/
# /Applications/VMware\ Fusion.app/Contents/Library/vmware-vdiskmanager -d Virtual\ Disk.vmdk
※Defragment
# /Applications/VMware\ Fusion.app/Contents/Library/vmware-vdiskmanager -k Virtual\ Disk.vmdk
※Shrink
# rm -f vmware*.log
# tar cvzf centos-6.6-vmware_fusion-cust.box ./*

9.正式box add
# vagrant box remove centos6-vmware_fusion
# vagrant box add centos6-vmware_fusion centos-6.6-vmware_fusion-cust.box

10.vagrant up からのserverspecでprovisioning
# vagrant up --provider=vmware_fusion --provision-with serverspec
※エラーが出ないことを確認する

11.Atlasにアップロード
centos-6.6-vmware_fusion-cust.boxをAtlasにアップロードする。
tsubauaaa/centos6.6-tsuba

12.box add
vagrant box add tsubauaaa/centos6.6-tsuba --provider=vmware_fusion
※とかアップロード先のAtlasのbox名およびproviderを指定する。

コードはこちら:tsubauaaa/Vagrant/centos6_vmware_fusion

vagrant

GIMPで下絵をくっきりと!

mac os x そしてGIMP 2.8で。
下絵は線画のみ手書きとする。

0.下絵の写真をファイルに保存してGIMPで開く

1.線をはっきりさせる
色→レベル
※入力レベルの右端の白点値を左に移動させて全体を白く明るくする。

gimp1

※ちなみに入力レベルの左端の黒点の値を右に移動させると全体が暗くなる。

2.保存して終わり

PackerとCentOSのAMI

PackerでCentOSのAMIをProvisioningして、そのAMIからLaunchしてもrootでsshログインできなかった。
CentOSのAMIはrc.localのスクリプトで/root/.sshディレクトリがすでにあると、Launch時に指定する公開鍵を/root/.ssh.authorized_keysに作成してくれない。

PackerでCentOSのAMIを作成するとPackerが一時的に秘密鍵を作成してauthorized_keysに登録する。
そのためそのAMIをLaunchして利用する秘密鍵を指定してもPackerの一時的な秘密鍵のままとなってしまい、
ログイン出来なかったのが、一行目の原因であーる。

これを回避するためにPackerのProvisionersに以下のshellを登録するべし。


{
"type": "shell",
"inline": [
"sudo rm -f /root/.ssh/authorized_keys"
]
}

Packer作成後に/root/.ssh/authorized_keysを削除している。

Terraformメモ

TerraformでAWSについて、アクセスキーとシークレットキーの受け渡し方を考察

なんか、カレントにterraform.tfvarsファイルを置いておけば読んでくれるみたい。
# vi terraform.tfvars


access_key = "foo"
secret_key = "bar"

terraform.tfvarsじゃなくても実行時に-var-fileで指定すればOK
そしてtfにvariable登録。


variable "access_key" {}
variable "secret_key" {}

そしてtfに以下のように定義。


provider "aws" {
access_key = "${var.access_key}"
secret_key = "${var.secret_key}"
region = "${var.region}"
}

VPCを作成するとTargetがlocalのmainルートテーブルが作成されるが、これは通常AWS APIが自動で
作成するものなのでTerraformで作成する必要はないと考えます。
しかし、このmain ルートテーブルをPrivateサブネットに反映したいので、そのやり方を考えてみました。


# private-1a Association definition
resource "aws_route_table_association" "pri-1a-asso" {
subnet_id = "${aws_subnet.private-1a.id}"
route_table_id = "${aws_vpc.vpcname.main_route_table_id}"
}

ってだけなんですけどね。てかaws_vpcのAttributesでmain_route_table_idてのがあってこれがmainルートテーブルのidとして使えるってだけなんですけどね。
同じようにNACLとかdefault VPC security groupとかもある。

他Terraform Tips
・terraform destroyしたときの計画確認


# terraform plan -destroy

・Terraformを経由して作成したものをAWS管理コンソールで編集した場合は、Terraformで修正削除可能。
・Terraformを経由しないで作成されたものはTerraformでは編集も削除も出来ない。stateファイルterraform.tfstateにないからね。

Atlasとの連携
access_tokenをATLASから発行
・export ATLAS_TOKEN=******を.bash_profileにでも書いておく。


# terraform remote -name=Atlasユーザ名/Atlasリポジトリ
※追記:上記コマンドの書き方はv0.4.0以降エラーになるようになっちゃった。
※Atlasリポジトリ名はなんでも可
これでterratermするとAtlasでstateファイルが追跡可能となる。
ちなみにATLAS_TOKENをexportしていないと以下のエラーになるよ。
missing 'access_token' configuration or ATLAS_TOKEN environmental variable

とりあえずここらへんで。

AWS ソリューションアーキテクト アソシエイト

ういっす。なんか疲れた僕です。
AWSソリューションアーキテクトアソシエイトに合格したのでログを記します。

AWSソリューションアーキテクトアソシエイトとは簡単に言うとAWSのサービスを使ってシステムを設計できるよ、できるんじゃない?設計くらいは、とAWSに認定してもらう試験です。

AWSのサービスを使うだけじゃなくてその利点と謳う分散配置をうまく使って、スケーラビリティ、可用性、耐障害性が極めて高いシステム設計が問われます。

合格日:2015/02/01
点数:81%
勉強期間:15日(2015/01/17 - 2015/02/01)
勉強方法:
AWS実践入門受講
・Architecting on AWS受講
AWSドキュメントを読む。以下、読んだもの。
----------------------------------------------------------------------------------
EC2、VPCのユーザーガイド、S3の入門ガイド、開発者ガイド、
ELBの開発者ガイド、Auto Scalingの製品の詳細、
IAMの使用、RDSのユーザーガイド、CloudWatchの開発者ガイド、
SQSの開発者ガイド、SWFの製品の詳細、SNSの開発者ガイド、
AWS セキュリティとコンプライアンス
----------------------------------------------------------------------------------
一応、EC2(ELB)、VPC、S3、EBS、IAM、RDS、CloudWatch、SQS、SWFのよくある質問も読んだ。

AWSドキュメントが英語だったりあまり充実していないサービスについてはマイスターまたはBlack Belt Techを読む。
読んだ中で効果的だったマイスターは、、
----------------------------------------------------------------------------------
Amazon Simple Work Flow Service
:ムズい。
リザーブドインスタンス&スポットインスタンス
:スポットインスタンスなんて初めて知ったよ。
Amazon CloudWatch & Auto Scaling
:イマェさん。AutoScalingポリシーについて理解を深められたかな。
Reloaded -Amazon Glacier-
:Glacier = 氷河なんですって〜
Amazon CloudFront / Amazon Elastic Transcoderによるコンテンツ配信
:ClodFrontとS3との連携時におけるベスプラが重要。
AWS ElasticBeanstalk
:開発環境までサーセン、アマさんっ★
Amazon Route 53
:LBRの舞台裏にwonderfuuuuuuuuul!!
----------------------------------------------------------------------------------

読んだ中で効果的だったBlack Belt Techは、、
----------------------------------------------------------------------------------
Elastic Load Balancing (ELB)
DNSフェールオーバを利用したELB/S3によるソーリーページ機能はいいね!って思った。
AWS Identity and Access Management
:IAMと企業のディレクトリサービスとの連携はむ髄ね!
Amazon Elastic MapReduce
:まっぷりでゅーす??
----------------------------------------------------------------------------------

AWSドキュメントを真剣に読むと時間を浪費しちゃうのでマイスターシリーズやBlack Belt Techを読んで、AWSサービスを"このように"使うとオンプレミスでの課題が解決できるどころか、比較にならない可用性と耐障害性が得られますっていう意図を読んで"このように"の部分を考察すべし!!

なんか疲れたので今後はアニメでも見ます。see you.