etude_for_aws 0.7.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +103 -0
  3. data/.rspec +2 -0
  4. data/.ruby-version +1 -0
  5. data/.yardopts +10 -0
  6. data/Dockerfile +17 -0
  7. data/Dockerfile-dev +20 -0
  8. data/Gemfile +6 -0
  9. data/Gemfile.lock +89 -0
  10. data/Guardfile +22 -0
  11. data/Jenkinsfile +11 -0
  12. data/README.md +26 -0
  13. data/Rakefile +12 -0
  14. data/Vagrantfile +15 -0
  15. data/bin/aws_console.rb +10 -0
  16. data/bin/console +14 -0
  17. data/bin/setup +8 -0
  18. data/circle.yml +22 -0
  19. data/config.yml +124 -0
  20. data/docker-compose.yml +9 -0
  21. data/docs/README.md +54 -0
  22. data/docs/_config.yml +6 -0
  23. data/docs/dev/cfm/cfm.md +9 -0
  24. data/docs/dev/cfm/images/vpc_core_model.png +0 -0
  25. data/docs/dev/cfm/images/vpc_type1.png +0 -0
  26. data/docs/dev/cfm/images/vpc_type2.png +0 -0
  27. data/docs/dev/cfm/images/vpc_type3.png +0 -0
  28. data/docs/dev/cfm/images/vpc_type4.png +0 -0
  29. data/docs/dev/cfm/images/vpc_type5.png +0 -0
  30. data/docs/dev/cfm/images/vpc_type6.png +0 -0
  31. data/docs/dev/cfm/images/vpc_type7.png +0 -0
  32. data/docs/dev/cfm/vpc/core_model.puml +35 -0
  33. data/docs/dev/cfm/vpc/vpc.md +39 -0
  34. data/docs/dev/cfm/vpc/vpc_type1.puml +17 -0
  35. data/docs/dev/cfm/vpc/vpc_type2.puml +23 -0
  36. data/docs/dev/cfm/vpc/vpc_type3.puml +24 -0
  37. data/docs/dev/cfm/vpc/vpc_type4.puml +23 -0
  38. data/docs/dev/cfm/vpc/vpc_type5.puml +25 -0
  39. data/docs/dev/cfm/vpc/vpc_type6.puml +26 -0
  40. data/docs/dev/cfm/vpc/vpc_type7.puml +39 -0
  41. data/docs/dev/ec2/core_model.puml +43 -0
  42. data/docs/dev/ec2/ec2.md +36 -0
  43. data/docs/dev/ec2/ec2_type1.puml +27 -0
  44. data/docs/dev/ec2/ec2_type2.puml +43 -0
  45. data/docs/dev/ec2/ec2_type3.puml +44 -0
  46. data/docs/dev/ec2/ec2_type4.puml +43 -0
  47. data/docs/dev/ec2/ec2_type5.puml +45 -0
  48. data/docs/dev/ec2/ec2_type6.puml +46 -0
  49. data/docs/dev/ec2/ec2_type7.puml +79 -0
  50. data/docs/dev/ec2/images/.keep +0 -0
  51. data/docs/dev/ec2/images/ec2_core_model.png +0 -0
  52. data/docs/dev/ec2/images/ec2_type1.png +0 -0
  53. data/docs/dev/ec2/images/ec2_type2.png +0 -0
  54. data/docs/dev/ec2/images/ec2_type3.png +0 -0
  55. data/docs/dev/ec2/images/ec2_type4.png +0 -0
  56. data/docs/dev/ec2/images/ec2_type5.png +0 -0
  57. data/docs/dev/ec2/images/ec2_type6.png +0 -0
  58. data/docs/dev/ec2/images/ec2_type7.png +0 -0
  59. data/docs/dev/vpc/core_model.puml +49 -0
  60. data/docs/dev/vpc/images/core_model.png +0 -0
  61. data/docs/dev/vpc/images/simple.png +0 -0
  62. data/docs/dev/vpc/images/standard.png +0 -0
  63. data/docs/dev/vpc/simple.puml +17 -0
  64. data/docs/dev/vpc/standard.puml +24 -0
  65. data/docs/dev/vpc/vpc.md +19 -0
  66. data/docs/ops/build_aws_sdk_repl.md +19 -0
  67. data/docs/ops/images/.keep +0 -0
  68. data/docs/ops/run_rake_task.md +89 -0
  69. data/docs/ops/ship_circleci.md +9 -0
  70. data/docs/ops/ship_jenkins.md +20 -0
  71. data/docs/ops/ship_ruby_gem.md +26 -0
  72. data/docs/template_catalog.md +6 -0
  73. data/docs/template_pattern.md +13 -0
  74. data/docs/template_recipe.md +6 -0
  75. data/docs/template_spec.md +8 -0
  76. data/etude_for_aws.gemspec +41 -0
  77. data/etude_for_aws.iml +42 -0
  78. data/exe/etude_for_aws +3 -0
  79. data/lib/etude_for_aws.rb +38 -0
  80. data/lib/etude_for_aws/cfm/configuration.rb +39 -0
  81. data/lib/etude_for_aws/cfm/vpc/cfm_templates/vpc-1az-1subnet-pub.template +529 -0
  82. data/lib/etude_for_aws/cfm/vpc/cfm_templates/vpc-1az-2subnet-pub-pri.template +790 -0
  83. data/lib/etude_for_aws/cfm/vpc/cfm_templates/vpc-1az-2subnet-pub.template +634 -0
  84. data/lib/etude_for_aws/cfm/vpc/cfm_templates/vpc-2az-2subnet-pri.template +645 -0
  85. data/lib/etude_for_aws/cfm/vpc/cfm_templates/vpc-2az-2subnet-pub-pri.template +611 -0
  86. data/lib/etude_for_aws/cfm/vpc/cfm_templates/vpc-2az-2subnet-pub.template +646 -0
  87. data/lib/etude_for_aws/cfm/vpc/cfm_templates/vpc-2az-4subnet-pub-pri.template +1010 -0
  88. data/lib/etude_for_aws/cfm/vpc/null_vpc.rb +13 -0
  89. data/lib/etude_for_aws/cfm/vpc/one_az_one_public_subnet_vpc.rb +45 -0
  90. data/lib/etude_for_aws/cfm/vpc/one_az_two_public_and_private_subnet_vpc.rb +47 -0
  91. data/lib/etude_for_aws/cfm/vpc/one_az_two_public_subnet_vpc.rb +47 -0
  92. data/lib/etude_for_aws/cfm/vpc/two_az_one_public_subnet_and_private_subnet_vpc.rb +52 -0
  93. data/lib/etude_for_aws/cfm/vpc/two_az_two_private_subnet_vpc.rb +38 -0
  94. data/lib/etude_for_aws/cfm/vpc/two_az_two_public_subnet_and_private_subnet_vpc.rb +38 -0
  95. data/lib/etude_for_aws/cfm/vpc/two_az_two_public_subnet_vpc.rb +38 -0
  96. data/lib/etude_for_aws/cfm/vpc/vpc.rb +104 -0
  97. data/lib/etude_for_aws/ec2/configuration.rb +66 -0
  98. data/lib/etude_for_aws/ec2/ec2.rb +218 -0
  99. data/lib/etude_for_aws/ec2/ec2_api_gateway.rb +127 -0
  100. data/lib/etude_for_aws/ec2/ec2_instance.rb +107 -0
  101. data/lib/etude_for_aws/ec2/key_pair.rb +46 -0
  102. data/lib/etude_for_aws/ec2/security_group.rb +75 -0
  103. data/lib/etude_for_aws/ec2/vpc_interface.rb +11 -0
  104. data/lib/etude_for_aws/helpers/certification_helper.rb +16 -0
  105. data/lib/etude_for_aws/helpers/configuration_helper.rb +103 -0
  106. data/lib/etude_for_aws/tasks/cfm.rake +73 -0
  107. data/lib/etude_for_aws/tasks/ec2.rake +210 -0
  108. data/lib/etude_for_aws/tasks/vpc.rake +47 -0
  109. data/lib/etude_for_aws/version.rb +3 -0
  110. data/lib/etude_for_aws/vpc/configuration.rb +77 -0
  111. data/lib/etude_for_aws/vpc/customer_gateway.rb +28 -0
  112. data/lib/etude_for_aws/vpc/internet_gateway.rb +15 -0
  113. data/lib/etude_for_aws/vpc/route_table.rb +42 -0
  114. data/lib/etude_for_aws/vpc/simple_vpc.rb +57 -0
  115. data/lib/etude_for_aws/vpc/standard_vpc.rb +94 -0
  116. data/lib/etude_for_aws/vpc/subnet.rb +22 -0
  117. data/lib/etude_for_aws/vpc/vpc.rb +147 -0
  118. data/lib/etude_for_aws/vpc/vpc_api_gateway.rb +277 -0
  119. data/lib/etude_for_aws/vpc/vpc_director.rb +43 -0
  120. data/lib/etude_for_aws/vpc/vpn.rb +244 -0
  121. data/lib/etude_for_aws/vpc/vpn_connection.rb +28 -0
  122. data/lib/etude_for_aws/vpc/vpn_director.rb +47 -0
  123. data/lib/etude_for_aws/vpc/vpn_gateway.rb +36 -0
  124. metadata +280 -0
