On Aug 25, 2014, at 1:21 PM, Wido den Hollander <w...@widodh.nl> wrote:
> > > On 25-08-14 18:02, Carlos Reátegui wrote: >> Not sure about this ‘fix’. If the goal is to match AWS here is the way it >> works compared to 4.3. >> >> 1) /latest/user-data >> >> On AWS one can query /latest/user-data with or without the trailing slash >> and BOTH return the user-data >> >> On ACS 4.3 /latest/user-data works but with trailing / returns a 404. >> > > So this fix was just for the meta-data call. Not for the user-data query. It > could be that there are multiple fixes to be made, but they can be addressed > separately. > thanks Carlos for the extensive analysis, Maybe Erik can provide a patch to fix all of it :) >> 2) /latest/meta-data >> >> On AWS /latest/meta-data returns a 301 pointing to trailing / version. With >> a trailing slash it return the meta-data objects available. >> >> On ACS 4.3 /latest/meta-data returns 404. With a trailing slash it returns >> the meta-data objects available. >> >> 3) /latest/meta-data/<object> >> >> On AWS with and without / returns the object value(s) >> >> On ACS 4.3 without a / it returns the value. With the / it returns a 404. >> >> —— >> >> Here are examples of the above (I am also including the headers and in the >> case of user-data only the headers): >> >> ACS 4.3 >> >> $ curl -I http://172.30.45.101/latest/user-data/ >> HTTP/1.1 404 Not Found >> Date: Mon, 25 Aug 2014 15:53:18 GMT >> Server: Apache >> Vary: Accept-Encoding >> Content-Type: text/html; charset=iso-8859-1 >> >> $ curl -I http://172.30.45.101/latest/user-data >> HTTP/1.1 200 OK >> Date: Mon, 25 Aug 2014 15:53:23 GMT >> Server: Apache >> Last-Modified: Mon, 11 Aug 2014 22:34:05 GMT >> ETag: "10240-0-5006227053140;500622334a140” >> Accept-Ranges: bytes >> >> $ curl -i http://172.30.45.101/latest/meta-data >> HTTP/1.1 404 Not Found >> Date: Mon, 25 Aug 2014 15:54:25 GMT >> Server: Apache >> Vary: Accept-Encoding >> Content-Length: 214 >> Content-Type: text/html; charset=iso-8859-1 >> >> <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> >> <html><head> >> <title>404 Not Found</title> >> </head><body> >> <h1>Not Found</h1> >> <p>The requested URL /latest/meta-data was not found on this server.</p> >> </body></html> >> >> $ curl -i http://172.30.45.101/latest/meta-data/ >> HTTP/1.1 200 OK >> Date: Mon, 25 Aug 2014 15:54:32 GMT >> Server: Apache >> Last-Modified: Mon, 11 Aug 2014 22:34:05 GMT >> ETag: "1024a-88-5006227053140;500622334a140" >> Accept-Ranges: bytes >> Content-Length: 136 >> >> service-offering >> availability-zone >> local-ipv4 >> local-hostname >> public-ipv4 >> public-hostname >> instance-id >> vm-id >> public-keys >> cloud-identifier >> >> $ curl -i http://172.30.45.101/latest/meta-data/local-ipv4; echo >> HTTP/1.1 200 OK >> Date: Mon, 25 Aug 2014 15:55:39 GMT >> Server: Apache >> Last-Modified: Mon, 11 Aug 2014 22:34:05 GMT >> ETag: "10250-d-5006227053140;500622334a140" >> Accept-Ranges: bytes >> Content-Length: 13 >> >> 172.30.45.123 >> >> $ curl -i http://172.30.45.101/latest/meta-data/local-ipv4/; echo >> HTTP/1.1 404 Not Found >> Date: Mon, 25 Aug 2014 15:55:45 GMT >> Server: Apache >> Vary: Accept-Encoding >> Content-Length: 232 >> Content-Type: text/html; charset=iso-8859-1 >> >> <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> >> <html><head> >> <title>404 Not Found</title> >> </head><body> >> <h1>Not Found</h1> >> <p>The requested URL /metadata/172.30.45.123/local-ipv4/ was not found on >> this server.</p> >> </body></html> >> >> >> On AWS EC2 >> >> $ curl -I http://169.254.169.254/latest/user-data >> HTTP/1.0 200 OK >> Content-Type: application/octet-stream >> Accept-Ranges: bytes >> ETag: "590463714" >> Last-Modified: Thu, 03 Apr 2014 23:10:13 GMT >> Content-Length: 4790 >> Connection: close >> Date: Mon, 25 Aug 2014 15:57:15 GMT >> Server: EC2ws >> >> $ curl -I http://169.254.169.254/latest/user-data/ >> HTTP/1.0 200 OK >> Content-Type: application/octet-stream >> Accept-Ranges: bytes >> ETag: "590463714" >> Last-Modified: Thu, 03 Apr 2014 23:10:13 GMT >> Content-Length: 4790 >> Connection: close >> Date: Mon, 25 Aug 2014 15:57:20 GMT >> Server: EC2ws >> >> $ curl -i http://169.254.169.254/latest/meta-data >> HTTP/1.0 301 Moved Permanently >> Location: http://169.254.169.254/latest/meta-data/ >> Content-Length: 0 >> Connection: close >> Date: Mon, 25 Aug 2014 15:58:00 GMT >> Server: EC2ws >> >> $ curl -i http://169.254.169.254/latest/meta-data/; echo >> HTTP/1.0 200 OK >> Content-Type: text/plain >> Accept-Ranges: bytes >> ETag: "1606042795" >> Last-Modified: Thu, 03 Apr 2014 23:10:13 GMT >> Content-Length: 268 >> Connection: close >> Date: Mon, 25 Aug 2014 15:58:50 GMT >> Server: EC2ws >> >> ami-id >> ami-launch-index >> ami-manifest-path >> block-device-mapping/ >> hostname >> iam/ >> instance-action >> instance-id >> instance-type >> kernel-id >> local-hostname >> local-ipv4 >> mac >> metrics/ >> network/ >> placement/ >> profile >> public-hostname >> public-ipv4 >> public-keys/ >> reservation-id >> security-groups >> >> $ curl -i http://169.254.169.254/latest/meta-data/local-ipv4; echo >> HTTP/1.0 200 OK >> Content-Type: text/plain >> Accept-Ranges: bytes >> ETag: "916027669" >> Last-Modified: Thu, 03 Apr 2014 23:10:13 GMT >> Content-Length: 12 >> Connection: close >> Date: Mon, 25 Aug 2014 16:00:32 GMT >> Server: EC2ws >> >> 10.250.5.124 >> $ curl -i http://169.254.169.254/latest/meta-data/local-ipv4/; echo >> HTTP/1.0 200 OK >> Content-Type: text/plain >> Accept-Ranges: bytes >> ETag: "916027669" >> Last-Modified: Thu, 03 Apr 2014 23:10:13 GMT >> Content-Length: 12 >> Connection: close >> Date: Mon, 25 Aug 2014 16:00:36 GMT >> Server: EC2ws >> >> 10.250.5.124 >> >> >> >> >> On Aug 25, 2014, at 5:32 AM, Sebastien Goasguen <run...@gmail.com> wrote: >> >>> >>> On Aug 25, 2014, at 8:28 AM, Sebastien Goasguen <run...@gmail.com> wrote: >>> >>>> >>>> On Aug 25, 2014, at 8:26 AM, Wido den Hollander <w...@widodh.nl> wrote: >>>> >>>>> On 08/25/2014 02:25 PM, Sebastien Goasguen wrote: >>>>>> >>>>>> On Aug 25, 2014, at 8:16 AM, Wido den Hollander <w...@widodh.nl> wrote: >>>>>> >>>>>>> On 08/25/2014 01:33 PM, Nux! wrote: >>>>>>>> Thanks Erik! >>>>>>>> >>>>>>> >>>>>>> Indeed! >>>>>>> >>>>>>>> Hopefully this change will be incorporated soon so we don't need to >>>>>>>> patch cloud-init. >>>>>>>> >>>>>>> >>>>>>> I came up with a very small patch: >>>>>>> https://git-wip-us.apache.org/repos/asf?p=cloudstack.git;a=commitdiff;h=1499972804b6de4fade5c84436e29f9904165e18 >>>>>>> >>>>>>> Tested it on my local env and worked fine. Both the old and new URL >>>>>>> work with the same output. >>>>>>> >>>>>> >>>>>> thanks folks, I will pull that in 4.3 >>>>>> >>>>> >>>>> Hmm. I didn't make a separate branch as a hotfix for 4.4, so how do we >>>>> get this in 4.4.1 as well? >>>>> >>>>> We shouldn't cherry-pick anymore, right? >>>> >>>> Ideally no, if you make a hotfix/4.4-7405 branch for it you can ask Daan >>>> to merge it in 4.4 branch >>>> >>>> I will also merge it in 4.3 >>>> >>>> >>> >>> Erick, submit the same patch to review board, so I took it from there and >>> patch 4.3 branch. >>> >>> Only 4.4 is missing... >>> >>>> >>>>> >>>>> Wido >>>>> >>>>>> >>>>>> >>>>>>> Wido >>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> Sent from the Delta quadrant using Borg technology! >>>>>>>> >>>>>>>> Nux! >>>>>>>> www.nux.ro >>>>>>>> >>>>>>>> >>>>>>>> ----- Original Message ----- >>>>>>>>> From: "Erik Weber" <terbol...@gmail.com> >>>>>>>>> To: "dev" <dev@cloudstack.apache.org> >>>>>>>>> Sent: Monday, 25 August, 2014 12:34:10 PM >>>>>>>>> Subject: Re: cloud-init issue >>>>>>>>> >>>>>>>>> On Mon, Aug 25, 2014 at 1:27 PM, Erik Weber <terbol...@gmail.com> >>>>>>>>> wrote: >>>>>>>>> >>>>>>>>>> On Mon, Aug 25, 2014 at 1:16 PM, Wido den Hollander <w...@widodh.nl> >>>>>>>>>> wrote: >>>>>>>>>> >>>>>>>>>>> On 08/25/2014 12:12 PM, Sebastien Goasguen wrote: >>>>>>>>>>> >>>>>>>>>>>> Folks, >>>>>>>>>>>> >>>>>>>>>>>> There is an outstanding issue with cloud-init compatibility. >>>>>>>>>>>> The VR serves the instance metadata through a web server but there >>>>>>>>>>>> is a >>>>>>>>>>>> trailing slash issue: >>>>>>>>>>>> >>>>>>>>>>>> https://issues.apache.org/jira/browse/CLOUDSTACK-7405 >>>>>>>>>>>> >>>>>>>>>>>> Does anyone know where the settings for this web server are >>>>>>>>>>>> located in >>>>>>>>>>>> the cloudstack code ? >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> So I think that is done in systemvm/patches/debian/ >>>>>>>>>>> config/opt/cloud/bin/vmdata.py >>>>>>>>>>> >>>>>>>>>>> It adds a RewriteRule to the .htaccess like: >>>>>>>>>>> >>>>>>>>>>> entry = "RewriteRule ^meta-data/(.+)$ ../" + folder + >>>>>>>>>>> "/%{REMOTE_ADDR}/$1 [L,NC,QSA]" >>>>>>>>>>> >>>>>>>>>>> I'm not a big mod_rewrite guru however. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> Adding a line with "RewriteRule ^meta-data$ ../" + folder >>>>>>>>>> +"/%{REMOTE_ADDR}/$1 [L,NC,QSA]" >>>>>>>>>> should suffice. >>>>>>>>>> >>>>>>>>>> small typo there... >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>>> >>>>>>>>>> Tested on a VR with this config: >>>>>>>>>> >>>>>>>>>> RewriteRule ^meta-data/(.+)$ ../metadata/%{REMOTE_ADDR}/$1 >>>>>>>>>> [L,NC,QSA] >>>>>>>>>> >>>>>>>>>> RewriteRule ^meta-data/$ ../metadata/%{REMOTE_ADDR}/meta-data >>>>>>>>>> [L,NC,QSA] >>>>>>>>>> >>>>>>>>>> RewriteRule ^meta-data$ ../metadata/%{REMOTE_ADDR}/meta-data >>>>>>>>>> [L,NC,QSA] >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>> A better solution is probably to make the last slash conditional, >>>>>>>>> like this: >>>>>>>>> RewriteRule ^meta-data/?$ ../metadata/%{REMOTE_ADDR}/meta-data >>>>>>>>> [L,NC,QSA] >>>>>>>>> >>>>>>>>> tested: >>>>>>>>> [root@jenkins ~]# curl -I -s 10.30.81.1/latest/meta-data/ | grep HTTP >>>>>>>>> >>>>>>>>> HTTP/1.1 200 OK >>>>>>>>> >>>>>>>>> [root@jenkins ~]# curl -I -s 10.30.81.1/latest/meta-data | grep HTTP >>>>>>>>> >>>>>>>>> HTTP/1.1 200 OK >>>>>>>>> >>>>>>>>> Erik >>