深淵なる理由によりSecurityGroupの修正業務が発生したので、awspecを利用して堅実に実施してみます。
1. 修正前のSecurityGroupの状態をawspecでspecファイル化
まずawspecの環境を作ります。awspecで利用するIAMのポリシーは必ずリードオンリー権限のみにしてください。
$ mkdir awspec
$ cd awspec/
$ awspec init
+ spec/
+ spec/spec_helper.rb
+ Rakefile
+ spec/.gitignore
+ .rspec
$ cat <<EOF > spec/secrets.yml
region: ap-northeast-1
aws_access_key_id: XXXXXXXXXXXXXXXXXXXX
aws_secret_access_key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
EOF
SecurityGroupの状態をawspec generate security_group
コマンドを使ってspecファイル化します。
$ echo "require 'spec_helper'" > spec/security_group_current_spec.rb
$ awspec generate security_group my-vpc >> spec/security_group_current_spec.rb
これで現状のSecurityGroupのspecファイルが生成されました。
実際にrake spec
を実行してみます。
$ rake spec
...
Finished in 8.77 seconds (files took 2.66 seconds to load)
217 examples, 0 failures
グリーンになることを確認しました。
2. 今回修正するIPアドレスをspecに追記
今回は 203.0.113.1からのHTTPアクセスを許可します。
describe security_group('sg-12a345b6') do
it { should exist }
its(:group_id) { should eq 'sg-12a345b6' }
its(:group_name) { should eq 'my-security-group-name' }
...
its(:inbound) { should be_opened(80).protocol('tcp').for('203.0.113.1/32') } # 深淵なる理由により80ポートを開放
end
コメントが書けるのが意外に便利だったりします。
rake spec
を実行してレッドになることを確認します。
3. マネジメントコンソールなどでSecurityGroupの修正を実施
手動。。。
4. チェック
修正後、rake spec
を実行してグリーンになることを確認します。
終わり!