毎日書く

のを目標に頑張るか

2017年6月15日

起寝起寝起

起きて寝て起きて寝て起きた。

起きる前は寝てるわけで、正確には寝起寝起寝起なので、三度寝くらいか。

よく寝た。

朝ごパン

最寄り駅前のプロントで、140円くらいで売ってるやつ。

今日は2つ食べた。

ngx-mruby

github.com

後で読む。

EC2のインスタンスをRakeタスクとして列挙して何かやる

やっていく。

  • Aws::EC2::Clientインスタンスが問題なく生成できてアクセスができる
  • EC2のインスタンスStagesというタグを持っていて値がproductionのものを列挙する
  • EC2のインスタンスNameというタグを持っていて値はユニークである

以上の場合。

以下Rakefileのつもりで

require 'aws-sdk' #  ~> 2.9

# @see http://docs.aws.amazon.com/sdkforruby/api/Aws/EC2/Client.html#initialize-instance_method
client = Aws::EC2::Client.new

filters = { filters: [
  { name: 'tag:Stages', values: ['production'] }
]}

# @see http://docs.aws.amazon.com/sdkforruby/api/Aws/EC2/Client.html#describe_instances-instance_method
instances = client.describe_instances(filters)
target_instances = {}
instances.each_page do |page|
  page.reservations.each do |reservation|
    reservation.instances.each do |instance|
      name = nil
      instance.tags.each do |tag|
        if tag.key == 'Name'
          name = tag.value
        end
        next if name.nil?
        target_instances[name] = instance
      end
    end
  end
end

target_instances.each do |name, instance|
  desc "do something to #{name}"
  task name do
    # do something ...
  end
end

パブリックIPだったりパブリックDNSがあたっているのであればcapistrano/sshkitを使ってSSHログインして何かしたり、単純にインスタンスの情報をハッシュの値として連れ回してるからAPIも叩けるし、いろいろできる。

なにかする度に、API叩きにいってしまうのがイケてないし、ネストが深くなってしまうのもイケてない。