施策を考えるときは、情報を網羅的に調べ上げて何をするか決めるのではなくて、今手元にある情報から自分が最も確からしいと感じる仮説を立ててから、その検証をするのだということを言っていたのが良かった。
仮説をどう立てるかについても書いてあったけど、それについては下の本の方が分かりやすかったかなと思う。
どうせまた時期だろうなと思って、自分のブログを検索したら異常にに正確なリズムで、逆に面白くなってしまった。
http://blog.shibayu36.org/search?q=憂鬱
なんか唐突に自信なくなってきたけど、五月だからだろうなー
— 柴崎優季 (@shiba_yu36) 2018年4月27日
自分のブログを「憂鬱」で検索したところ、2013年は4/22、2016年は4/25、2017年は4/24と、異常な正確なリズムを取っていて面白い。客観的に時期がそうだって気付いてると、なんかそんなにしんどくなくて良い
— 柴崎優季 (@shiba_yu36) 2018年4月27日
一方で、今年は家に帰るたびに子供に癒されていて、いつもより全然しんどくなくてすごい。
「Amazon Web Services 基礎からのネットワーク&サーバー構築 改訂版」でAWSサーバ構築とCloudFormationに入門した - $shibayu36->blog;で、サーバ構築を1ファイルで行い、CloudFormationの1スタックでネットワーク設定もWebサーバ設定もDBサーバ設定も書いていた。しかし考えてみると
と思った。
調べてみるとクロススタック参照というのを利用すると、スタックを分けて設定できるようだった。そこで、これを利用し、ネットワーク設定とWebサーバ設定を分けるようにしてみた。
参考になったのは AWS CloudFormation の更新 – YAML、クロススタック参照、簡略化された置換 | Amazon Web Services ブログ の記事。これによると、参照される側はOutputsを利用して設定をエクスポートし、参照する側はImportValueを利用して設定を読み込めば良いようだ。よって次の作戦で良い。
!ImportValue
を利用して、設定を読み込むやってみた結果がこちら。
大体元々の全部入りの設定と同じ。違うところとしては二つ。一つ目はネットワーク側の以下の部分で、aws-network-basis:PublicSubnetやaws-network-basis:SecurityGroupForWebServerという名前で別スタックから参照できるようにしているところ。
Outputs: PublicSubnet: Value: !Ref PublicSubnet Export: Name: aws-network-basis:PublicSubnet SecurityGroupForWebServer: Value: !Ref SecurityGroupForWebServer Export: Name: aws-network-basis:SecurityGroupForWebServer
二つ目はWebサーバ側でImportValueを使って読み込んでいるところ。
NetworkInterfaces: - AssociatePublicIpAddress: true DeviceIndex: 0 DeleteOnTermination: true PrivateIpAddress: 10.0.1.10 SubnetId: !ImportValue aws-network-basis:PublicSubnet GroupSet: - !ImportValue aws-network-basis:SecurityGroupForWebServer
これで設定ファイルの作成は完了。
コンソールのスタック作成から行う。ネットワークのスタック作成 -> Webサーバのスタック作成の順で。
画像のとおり、二つのスタックが出来て、aws-network-basis-networkの出力タブにはエクスポートされた値が載っている。これでネットワーク設定とWebサーバ設定を分割できた。
あとはWebサーバ側に設定を増やしたり、Parametersのような仕組みを使って、PrivateIpAddressだけ変えられるようにしておけば、ぽこぽこWebサーバを作成することができそうですね。
今回はCloudFormationのクロススタック参照を利用してネットワーク設定とWebサーバ設定を分けるようにしてみた。スタック設定を分割しておくと、あまり変えたくないネットワーク設定側をいじらずに、Webサーバをぽこぽこ作れるようになったので良さそう。