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.
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