@@ -0,0 +1,46 @@
1
+ module EC2
2
+ class KeyPair
3
+ attr_reader :key_pair_name,:pem_file
4
+
5
+ def initialize(ec2)
6
+ @config = ec2.config
7
+ @gateway = ec2.gateway
8
+ @key_pair_name = @config.key_pair_name
9
+ path = Dir.pwd + @config.key_pair_path
10
+ @pem_file = path + "#{@key_pair_name}.pem"
11
+ end
12
+
13
+ def create
14
+ key_pairs_result = @gateway.select_key_pairs
15
+ key_pairs = []
16
+ if key_pairs_result.key_pairs.count > 0
17
+ key_pairs_result.key_pairs.each do |key_pair|
18
+ key_pairs << key_pair.key_name
19
+ end
20
+ end
21
+
22
+ unless key_pairs.include?(@key_pair_name)
23
+ begin
24
+ key_pair = @gateway.create_key_pairs(@key_pair_name)
25
+ puts "Created key pair '#{key_pair.key_name}'."
26
+ puts "\nSHA-1 digest of the DER encoded private key:"
27
+ puts "#{key_pair.key_fingerprint}"
28
+ puts "\nUnencrypted PEM encoded RSA private key:"
29
+ puts "#{key_pair.key_material}"
30
+ rescue Aws::EC2::Errors::InvalidKeyPairDuplicate
31
+ puts "A key pair named '#{@key_pair_name}' already exists."
32
+ end
33
+
34
+
35
+ File.open(@pem_file, "w") do |file|
36
+ file.puts(key_pair.key_material)
37
+ end
38
+ end
39
+ end
40
+
41
+ def delete
42
+ @gateway.delete_key_pairs(@key_pair_name)
43
+ FileUtils.rm(@pem_file)
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,75 @@
1
+ module EC2
2
+ class SecurityGroup
3
+ attr_accessor :security_group_id
4
+
5
+ def initialize(ec2)
6
+ @config = ec2.config
7
+ @gateway = ec2.gateway
8
+ group_name = @config.security_group_name
9
+ description = @config.security_group_description
10
+ vpc_id = @config.vpc_id
11
+ @security_group = {
12
+ group_name: group_name,
13
+ description: description,
14
+ vpc_id: vpc_id,
15
+ }
16
+ @authorize_egress = {
17
+ ip_permissions: [
18
+ {
19
+ ip_protocol: "tcp",
20
+ from_port: 22,
21
+ to_port: 22,
22
+ ip_ranges: [
23
+ {
24
+ cidr_ip: "0.0.0.0/0",
25
+ },
26
+ ],
27
+ },
28
+ ],
29
+ }
30
+ @authorize_ingress = {
31
+ ip_permissions: [
32
+ {
33
+ ip_protocol: "tcp",
34
+ from_port: 22,
35
+ to_port: 22,
36
+ ip_ranges: [
37
+ {
38
+ cidr_ip: "0.0.0.0/0",
39
+ },
40
+ ],
41
+ },
42
+ {
43
+ ip_protocol: "icmp",
44
+ from_port: -1,
45
+ to_port: -1,
46
+ ip_ranges: [
47
+ {
48
+ cidr_ip: "0.0.0.0/0",
49
+ },
50
+ ],
51
+ },
52
+ ],
53
+ }
54
+ @security_group_id = get_group_id
55
+ end
56
+
57
+ def create
58
+ if @security_group_id.nil?
59
+ id = @gateway.create_security_group(@security_group)
60
+ @gateway.authorize_egress(id,@authorize_egress)
61
+ @gateway.authorize_ingress(id,@authorize_ingress)
62
+ @security_group_id = id
63
+ end
64
+ end
65
+
66
+ def delete
67
+ @gateway.delete_security_group(@security_group_id) unless @security_group_id.nil?
68
+ end
69
+
70
+ private
71
+ def get_group_id
72
+ @gateway.get_group_id(@security_group)
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,11 @@
1
+ module EC2
2
+ module VpcInterface
3
+ def get_vpc_id
4
+
5
+ end
6
+
7
+ def get_subnet_infos
8
+
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,16 @@
1
+ require 'aws-sdk'
2
+ require 'dotenv'
3
+
4
+ module CertificationHelper
5
+ def aws_certificate
6
+ Dotenv.load
7
+ yaml_region = ConfigurationHelper.get_yaml_region
8
+ region = ENV['AWS_REGION']
9
+ region = yaml_region if region.nil?
10
+ Aws.config.update(
11
+ access_key_id: ENV['AWS_ACCESS_KEY_ID'],
12
+ secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'],
13
+ region: region
14
+ )
15
+ end
16
+ end
@@ -0,0 +1,103 @@
1
+ require 'yaml'
2
+
3
+ module ConfigurationHelper
4
+ YAML_FILE = 'config.yml'
5
+
6
+ def self.load_yaml_file
7
+ YAML.load_file(YAML_FILE)
8
+ end
9
+
10
+ def self.get_yaml_region
11
+ ConfigurationHelper.load_yaml_file['DEV']['REGION']
12
+ end
13
+
14
+ def get_yaml_stack_name
15
+ ConfigurationHelper.load_yaml_file['DEV']['CFM']['VPC']['STACK_NAME']
16
+ end
17
+
18
+ def get_yaml_stack_tag_value
19
+ ConfigurationHelper.load_yaml_file['DEV']['CFM']['VPC']['TAG_VALUE']
20
+ end
21
+
22
+ def get_yaml_template_path
23
+ ConfigurationHelper.load_yaml_file['DEV']['CFM']['VPC']['TEMPLATE_PATH']
24
+ end
25
+
26
+ def get_yaml_zas
27
+ azs = []
28
+ azs << ConfigurationHelper.load_yaml_file['DEV']['CFM']['VPC']['TEMPLATE_PARAMS_AZ1']
29
+ azs << ConfigurationHelper.load_yaml_file['DEV']['CFM']['VPC']['TEMPLATE_PARAMS_AZ2']
30
+ azs << ConfigurationHelper.load_yaml_file['DEV']['CFM']['VPC']['TEMPLATE_PARAMS_AZ3']
31
+ azs
32
+ end
33
+
34
+ def get_yaml_template_file(type)
35
+ case type
36
+ when :ONE_AZ_ONE_PUB
37
+ return ConfigurationHelper.load_yaml_file['DEV']['CFM']['VPC']['TEMPLATE_FILE_TYPE_01']
38
+ when :ONE_AZ_TWO_PUB
39
+ return ConfigurationHelper.load_yaml_file['DEV']['CFM']['VPC']['TEMPLATE_FILE_TYPE_02']
40
+ when :ONE_AZ_ONE_PUB_PRI
41
+ return ConfigurationHelper.load_yaml_file['DEV']['CFM']['VPC']['TEMPLATE_FILE_TYPE_03']
42
+ when :TWO_AZ_TWO_PRI
43
+ return ConfigurationHelper.load_yaml_file['DEV']['CFM']['VPC']['TEMPLATE_FILE_TYPE_04']
44
+ when :TWO_AZ_TWO_PUB
45
+ return ConfigurationHelper.load_yaml_file['DEV']['CFM']['VPC']['TEMPLATE_FILE_TYPE_05']
46
+ when :TWO_AZ_ONE_PUB_RPI
47
+ return ConfigurationHelper.load_yaml_file['DEV']['CFM']['VPC']['TEMPLATE_FILE_TYPE_06']
48
+ when :TWO_AZ_TWO_PUB_PRI
49
+ return ConfigurationHelper.load_yaml_file['DEV']['CFM']['VPC']['TEMPLATE_FILE_TYPE_07']
50
+ else
51
+ return raise
52
+ end
53
+ end
54
+
55
+ def get_yaml_vpc_tags
56
+ ConfigurationHelper.load_yaml_file['DEV']['VPC']['VPC_TAGS']
57
+ end
58
+
59
+ def get_yaml_vpc_subnets
60
+ ConfigurationHelper.load_yaml_file['DEV']['VPC']['SUBNETS']
61
+ end
62
+
63
+ def get_yaml_vpc_route_tables
64
+ ConfigurationHelper.load_yaml_file['DEV']['VPC']['ROUTE_TABLES']
65
+ end
66
+
67
+ def get_yaml_internet_gateway
68
+ ConfigurationHelper.load_yaml_file['DEV']['VPC']['INTERNET_GATEWAY']
69
+ end
70
+
71
+
72
+ def get_yaml_vpc_cidr_block
73
+ ConfigurationHelper.load_yaml_file['DEV']['VPC']['VPC_CIDR_BLOCK']
74
+ end
75
+
76
+ def get_yaml_subnet_cidr_block
77
+ ConfigurationHelper.load_yaml_file['DEV']['VPC']['SUBNET_CIDR_BLOCK']
78
+ end
79
+
80
+ def get_yaml_subnet_cidr_block_public
81
+ ConfigurationHelper.load_yaml_file['DEV']['VPC']['SUBNET_CIDR_BLOCK_PUBLIC']
82
+ end
83
+
84
+ def get_yaml_subnet_cidr_block_private
85
+ ConfigurationHelper.load_yaml_file['DEV']['VPC']['SUBNET_CIDR_BLOCK_PRIVATE']
86
+ end
87
+
88
+ def get_yaml_destination_cidr_block
89
+ ConfigurationHelper.load_yaml_file['DEV']['VPC']['DESTINATION_CIDR_BLOCK']
90
+ end
91
+
92
+ def get_yaml_ec2_config
93
+ ConfigurationHelper.load_yaml_file['DEV']['EC2']
94
+ end
95
+
96
+ def get_yaml_ec2_instances
97
+ ConfigurationHelper.load_yaml_file['DEV']['EC2']['INSTANCES']
98
+ end
99
+
100
+ def get_yaml_vpn_info
101
+ ConfigurationHelper.load_yaml_file['DEV']['VPC']['VPN']
102
+ end
103
+ end
@@ -0,0 +1,73 @@
1
+ require 'etude_for_aws'
2
+
3
+ namespace :CFM do
4
+ desc '1つのアベイラビリティゾーンに1つのパブリックサブネットVPCを作成する'
5
+ task :create_type01_vpc do
6
+ CFM::OneAzOnePublicSubnetVpc.new.create
7
+ end
8
+
9
+ desc '1つのアベイラビリティゾーンに1つのパブリックサブネットVPCを削除する'
10
+ task :destroy_type01_vpc do
11
+ CFM::OneAzOnePublicSubnetVpc.new.destroy
12
+ end
13
+
14
+ desc '1つのアベイラビリティゾーンに2つのパブリックサブネットVPCを作成する'
15
+ task :create_type02_vpc do
16
+ CFM::OneAzTwoPublicSubnetVpc.new.create
17
+ end
18
+
19
+ desc '1つのアベイラビリティゾーンに2つのパブリックサブネットVPCを削除する'
20
+ task :destroy_type02_vpc do
21
+ CFM::OneAzTwoPublicSubnetVpc.new.destroy
22
+ end
23
+
24
+ desc '1つのアベイラビリティゾーンに1つのパブリックサブネットと1つのプライベートサブネットVPCを作成する'
25
+ task :create_type03_vpc do
26
+ CFM::OneAzTwoPublicAndPrivateSubnetVpc.new.create
27
+ end
28
+
29
+ desc '1つのアベイラビリティゾーンに1つのパブリックサブネットと1つのプライベートサブネットを削除する'
30
+ task :destroy_type03_vpc do
31
+ CFM::OneAzTwoPublicAndPrivateSubnetVpc.new.destroy
32
+ end
33
+
34
+ desc '2つのアベイラビリティゾーンに2つのプライベートサブネットVPCを作成する'
35
+ task :create_type04_vpc do
36
+ CFM::TwoAzTwoPrivateSubnetVpc.new.create
37
+ end
38
+
39
+ desc '2つのアベイラビリティゾーンに2つのプライベートサブネットを削除する'
40
+ task :destroy_type04_vpc do
41
+ CFM::TwoAzTwoPrivateSubnetVpc.new.destroy
42
+ end
43
+
44
+ desc '2つのアベイラビリティゾーンに2つのパブリックサブネットVPCを作成する'
45
+ task :create_type05_vpc do
46
+ CFM::TwoAzTwoPublicSubnetVpc.new.create
47
+ end
48
+
49
+ desc '2つのアベイラビリティゾーンに2つのパブリックサブネットVPCを削除する'
50
+ task :destroy_type05_vpc do
51
+ CFM::TwoAzTwoPublicSubnetVpc.new.destroy
52
+ end
53
+
54
+ desc '2つのアベイラビリティゾーンに1つのパブリックサブネットと1つのプライベートサブネットVPCを作成する'
55
+ task :create_type06_vpc do
56
+ CFM::TwoAzOnePublicSubnetAndPrivateSubnetVpc.new.create
57
+ end
58
+
59
+ desc '2つのアベイラビリティゾーンに1つのパブリックサブネットと1つのプライベートサブネットVPCを削除する'
60
+ task :destroy_type06_vpc do
61
+ CFM::TwoAzOnePublicSubnetAndPrivateSubnetVpc.new.destroy
62
+ end
63
+
64
+ desc '2つのアベイラビリティゾーンに2つのパブリックサブネットと2つのプライベートサブネットVPCを作成する'
65
+ task :create_type07_vpc do
66
+ CFM::TwoAzTwoPublicSubnetAndPrivateSubnetVpc.new.create
67
+ end
68
+
69
+ desc '2つのアベイラビリティゾーンに2つのパブリックサブネットと2つのプライベートサブネットVPCを削除する'
70
+ task :destroy_type07_vpc do
71
+ CFM::TwoAzTwoPublicSubnetAndPrivateSubnetVpc.new.destroy
72
+ end
73
+ end
@@ -0,0 +1,210 @@
1
+ require 'etude_for_aws'
2
+
3
+ namespace :EC2 do
4
+ task :default => :create_type01_env
5
+
6
+ desc 'シンプルなVPC環境にEC2インスタンスを作成する'
7
+ task :create_simple_vpc_env do
8
+ vpc_director = VPC::VpcDirector.new(VPC::SimpleVpc.new)
9
+ vpc_director.create
10
+ vpc = vpc_director.builder
11
+ EC2::Ec2.new(vpc).create
12
+ end
13
+
14
+ desc 'シンプルなVPC環境のEC2インスタンスを削除する'
15
+ task :destroy_simple_vpc_env do
16
+ vpc_director = VPC::VpcDirector.new(VPC::SimpleVpc.new)
17
+ vpc = vpc_director.builder
18
+ EC2::Ec2.new(vpc).destroy
19
+ vpc_director.destroy
20
+ end
21
+
22
+ desc 'シンプルなVPC環境にEC2インスタンス起動する'
23
+ task :start_simple_vpc_env do
24
+ vpc_director = VPC::VpcDirector.new(VPC::SimpleVpc.new)
25
+ vpc = vpc_director.builder
26
+ EC2::Ec2.new(vpc).start
27
+ end
28
+
29
+ desc 'シンプルなVPC環境にEC2インスタンス再起動する'
30
+ task :reboot_simple_vpc_env do
31
+ vpc_director = VPC::VpcDirector.new(VPC::SimpleVpc.new)
32
+ vpc = vpc_director.builder
33
+ EC2::Ec2.new(vpc).reboot
34
+ end
35
+
36
+ desc 'シンプルなVPC環境にEC2インスタンス停止する'
37
+ task :stop_simple_vpc_env do
38
+ vpc_director = VPC::VpcDirector.new(VPC::SimpleVpc.new)
39
+ vpc = vpc_director.builder
40
+ EC2::Ec2.new(vpc).stop
41
+ end
42
+
43
+ desc '標準的なVPC環境にEC2インスタンスを作成する'
44
+ task :create_standard_vpc_env do
45
+ vpc_director = VPC::VpcDirector.new(VPC::StandardVpc.new)
46
+ vpc_director.create
47
+ vpc = vpc_director.builder
48
+ EC2::Ec2.new(vpc).create
49
+ end
50
+
51
+ desc '標準的なVPC環境のEC2インスタンスを削除する'
52
+ task :destroy_standard_vpc_env do
53
+ vpc_director = VPC::VpcDirector.new(VPC::StandardVpc.new)
54
+ vpc = vpc_director.builder
55
+ EC2::Ec2.new(vpc).destroy
56
+ vpc_director.destroy
57
+ end
58
+
59
+ desc '標準的なVPC環境にEC2インスタンスを起動する'
60
+ task :start_standard_vpc_env do
61
+ vpc_director = VPC::VpcDirector.new(VPC::StandardVpc.new)
62
+ vpc = vpc_director.builder
63
+ EC2::Ec2.new(vpc).start
64
+ end
65
+
66
+ desc '標準的なVPC環境にEC2インスタンスを再起動する'
67
+ task :reboot_standard_vpc_env do
68
+ vpc_director = VPC::VpcDirector.new(VPC::StandardVpc.new)
69
+ vpc = vpc_director.builder
70
+ EC2::Ec2.new(vpc).reboot
71
+ end
72
+
73
+ desc '標準的なVPC環境にEC2インスタンスを停止する'
74
+ task :stop_standard_vpc_env do
75
+ vpc_director = VPC::VpcDirector.new(VPC::StandardVpc.new)
76
+ vpc = vpc_director.builder
77
+ EC2::Ec2.new(vpc).stop
78
+ end
79
+
80
+ desc '1つのアベイラビリティゾーンに1つのパブリックサブネットのVPC環境を作成する'
81
+ task :setup_type01_env => [:create_type01,:copy_key_pair] do
82
+ puts '1つのアベイラビリティゾーンに1つのパブリックサブネットのVPC環境を作成しました。'
83
+ end
84
+
85
+ desc '1つのアベイラビリティゾーンに1つのパブリックサブネットのVPC環境にEC2インスタンスを作成する'
86
+ task :create_type01 do
87
+ vpc = VPC::OneAzOnePublicSubnetVpc.new
88
+ vpc.create
89
+ EC2::Ec2.new(vpc).create
90
+ end
91
+
92
+ desc '1つのアベイラビリティゾーンに1つのパブリックサブネットのVPC環境のEC2インスタンスを削除する'
93
+ task :destroy_type01_env do
94
+ vpc = VPC::OneAzOnePublicSubnetVpc.new
95
+ EC2::Ec2.new(vpc).destroy
96
+ vpc.destroy
97
+ end
98
+
99
+ desc '1つのアベイラビリティゾーンに1つのパブリックサブネットのVPC環境にEC2インスタンスを停止する'
100
+ task :stop_type01 do
101
+ vpc = VPC::OneAzOnePublicSubnetVpc.new
102
+ EC2::Ec2.new(vpc).stop
103
+ end
104
+
105
+ desc '1つのアベイラビリティゾーンに1つのパブリックサブネットのVPC環境にEC2インスタンスを起動する'
106
+ task :start_type01 do
107
+ vpc = VPC::OneAzOnePublicSubnetVpc.new
108
+ EC2::Ec2.new(vpc).start
109
+ end
110
+
111
+ desc '1つのアベイラビリティゾーンに1つのパブリックサブネットのVPC環境にEC2インスタンスを再起動する'
112
+ task :reboot_type01 do
113
+ vpc = VPC::OneAzOnePublicSubnetVpc.new
114
+ EC2::Ec2.new(vpc).reboot
115
+ end
116
+
117
+ desc '1つのアベイラビリティゾーンに2つのパブリックサブネットのVPC環境にEC2インスタンスを作成する'
118
+ task :create_type02 do
119
+ vpc = VPC::OneAzTwoPublicSubnetVpc.new
120
+ vpc.create
121
+ EC2::Ec2.new(vpc).create
122
+ end
123
+
124
+ desc '1つのアベイラビリティゾーンに2つのパブリックサブネットのVPC環境のEC2インスタンスを削除する'
125
+ task :destroy_type02_env do
126
+ vpc = VPC::OneAzTwoPublicSubnetVpc.new
127
+ EC2::Ec2.new(vpc).destroy
128
+ vpc.destroy
129
+ end
130
+
131
+ desc '1つのアベイラビリティゾーンに1つのパブリックサブネットと1つのプライベートサブネットのVPC環境にEC2インスタンスを作成する'
132
+ task :create_type03 do
133
+ vpc = VPC::OneAzTwoPublicAndPrivateSubnetVpc.new
134
+ vpc.create
135
+ EC2::Ec2.new(vpc).create
136
+ end
137
+
138
+ desc '1つのアベイラビリティゾーンに1つのパブリックサブネットと1つのプライベートサブネットのVPC環境のEC2インスタンスを削除する'
139
+ task :destroy_type03_env do
140
+ vpc = VPC::OneAzTwoPublicAndPrivateSubnetVpc.new
141
+ EC2::Ec2.new(vpc).destroy
142
+ vpc.destroy
143
+ end
144
+
145
+ desc '2つのアベイラビリティゾーンに2つのプライベートサブネットのVPC環境にEC2インスタンスを作成する'
146
+ task :create_type04 do
147
+ vpc = VPC::TwoAzTwoPrivateSubnetVpc.new
148
+ vpc.create
149
+ EC2::Ec2.new(vpc).create
150
+ end
151
+
152
+ desc '2つのアベイラビリティゾーンに2つのプライベートサブネットのVPC環境のEC2インスタンスを削除する'
153
+ task :destroy_type04_env do
154
+ vpc = VPC::TwoAzTwoPrivateSubnetVpc.new
155
+ EC2::Ec2.new(vpc).destroy
156
+ vpc.destroy
157
+ end
158
+
159
+ desc '2つのアベイラビリティゾーンに2つのパブリックサブネットのVPC環境にEC2インスタンスを作成する'
160
+ task :create_type05 do
161
+ vpc = VPC::TwoAzTwoPublicSubnetVpc.new
162
+ vpc.create
163
+ EC2::Ec2.new(vpc).create
164
+ end
165
+
166
+ desc '2つのアベイラビリティゾーンに2つのパブリックサブネットのVPC環境のEC2インスタンスを削除する'
167
+ task :destroy_type05_env do
168
+ vpc = VPC::TwoAzTwoPublicSubnetVpc.new
169
+ EC2::Ec2.new(vpc).destroy
170
+ vpc.destroy
171
+ end
172
+
173
+ desc '2つのアベイラビリティゾーンに1つのパブリックサブネットと1つのプライベートサブネットのVPC環境にEC2インスタンスを作成する'
174
+ task :create_type06 do
175
+ vpc = VPC::TwoAzOnePublicSubnetAndPrivateSubnetVpc.new
176
+ vpc.create
177
+ EC2::Ec2.new(vpc).create
178
+ end
179
+
180
+ desc '2つのアベイラビリティゾーンに1つのパブリックサブネットと1つのプライベートサブネットのVPC環境のEC2インスタンスを削除する'
181
+ task :destroy_type06_env do
182
+ vpc = VPC::TwoAzOnePublicSubnetAndPrivateSubnetVpc.new
183
+ EC2::Ec2.new(vpc).destroy
184
+ vpc.destroy
185
+ end
186
+
187
+ desc '2つのアベイラビリティゾーンに2つのパブリックサブネットと2つのプライベートサブネットのVPC環境にEC2インスタンスを作成する'
188
+ task :create_type07 do
189
+ vpc = VPC::TwoAzTwoPublicSubnetAndPrivateSubnetVpc.new
190
+ vpc.create
191
+ EC2::Ec2.new(vpc).create
192
+ end
193
+
194
+ desc '2つのアベイラビリティゾーンに2つのパブリックサブネットと2つのプライベートサブネットVPCのVPC環境のEC2インスタンスを削除する'
195
+ task :destroy_type07_env do
196
+ vpc = VPC::TwoAzTwoPublicSubnetAndPrivateSubnetVpc.new
197
+ EC2::Ec2.new(vpc).destroy
198
+ vpc.destroy
199
+ end
200
+
201
+ desc '作成したキーペアをコピーする'
202
+ task :copy_key_pair do
203
+ yaml = YAML.load_file('config.yml')
204
+ key_pair_name = yaml['DEV']['EC2']['KEY_PAIR_NAME']
205
+ path = Dir.pwd + yaml['DEV']['EC2']['KEY_PAIR_PATH']
206
+ pem_file = path + "#{key_pair_name}.pem"
207
+ FileUtils.cp(pem_file,Dir.pwd)
208
+ end
209
+ end
210
+