=== freeflying_away is now known as freeflying === thumper-afk is now known as thumper === CyberJacob|Away is now known as CyberJacob [08:03] InformatiQ: Glad you found the vars. FWIW, I included an example of cat'ing the vars yaml file in the paste at line 53: http://paste.ubuntu.com/6442336/ [08:05] InformatiQ: and thanks for the pointer about the key names in ansible, I'll update that in charm helpers too. [08:25] can we change config flag with juju set dynamically? [08:25] like set quantum's ext network pool [08:39] freeflying: running `juju set servicename mysetting=foo` will trigger the config-changed hook on all units of servicename in addition to providing the new value for the mysetting config optin (which must be part of the config.yaml). [09:06] noodles775, sounds cool, thx === axw_ is now known as axw [09:54] good morning/day/whateveryoutimeis [09:55] is there any page which lists who is using juju? [09:56] I usually don't see juju much in the devops circles (which is where juju should be really) [09:56] so I was hoping to get a feeling of the adoption of juju [09:57] also if anyone here does juju consulting I would interested to have a quick chat [09:58] Hi InformatiQ. I'm not aware of a page listing adoption, jcastro is the person to talk to I'd think (when he's awake). [09:58] Hi noodles775 [10:00] noodles775: so in ansible if i need to open a port i just run the command in shell from ansible [10:00] right? [10:02] InformatiQ: Normally if it's to expose the service, you'd use `juju expose servicename`... is that what you're after? eg, https://juju.ubuntu.com/docs/charms-exposing.html [10:09] noodles775: i thought you had to put open anyway === freeflying is now known as freeflying_away [10:15] InformatiQ: yes, sorry. I'm not sure of the best way to do that with ansible - perhaps a command is the best way. [10:15] * noodles775 checks [10:18] Yeah, there's a charm-helper for it (charmhelpers.core.hookenv.open_port), but it's just trivially calling open-port. [10:22] jamespage: Thanks for landing the one-liner yesterday. I've got another branch here which deals with an issue InformatiQ pointed out yesterday - but I'm assuming I shouldn't be pinging you for each branch. Are there a bunch of people subscribed or reviewing? [10:22] Anyway, fwiw: https://code.launchpad.net/~michael.nelson/charm-helpers/no-hyphens-in-ansible-yaml-keys/+merge/195931 [10:26] noodles775, I'll do it for future review credit :-) [10:26] jamespage: Done :-) (although, can we go by line-count? :P) [10:29] noodles775, reviewed and merged - thanks [10:29] Great, thank-you! [10:32] noodles775 jamespage : so everytime i make a charm using ansible i copy the charmhelpers tree in my hooks? [10:32] InformatiQ, for now yes [10:33] there are plans to release charm-helpers (at least the stable, core ones) for 14.04 [10:33] + PPA's for backports (I expect) [10:33] 14.04 that's a long wait [10:36] i need to get familiar with launchpad [10:37] InformatiQ: Based on our experience yesterday, I'm putting together a charm-bootstrap-ansible branch on github that'll make it easier (it uses a script to just pull in or update the parts of charmhelpers you need) [10:38] noodles775: oh great thanks noodles [10:39] i am more familiar with github [10:44] I'm trying to work out the best place to initialize some storage shared between units in my service (a Swift container) [10:45] I'm trying to work out the best place to initialize some storage shared between units in my service (a Swift container) [10:45] The problem I see is that if I do it in my install or config-changed hook, then every unit will attempt to intialize it. [10:46] If I do it in my peer relation-joined hook, then it is only initialized if there are more than one unit. [10:51] stub: it shouldn't matter I think? (that is, the PUT request for container creation is idempotent - http://docs.openstack.org/api/openstack-object-storage/1.0/content/create-container.html ) [10:51] stub: you just get a 202 instead of a 201 [10:52] I guess that isn't the real problem [10:52] Ah - or you want to do more than just create the container... [10:52] Yeah. [10:53] If there is a single unit, the unit needs to use the container. If there are multiple units, only the master unit needs to use the container. [10:53] If I 'deploy --units=3', then until the peer relation hooks are run I'll have 3 units that don't know about each other and will all attempt to use the shared storage. [10:54] Hrm, that seems to make sense though (that until they know about each other, they assume they use the shared storage themselves). [10:55] yeah. Also, if I add a new unit I don't want it to crap all over the shared area when it thinks it is alone. [10:55] I think I need some sort of locking, but I don't think I can do that with Swift? [10:56] create_container_if_not_exists_else_fail [10:57] You should be able to do that with multiple requests? (ie. a HEAD for metadata, which will 404 if it doesn't exist) [10:57] Maybe append a UUID to the container name... [10:57] Ah - right, but that'll just race. [10:58] stub why not the first container writes a lock file to the container (assuming the container is a filesystem of some sort) [10:58] That master-election thing someone mentioned on the mailing list would be useful here (that doesn't eist) [10:59] InformatiQ: Swift is an object store, and some of its features make locking problematic I think [11:00] jamespage, fwiw I've resubmitted the multiple floating pools branch. I see the mp to nova-compute is still outstanding, do you have any philosophical objection to that one or is it just in the queue ? [11:00] (lake of consistency, for example, http://julien.danjou.info/blog/2012/openstack-swift-consistency-analysis ) [11:02] gnuoy, in the queue but uds this week [11:02] ok, understood [11:02] gnuoy, was that the one that does the mtu setting stuff? [11:02] I was pondering that approach [11:02] jamespage, thats the one [11:03] jamespage, what's your reservation about the approach ? [11:04] gnuoy, well as much as possible I'm adverse to twiddling network knobs and configuration in the charm [11:05] I think that should be done during provisioning and written into /etc/network/interfaces [11:08] jamespage, really ? Surely a customers experience would be far better if they deploy openstack via stock maas and twiddle the mtu setting afterwards. If you do object strongly I can add it to my MaaS hacking instead [11:08] gnuoy, that's kinda why I'm still pondering it [11:09] jamespage, I can see your pov, there is an element of compensating for a missing MaaS feature [11:11] gnuoy, yes indeed [11:12] * jamespage thinks a bit more [11:39] hello juju! [11:40] having a bit of a problem with juju and MaaS.. and i was hoping somebody here would be kind eough to shed some light on a juju newbie [11:43] three computers.. one installed with ubuntu server CD with maas (create new...), configured (managed eth0, dhcp, etc).. the other two computers comissioned as nodes (raring, wake on lan..).. juju init, changed the .yaml file.. juju bootstrap went fine: [11:43] WARNING picked arbitrary tools &{"1.16.0.1-precise-amd64" "http://192.168.1.99/MAAS/api/1.0/files/?key=11d9953c-51d5-11e3-a0a8-001e8c1c89bd&op=get_by_key" "9be79a60ec6084880521069f7555c011825ed9294a65cbac575333afe6bf1484" %!q(int64=4638204)} [11:43] ... [11:43] juju status.. freezes.. [11:43] 2013-11-20 11:29:51 INFO juju.state open.go:68 opening state; mongo addresses: ["kwhp7.local:37017"]; entity "" [11:43] any ideas? [11:46] ashipika, I would suspect that the bootstrap node is still being installed; but you would need to see which node is allocated in the maas ui and go check to be sure [11:47] its possible something bad happened... [11:48] jamespage: thanks for your reply. yes. something strange is going on with my maas.. seems to be installing, but the node just shutsdown when it is "done" [11:48] ashipika, maas nodes have to be registered and commissioned prior to use; the commissioning step does what you just described above [11:49] and that's triggered when you accept the nodes in MAAS [11:49] yes.. but the status on the web says: Allocated to [11:49] i already went through the commisioning step and accepting and whatnot [11:51] ashipika, probably worth asking in #maas - more knowledge in that channel as this sounds maas-ish [11:51] thanks! [11:51] :D [11:52] #juju on twitter returns lots of cats a weired people === freeflying_away is now known as freeflying [12:57] marcoceppi, jcastro: when did lp:charms/ceph -> lp:charms/precise/ceph [12:57] ? [12:59] jamespage@armstrong:~/src/charms/precise$ charm get ceph [12:59] Error: ceph not found in charm store. [12:59] ouch! [12:59] marcoceppi, ^^ [13:30] jamespage: what. [13:31] marcoceppi, that was my reaction as well [13:32] marcoceppi, https://code.launchpad.net/~charmers/ [13:32] what the hell [13:32] marcoceppi, I suspect " Registered by Curtis Hovey 17 hours ago " is the cause [13:33] sinzui, ^^ [13:33] https://launchpad.net/charms/trusty === exekias_ is now known as exekias [13:49] jamespage, marcoceppi egad. I don't think registering trusty is the exact cause because I registered bundles several months ago [13:50] jamespage: I just changed trusty to experimental to de-empahise it [13:52] mthaddon, ^^ can you shed light on this issue? [13:52] jamespage, mthaddon: With projects, you explicitly set the series that is the focus of development. [13:53] sinzui, charms is a distributed tho [13:53] so I expect it behaves differently [13:53] jamespage, I did register trusty yesterday as I did bundles a few months ago. I did not edit precise [13:54] precise is set as supported, and once in that state, I can only become "current stable release" and "obsolete" [13:54] trusty is experimental [13:58] * mthaddon catches up [13:59] mthaddon, jamespage: I was mistaken. /charms/trusty was NOT experimental. It claimed to be active development like precise. I just changed it to be Experimental after flipping between staging.lp and lp [13:59] ah, yeah, it's now working for me, so I'm glad something was changed [14:00] jamespage: I would definitely recommend lp:charms/precise/ceph though [14:00] I'm not. I did make the change and I really didn't expect this. And I really don't know if I have fixed anything [14:02] I think if it was set to active development it's entirely expected [14:06] jamespage, have I fixed it? I ran "bzr branch lp:charms/ceph ceph" and got a branch [14:07] I think so yes [14:08] okay I see this command did change the listing [14:08] charm search ganglia [14:09] damn. ppetraki was the first to spot the problem and I didn't understand the issue when we talked about it [14:14] oh that [14:25] jamespage: another short charmhelpers branch for an error which the tests only highlight when run in isolation :/ https://code.launchpad.net/~michael.nelson/charm-helpers/missing-import-for-ansible-helpers/+merge/195967 [15:15] Problems using containers created using juju | http://askubuntu.com/q/379902 [15:15] sinzui: could you jump in to uds-servercloud-1 ? [15:16] * sinzui does, first killing cpu intensive procs [15:18] sinzui: https://plus.google.com/hangouts/_/72cpjufj5oc8omdro2acjh1vco?authuser=0&hl=en [15:29] all right, now I need to get my head around how relations work in juju! [15:29] my mind boggles [15:32] so in the metadata, you can set the requires stuff. I'm not sure why for instance you might need to specify "database:\n interface: mysql." Why the database part, when we already know that mysql is a db [15:33] does the interface specify the port? [15:33] or is it something different entirely? [16:46] hmmmm [16:46] I think I'm beginning to undestand relations, but at what point does one end of the relationship set their variables, such as ip address, etc? [16:46] or am I doing things wrong? [16:48] SuperMatt: so you can set relation data at anytime [16:49] but it won't be sent until the hook finishes executing [16:51] basically, I have a reverse proxy, and I want to get the ip address from one of the web servers. how and where would I set the ip address? In the start section? [16:53] SuperMatt: so your charm is providing the http interface, or is it consuming the interface [16:53] err, "requires" [16:53] well I have two charms, one for the web server, one for the reverse proxy [16:54] and I just want to update the reverse proxy with the ip addresses of the web servers [16:54] SuperMatt: right, so what you should have is the web server providing the http interface, and the reverse proxy requring the http interface [16:54] yes [16:55] SuperMatt: so the http interface relation on the app needs to [16:55] relation-set hostname=unit-get private-address port= [16:55] SuperMatt: and the proxy http interface relation needs to [16:55] relation-get hostname [16:55] relation-get port [16:55] inside of the hook, so that it can read those values [16:55] ok [16:55] so which hook? the relation-changed hook? [16:56] SuperMatt: it'd be easier to explain if you provided a paste of each of the metadata.yaml files [16:56] SuperMatt: then I could provide exact hooknames that it would happen in [16:56] http://paste.ubuntu-helpouts.org/9 [16:57] http://paste.ubuntu-helpouts.org/10 [16:57] the second is a modified version of the node-app we talked about yesterday [16:58] SuperMatt: okay, so on the nginx-hash site, you're going to have a hook called reverseproxy-relation-changed [16:59] got it [16:59] I assume that's where I do my magic to update nginx [16:59] SuperMatt: each relation has four events/hooks tied to them relation-joined, relation-changed, relation-departed, and relation-broken [16:59] sure [16:59] SuperMatt: yes, you'll also want to add a realtion-departed/broken hook logic to remove those values from nginx config as the relation no longer exists [16:59] makes sense [16:59] SuperMatt: we have an nginx-reverseproxy charm, if you want to use as a reference [17:00] I might check it out [17:00] I had to make my own anyway, because I had to compile in an extra plugin [17:00] SuperMatt: nevermind, we don't have a reverseproxy charm [17:00] hahaha [17:00] could have sworn we did [17:01] well I have a general idea of how to update the conf file [17:01] * marcoceppi may have confused with squid [17:01] the only thing I need is the list of IPs from the node-apps [17:01] SuperMatt: you can do that with relation-list actually [17:01] oh? [17:01] SuperMatt: so if you wanted to rebuild the file everytime [17:01] you could have the reverseproxy-relation-changed run relation-list to get a list of all the units [17:02] SuperMatt: then loop through those units and do a relation-get to that unit [17:02] * marcoceppi finds example [17:02] lemme show you what I have [17:03] http://paste.ubuntu-helpouts.org/11 [17:03] that's not by any means complete [17:03] SuperMatt: that's pretty much the idea [17:03] sure [17:04] but ip isn't set anywhere [17:04] I need to look up the relation-get syntax for specifying a unit [17:04] SuperMatt: you want to use hostname [17:04] http interface exposes `hostname` rather than ip [17:04] right [17:04] is hostname something that's set automatically by the unit? [17:05] marcoceppi, jcastro can someone give me the hangout for the gui vUDS now please [17:05] SuperMatt: no, it's something that the relation requries authors to set [17:05] happening now I mean [17:05] gary_poster, I just made the same mistake, check the time [17:05] it's lunch [17:05] SuperMatt: the assumption is all service will provide you with a port and a hostname [17:05] it just doesn't have a "lunch" session there [17:05] jcastro, oh! ok thanks [17:05] marcoceppi: ok, I'm beginning to understand [17:06] so when does the service set that? [17:06] relation-changed? [17:06] SuperMatt: relation-changed is the best time to do this [17:06] http://paste.ubuntu.com/6449144/ [17:06] ok [17:06] I think I get you [17:07] SuperMatt: since you're re-creating the file each time, you could symlink relation-departed and relation-broken to this file and then it'll update whenever a unit goes away [17:07] and that's your logic for updating when units get removed [17:07] I'm trying to ssh a unit in local environment and I get http://paste.ubuntu.com/6449146/ any suggestions? [17:07] but the thing I don't understand is, if both ends are running relation-changed at the same time, how does the reverse proxy know when the node has prepared all variables? [17:07] vds: don't use sudo [17:08] vds: only use sudo when you're bootstrapping and destroying a local environment [17:08] SuperMatt: they arent' running at the same time [17:08] oh [17:08] ok [17:08] I just assumed they were [17:08] SuperMatt: -changed will be run anytime there is a new data on the relation wire [17:08] marcoceppi, I'll try thanks [17:08] ok [17:08] I'll just give it a bash now [17:09] I think I have everything I need [17:09] SuperMatt: so what happens is, you add-relation and the -joined then -changed event will fire for each unit attached. Then if any of those two hooks added data -changed will be fired for the other side, -changed continues to fire on each side until there is no more new data being sent [17:10] I see [17:10] well fingers crossed, here goes nothing [17:13] marcoceppi, if I try to juju deploy without sudo I get http://paste.ubuntu.com/6449178/ [17:17] marcoceppi: your help has been indispensible throughout my trails and tribulations. For that, I thank you. [17:17] vds: something is wrong then [17:17] vds: destroy-environment, then make sure you .juju folder is recursively owned by you [17:18] then bootstrap/deploy again [17:18] marcoceppi, same result [17:19] vds: what version of juju? [17:19] vds: this is really a bug, you shouldn't be using sudo for commands other than bootstrap and destroy-env [17:19] marcoceppi, 1.13.2-raring-amd64 [17:20] vds: try upgrading to the latest, 1.16.3 and trying again [17:20] let's see what happens... === cmagina is now known as cmagina-lunch [19:30] jcastro: I was told you're the man to talk to about juju [19:30] :) === cmagina-lunch is now known as cmagina [20:18] InformatiQ, shoot! [20:18] I am ready! [20:18] BANG! [20:18] * thumper ducks [20:19] jcastro: well i was wondering about the adoption of juju, like who is using it, what environments, own charms vs cs [20:19] we're still in the early stages [20:20] we really didn't hit a production quality release until ~6 months ago [20:20] and for some people needing HA is still an issue which we'll address in 14.04 [20:20] but we use it in production and we have customers who do [20:20] Juju hasn't been included in an LTS yet so the adoption is still early-stages [20:21] who is your target customers profiles? [20:22] So right now the obvious one is anyone deploying and orchestrating on openstack [20:22] However I am not a product-ish guy, so right now I'm focused on developers and sysadmins [20:22] well amazon fits in quite well too [20:22] I don't have like a list of personas or anything we target offhand [20:23] oh yeah, amazon, hp cloud, and azure are all first class citizens [20:23] well i am just trying to understand where juju is going [20:23] it's just openstack has a bunch of deployment painpoints that we address nicely [20:23] oh so did you see the 2.0 roadmap video from today's UDS? [20:23] so developers write juju code and sysadmin run the juju infra? [20:24] haven't seen the video yet [20:25] well the idea is to bridge dev and ops [20:26] for example being able to deploy something when developing it in a way that is similar to how you would run it in production [20:27] ah you meant you care about them as your target users, ok [20:27] got that point [20:27] https://www.youtube.com/watch?v=ZjzImjEinB8&feature=c4-overview&list=UUyT3AcQaRx_yl1yYLa5ikXQ [20:27] is the video [20:27] oh for sure. [20:27] well yeah that is my day job, do ops and get devs involved [20:27] right, so the idea with dev charms in particular [20:28] like rails, or the django charm [20:28] is that a developer will straight away be deploying to instances [20:28] and he iterates in a way that can be deployed by ops [20:29] I made a joke once, "You ever deploy something from a developer where he hardcoded in `localhost`? That's what we're trying to fix." [20:29] so the local provider the guy is developing on uses the same cloud images you would use on say Amazon [20:30] and he can rev at his pace on his laptop, and then when he's ready redeploy it to AWS [20:30] or over to your internal hardware [20:30] we want to make it easy for people to shift workloads around in different clouds [20:30] yup, and make dev envs as colse as possible to prod [20:31] which might make a case for mking a juju local provider run on virtualbox for those devs using macs [20:31] but anyway [20:32] coming from a sysadmin and ansible background [20:33] the playbook is a living thing, it changes as your conf changes so next time you dpeloy it it is uptodate and configured) [20:33] while that doesn't seem like the workflow in juju [20:33] i know you can always fork and edit the charm [20:33] just was wondering what is the official view on that? [21:16] is anyone else using it with MAAS and having the issue where juju locks up because the maas api is throwing back "not authorized" errors? === CyberJacob is now known as CyberJacob|Away === CyberJacob|Away is now known as CyberJacob [21:55] InformatiQ, I think a charm is flexible to accomodate a dynamic playboook. It may be analogous to a git hub project branch that a charm pulls from (at any deploy that git branch could be updated, if not pinned). [21:59] zradmin, not sure how you were setting up but did you leave any of the fields blank when issuing "createsuperuser" [21:59] https://bugs.launchpad.net/ubuntu/+source/maas/+bug/1243917 [21:59] <_mup_> Bug #1243917: 'maas createsuperuser' errors out if no email address is entered. [22:21] jcastro: you around? [23:09] arosales: yeah, i have an email address in the superuser but nothing under Full Name, my bug seems to be related to this entry: https://bugs.launchpad.net/maas/+bug/1218997 [23:09] <_mup_> Bug #1218997: maas throws unauthorized sometimes for no reason [23:13] zradmin, can you confirm your clocks are within 5 minutes of each other? === CyberJacob is now known as CyberJacob|Away [23:27] arosales: yes, between maas & juju they are both on the same time, just different timezones [23:28] does date -u on both return the same time? [23:31] sarnold: I just ran it on node 0 and maas and they are both returning the same time [23:31] zradmin: cool, thanks [23:32] sarnold: no problem [23:32] zradmin, so it may not but be bug 1218997 your are hitting that roughly looked to be a clock sync issue [23:33] <_mup_> Bug #1218997: maas throws unauthorized sometimes for no reason [23:35] hmm . .. [23:38] zradmin, which version of juju and maas are you running? === freeflying is now known as freeflying_away [23:49] arosales: juju 1.16.3, MAAS 1.5.4 [23:51] zradmin, yup that looks recent [23:51] zradmin: what does the maas log say [23:51] in maas/juju [23:51] davecheney, hello [23:51] maas returns very terse errors to the client [23:52] for security reasons [23:52] but is usualy much more vocal in its own log [23:52] * davecheney waves to arosales [23:53] davecheney: it's filled with these errors http://pastebin.ubuntu.com/6450947/ [23:56] brilliant [23:56] can you generate a new user and try to authenticate with that user ? [23:59] oauth or just logon to the webpage