Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

A records (ALIAS) to ELBs on a different AWS account are unconfigurable #10

Closed
bwalding opened this issue Sep 25, 2014 · 14 comments
Closed

Comments

@bwalding
Copy link

We have a zone apex record that needs to point to an ELB on another account (that we do not control or have credentials for).

The way route53-ext resolves ELBs does not handle this case, and we end up receiving the "Cannot find ELB" error due to this (which breaks the DNS update).

I can see two obvious solutions
a) fix the root cause (I tried monkeypatching around it, but was unsuccessful)
b) provide a way to tell roadworker to ignore a given record - in this case I would just leave the ALIAS record in Route 53, and roadworker would be told to just ignore it when generating the change list / applying change list.

@bwalding bwalding changed the title ALIAS records to ELBs outside of the current account do not work A records (ALIAS) to ELBs on a different AWS account are unconfigurable Sep 25, 2014
@winebarrel
Copy link
Collaborator

Sorry for reply late.

I think that you can set dns_name dynamically because DSL is code of Ruby.

For example...

dns_names_yaml = YAML.load('dns_names.yml')
dns_name_by_account = dns_names_yaml['my-account']['info.winebarrel.jp']

hosted_zone "info.winebarrel.jp." do
  rrset "xxx.info.winebarrel.jp.", "A" do
    dns_name dns_name_by_account
  end
end

You can also ignore a specific record:

if ENV['IGNORE_ELB'] == '1'
  require 'elb.route'

  # elb.route:
  #   hosted_zone "info.winebarrel.jp." do
  #     rrset "xxx.info.winebarrel.jp.", "A" do
  #       dns_name "elb-dns-name.elb.amazonaws.com"
  #     end
  #   end

end

Can you solve the problem in this way?

@yteraoka
Copy link
Contributor

yteraoka commented Sep 9, 2015

I sent related pull request. Please check #21

@limitusus
Copy link
Contributor

Hello,

Is it resolved?
It seems resolved but on my environment it fails, even when I specify :hosted_zone_id.

[ERROR] RuntimeError: Cannot find ELB: XXXXX.ap-northeast-1.elb.amazonaws.com

