|
@@ -14,6 +14,11 @@ module NeoInfra
|
|
aws = NeoInfra::Aws.new
|
|
aws = NeoInfra::Aws.new
|
|
@cfg = NeoInfra::Config.new
|
|
@cfg = NeoInfra::Config.new
|
|
|
|
|
|
|
|
+ unless @cfg.tag_policy.has_key? :nodes
|
|
|
|
+ puts "no policy set for nodes"
|
|
|
|
+ return {:error => "No nodes tag policy"}
|
|
|
|
+ end
|
|
|
|
+
|
|
@cfg.accounts.each do |account|
|
|
@cfg.accounts.each do |account|
|
|
base_conf = {
|
|
base_conf = {
|
|
provider: 'AWS',
|
|
provider: 'AWS',
|
|
@@ -26,10 +31,9 @@ module NeoInfra
|
|
new_conn = Fog::Compute.new(region_conf.merge(base_conf))
|
|
new_conn = Fog::Compute.new(region_conf.merge(base_conf))
|
|
new_conn.servers.all.each do |ec2|
|
|
new_conn.servers.all.each do |ec2|
|
|
%i[required recommended].each do |a|
|
|
%i[required recommended].each do |a|
|
|
- next unless @cfg.tag_policy.has_key? a
|
|
|
|
- puts 'Foo'
|
|
|
|
- next if (ec2.tags.keys.sort & @cfg.tag_policy[a].sort) == @cfg.tag_policy[a].sort
|
|
|
|
- results[ec2.id].merge!("#{a}_missing_tags" => @cfg.tag_policy[a].sort - ec2.tags.keys.sort,
|
|
|
|
|
|
+ next unless @cfg.tag_policy[:nodes].has_key? a
|
|
|
|
+ next if (ec2.tags.keys.sort & @cfg.tag_policy[:nodes][a].sort) == @cfg.tag_policy[:nodes][a].sort
|
|
|
|
+ results[ec2.id].merge!("#{a}_missing_tags" => @cfg.tag_policy[:nodes][a].sort - ec2.tags.keys.sort,
|
|
'tags' => ec2.tags.keys.sort,
|
|
'tags' => ec2.tags.keys.sort,
|
|
'account' => account[:name],
|
|
'account' => account[:name],
|
|
'launched' => ec2.created_at,
|
|
'launched' => ec2.created_at,
|
|
@@ -41,5 +45,79 @@ module NeoInfra
|
|
end
|
|
end
|
|
results
|
|
results
|
|
end
|
|
end
|
|
|
|
+
|
|
|
|
+ def audit_vpcs
|
|
|
|
+ results = Hash.new { |h, k| h[k] = {} }
|
|
|
|
+ aws = NeoInfra::Aws.new
|
|
|
|
+ @cfg = NeoInfra::Config.new
|
|
|
|
+
|
|
|
|
+ unless @cfg.tag_policy.has_key? :vpcs
|
|
|
|
+ puts "no policy set for vpcs"
|
|
|
|
+ return {:error => "No vpc tag policy"}
|
|
|
|
+ end
|
|
|
|
+
|
|
|
|
+ @cfg.accounts.each do |account|
|
|
|
|
+ base_conf = {
|
|
|
|
+ provider: 'AWS',
|
|
|
|
+ aws_access_key_id: account[:key],
|
|
|
|
+ aws_secret_access_key: account[:secret]
|
|
|
|
+ }
|
|
|
|
+ aws.regions.each do |region|
|
|
|
|
+ region_conf = { region: region }
|
|
|
|
+ # Get Instances
|
|
|
|
+ new_conn = Fog::Compute.new(region_conf.merge(base_conf))
|
|
|
|
+ new_conn.vpcs.all.each do |vpc|
|
|
|
|
+ %i[required recommended].each do |a|
|
|
|
|
+ # we don't do default vpcs
|
|
|
|
+ next if vpc.is_default
|
|
|
|
+ next unless @cfg.tag_policy[:vpcs].has_key? a
|
|
|
|
+ next if (vpc.tags.keys.sort & @cfg.tag_policy[:vpcs][a].sort) == @cfg.tag_policy[:vpcs][a].sort
|
|
|
|
+ results[vpc.id].merge!("#{a}_missing_tags" => @cfg.tag_policy[:vpcs][a].sort - vpc.tags.keys.sort,
|
|
|
|
+ 'tags' => vpc.tags.keys.sort,
|
|
|
|
+ 'account' => account[:name],
|
|
|
|
+ 'region' => region)
|
|
|
|
+ end
|
|
|
|
+ end
|
|
|
|
+ end
|
|
|
|
+ end
|
|
|
|
+ results
|
|
|
|
+ end
|
|
|
|
+
|
|
|
|
+ def audit_subnets
|
|
|
|
+ results = Hash.new { |h, k| h[k] = {} }
|
|
|
|
+ aws = NeoInfra::Aws.new
|
|
|
|
+ @cfg = NeoInfra::Config.new
|
|
|
|
+
|
|
|
|
+ unless @cfg.tag_policy.has_key? :subnets
|
|
|
|
+ puts "no policy set for subnets"
|
|
|
|
+ return {:error => "No subnet tag policy"}
|
|
|
|
+ end
|
|
|
|
+
|
|
|
|
+ @cfg.accounts.each do |account|
|
|
|
|
+ base_conf = {
|
|
|
|
+ provider: 'AWS',
|
|
|
|
+ aws_access_key_id: account[:key],
|
|
|
|
+ aws_secret_access_key: account[:secret]
|
|
|
|
+ }
|
|
|
|
+ aws.regions.each do |region|
|
|
|
|
+ region_conf = { region: region }
|
|
|
|
+ # Get Instances
|
|
|
|
+ new_conn = Fog::Compute.new(region_conf.merge(base_conf))
|
|
|
|
+ new_conn.subnets.all.each do |subnet|
|
|
|
|
+ %i[required recommended].each do |a|
|
|
|
|
+ next if subnet.default_for_az
|
|
|
|
+ next unless @cfg.tag_policy[:subnets].has_key? a
|
|
|
|
+ next if (subnet.tag_set.keys.sort & @cfg.tag_policy[:subnets][a].sort) == @cfg.tag_policy[:subnets][a].sort
|
|
|
|
+ results[subnet.subnet_id].merge!("#{a}_missing_tags" => @cfg.tag_policy[:subnets][a].sort - subnet.tag_set.keys.sort,
|
|
|
|
+ 'tags' => subnet.tag_set.keys.sort,
|
|
|
|
+ 'account' => account[:name],
|
|
|
|
+ 'region' => region)
|
|
|
|
+ end
|
|
|
|
+ end
|
|
|
|
+ end
|
|
|
|
+ end
|
|
|
|
+ results
|
|
|
|
+ end
|
|
|
|
+
|
|
end
|
|
end
|
|
end
|
|
end
|