To know why I inserted p dns_name_opts here (https://github.com/winebarrel/roadworker/blob/0.5.5/lib/roadworker/route53-wrapper.rb#L175) but written was only {:evaluate_target_health=>false}.
When I also specified :evaluate_target_health => true, it was in effect: {:evaluate_target_health=>true}.
I think I should conclude somehow the hosted_zone_id is not properly passed to Aws::Route53.dns_name_to_alias_target via dns_name_opts.

I think I should write the resource record like this (https://github.com/winebarrel/roadworker/blob/v0.5.6/spec/roadworker_create_spec.rb#L171), but is it wrong?

@winebarrel
Copy link
Collaborator

@limitusus Thank you for your report 😃
Will investigate it on the weekend.

@limitusus
Copy link
Contributor

Hi @winebarrel,
Is there any progress on it?

@winebarrel
Copy link
Collaborator

Sorry untouched...

@cyberitguru
Copy link

Hi all, is this problem fixed? I still see this issue in my current version of roadworker (roadwork 0.5.6).
Could you please take a look at this?

@winebarrel
Copy link
Collaborator

Sorry, this issue information is not enough to solve this problem 😢
Please tell me the following information.

  • Ruby version
  • Roadworker version
  • Routefile DSL
  • backtrace (pass --debug option)
  • AWS_REGION/AWS_DEFAULT_REGION env val

(Please contact @sgwr_dts (twitter) if you can speak Japanese)

@limitusus
Copy link
Contributor

I tested under the following conditions (hid ELB name; it's a production data):

ruby -v: ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-linux]
roadwork -v: roadwork 0.5.6
Routefile (part/changed name):

hosted zone "limitusus.info." do
  (snip)
  rrset "xxx.limitusus.info.", 'A' do
    dns_name "dualstack.xxx.yyy.zzz-0000000000.ap-northeast-1.elb.amazonaws.com."
  end
end

Backtrace:

/home/limit/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/roadworker-0.5.6/lib/roadworker/route53-ext.rb:82:in `elb_dns_name_to_alias_target': Cannot find ELB: dualstack.xxx.yyy.zzz-0000000000.ap-northeast-1.elb.amazonaws.com (RuntimeError)
    from /home/limit/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/roadworker-0.5.6/lib/roadworker/route53-ext.rb:43:in `dns_name_to_alias_target'
    from /home/limit/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/roadworker-0.5.6/lib/roadworker/route53-wrapper.rb:176:in `block in create'
    from /home/limit/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/roadworker-0.5.6/lib/roadworker/route53-wrapper.rb:168:in `each'
    from /home/limit/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/roadworker-0.5.6/lib/roadworker/route53-wrapper.rb:168:in `create'
    from /home/limit/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/roadworker-0.5.6/lib/roadworker/client.rb:130:in `block in walk_rrsets'
    from /home/limit/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/roadworker-0.5.6/lib/roadworker/client.rb:113:in `each'
    from /home/limit/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/roadworker-0.5.6/lib/roadworker/client.rb:113:in `walk_rrsets'
    from /home/limit/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/roadworker-0.5.6/lib/roadworker/client.rb:76:in `block in walk_hosted_zones'
    from /home/limit/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/roadworker-0.5.6/lib/roadworker/client.rb:69:in `each'
    from /home/limit/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/roadworker-0.5.6/lib/roadworker/client.rb:69:in `walk_hosted_zones'
    from /home/limit/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/roadworker-0.5.6/lib/roadworker/client.rb:23:in `apply'
    from /home/limit/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/roadworker-0.5.6/bin/roadwork:180:in `<top (required)>'
    from /home/limit/.rbenv/versions/2.3.1/bin/roadwork:23:in `load'
    from /home/limit/.rbenv/versions/2.3.1/bin/roadwork:23:in `<main>'

No env val (I tested it using --profile=my option)

Hope it helps

@cyberitguru
Copy link

cyberitguru commented Jul 1, 2016

Hi @winebarrel,

It can not create records for ELB that does belong to different AWS account (not belong to current account).

ruby --version

ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-linux]

roadwork --version

roadwork 0.5.6

env val

AWS_REGION/AWS_DEFAULT_REGION are not set

dns record

rrset "example.com.", "CNAME" do
ttl 600
resource_records(
"xxx.xxx.elb.amazonaws.com"
)
end

roadwork -a

Apply Routefile to Route53
Create ResourceRecordSet: xxx.com A
[ERROR] RuntimeError: Cannot find ELB: xxx.xxx.elb.amazonaws.com


debug details

....
[Aws::ElasticLoadBalancing::Client 200 0.493465 0 retries] describe_load_balancers()

/usr/local/app/roadworker/vendor/bundle/ruby/2.3.0/gems/roadworker-0.5.6/lib/roadworker/route53-ext.rb:82:in elb_dns_name_to_alias_target': Cannot find ELB: xxx.xxx.elb.amazonaws.com (RuntimeError) from /usr/local/app/roadworker/vendor/bundle/ruby/2.3.0/gems/roadworker-0.5.6/lib/roadworker/route53-ext.rb:43:indns_name_to_alias_target'
from /usr/local/app/roadworker/vendor/bundle/ruby/2.3.0/gems/roadworker-0.5.6/lib/roadworker/route53-wrapper.rb:176:in block in create' from /usr/local/app/roadworker/vendor/bundle/ruby/2.3.0/gems/roadworker-0.5.6/lib/roadworker/route53-wrapper.rb:168:ineach'
from /usr/local/app/roadworker/vendor/bundle/ruby/2.3.0/gems/roadworker-0.5.6/lib/roadworker/route53-wrapper.rb:168:in create' from /usr/local/app/roadworker/vendor/bundle/ruby/2.3.0/gems/roadworker-0.5.6/lib/roadworker/client.rb:130:inblock in walk_rrsets'
from /usr/local/app/roadworker/vendor/bundle/ruby/2.3.0/gems/roadworker-0.5.6/lib/roadworker/client.rb:113:in each' from /usr/local/app/roadworker/vendor/bundle/ruby/2.3.0/gems/roadworker-0.5.6/lib/roadworker/client.rb:113:inwalk_rrsets'
from /usr/local/app/roadworker/vendor/bundle/ruby/2.3.0/gems/roadworker-0.5.6/lib/roadworker/client.rb:76:in block in walk_hosted_zones' from /usr/local/app/roadworker/vendor/bundle/ruby/2.3.0/gems/roadworker-0.5.6/lib/roadworker/client.rb:69:ineach'
from /usr/local/app/roadworker/vendor/bundle/ruby/2.3.0/gems/roadworker-0.5.6/lib/roadworker/client.rb:69:in walk_hosted_zones' from /usr/local/app/roadworker/vendor/bundle/ruby/2.3.0/gems/roadworker-0.5.6/lib/roadworker/client.rb:23:inapply'
from /usr/local/app/roadworker/vendor/bundle/ruby/2.3.0/gems/roadworker-0.5.6/bin/roadwork:180:in <top (required)>' from /usr/local/bin/roadwork:17:inload'
from /usr/local/bin/roadwork:17:in `

'

@winebarrel
Copy link
Collaborator

Thanks for reporst!
I'm sorry investigation is delayed.

@winebarrel
Copy link
Collaborator

winebarrel commented Jul 24, 2016

I think I fix the problem. probably...
Please try v0.5.7.beta v0.5.7.beta2

@cyberitguru
Copy link

@winebarrel,

Thanks a lot, it seems fixed!!

@limitusus
Copy link
Contributor

It worked for me too. Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants