15:10:55 #startmeeting Core Team Meeting 15:10:55 Meeting started Thu May 26 15:10:55 2016 UTC. The chair is bcoca. Information about MeetBot at http://wiki.debian.org/MeetBot. 15:10:55 Useful Commands: #action #agreed #halp #info #idea #link #topic. 15:10:55 The meeting name has been set to 'core_team_meeting' 15:11:46 hello 15:12:00 Yo 15:12:03 sorry for late start, i forgot this is a bit early for the west coast guys and one of them ussually manages this 15:12:07 ^ one of those devils 15:12:21 abadger1999, nitzmahone gregdek rbergeron meeting time 15:12:23 #agenda https://github.com/ansible/community/issues/107 15:12:26 here 15:12:36 #chair newtMcKerr 15:12:42 #chair nitzmahone 15:12:49 #chair bcoca jtanner|t420 15:13:14 is this thing on? 15:13:20 first item https://github.com/ansible/ansible/pull/13145, lxc connection, we dropped ball on this, should have come up for 2.1, need someone to do final review and merge 15:13:25 * Qalthos 👋 15:14:06 * abadger1999 here 15:14:22 #chair Qalthos abadger1999 15:14:24 jtanner|t420: you have to be chaired before you can chair 15:14:28 ah 15:14:31 #action add agenda item for subsequent meeting for 'refreshing' attention on old PRs 15:14:37 chair me yo 15:14:48 #chair jtanner|t420 abadger1999 Qalthos 15:14:48 Current chairs: Qalthos abadger1999 bcoca jtanner|t420 15:14:57 who get a chair? 15:14:57 ^ action ? 15:14:59 #chair newtMcKerr nitzmahone 15:14:59 Current chairs: Qalthos abadger1999 bcoca jtanner|t420 newtMcKerr nitzmahone 15:15:06 chair me could mean different things 15:15:07 #chair Mic92 15:15:07 Current chairs: Mic92 Qalthos abadger1999 bcoca jtanner|t420 newtMcKerr nitzmahone 15:15:17 #sofa bcoca 15:15:20 especially if someone from MS is around 15:15:25 Mic92, anyone present+active 15:16:41 ^ last i looked, code looked good, just need some extensive testing 15:17:09 integration tests? 15:17:26 those help, but are not a requirement 15:17:40 we might want to create them to test this 15:18:05 I think it has a security hole 15:18:13 we recently ramped up our 'testing resources' so this might be something to look at 15:18:35 fetch_file and put_file have the same security problem we fixed for chroot/jail/zone 15:18:47 ^ def need to fix that 15:18:53 the temp race condition? 15:19:02 can you point to that? 15:19:12 bcoca: No -- symlink attack 15:19:37 yeah -- let me either try and find the commits that fixed the other plugins 15:19:56 github.com is unresponsive for me all of a sudden 15:19:58 once that is done, anyone want to test/create tests? 15:20:04 s/want/has time to/? 15:20:44 ah, my internet is flaking out ... i may drop for a bit 15:20:56 or since this early in 2.2 cycle we just merge and let users poke it? 15:22:16 the code of the plugin has been part of an independent project and has beed received some feedback from community 15:22:23 *crickets* ... 15:22:24 https://github.com/Mic92/ansible-lxc 15:22:41 ok, once abadger1999's security concerns are addressed, i'll queue in for testing it myself 15:22:47 Mic92: If you have a checkout... checkout the stable-1.9 branch and then do 15:23:05 git log -p lib/ansible/runner/conneciton_plugins/jail.py 15:23:13 I do have a quick question about the lxc connection plugin. We did just merge an lxd plugin, and it does use the lxc cli, is there any overlap or compatibility there? 15:23:35 commit: a431098fc5b6a8c619675b9cdf73c1c83232ee23 onwards have to do with the security bug and tweaks thereof. 15:23:39 we merged lxd? 15:23:48 lxd was merged a while ago 15:23:57 missed that 15:24:06 https://github.com/ansible/ansible/blob/devel/lib/ansible/plugins/connection/lxd.py 15:24:11 Apr 15 or so 15:24:29 mattclay: ^ 15:24:31 iirc reqs were diff, lxd required lxd running 15:24:41 So I am wondering if that plugin, since it utilizes lxc, can support lxc 15:24:47 while lxc does not 15:24:56 though both manage lxc instances 15:25:07 bcoca is right, the lxc cli client requires lxd 15:25:09 ^im fine with having both as long as the reqs are diff 15:25:55 mattclay: not sure that is true, i use lxc commandl line utils w/o lxd 15:26:07 #chair sivel mattclay 15:26:08 Current chairs: Mic92 Qalthos abadger1999 bcoca jtanner|t420 mattclay newtMcKerr nitzmahone sivel 15:26:30 bcoca: which one(s)? 15:26:33 and this module uses lxc python lib 15:26:38 and if there is enough similarity, should there really be 2? Can we make 1 do both? 15:26:53 lxc-create/stop/start and destroy mostly 15:27:00 bcoca: There's "lxc" (for lxd) and then there's the various lxc-* tools 15:27:12 oh, so diff utils 15:27:20 how does the lxd one interact with lxc? 15:27:21 in any case,t his plugin does not use either directly 15:28:07 Hmmm... if the infrastructure is the same, I think I agree with sivel that we should just have one. 15:28:39 afaik the lxd one requries everything the lxc one does but the reverse is not true 15:28:43 If there's difference i nthe infrastructure (one needds a daemon running and the other does not, for instance), then two plugins seems okay. 15:29:31 The current lxd plugin uses the "lxc" cli tool, which requires an lxd daemon. The same is not true for using lxc directly. 15:30:01 so weird :) 15:30:02 mattclay: did lxd ship with 2.1? 15:30:10 abadger1999: Yes 15:30:14 If it uses the cli it is probably slower because of extra processes 15:30:15 :-( 15:30:28 Maybe we want to get the lxc plugin in and deprecate the lxd plugin? 15:30:43 i think that might have been why i missed lxc plugin, confused with lxd initially 15:30:46 abadger1999: They're two different systems, we want both. 15:30:49 I know the lxc cli builds on liblxc, but not sure if you lose anything talking to lxd stuff without the daemon (lookup etc) 15:30:57 The current lxd plugin uses the "lxc" cli tool, which requires an lxd daemon. The same is not true for using lxc directly. 15:30:58 abadger1999: i see both as useful, lxd should work 'remotely' 15:31:03 For example, lxd allows controlling remote containers. 15:31:18 mattclay: Could you make those two statements jive in my head? 15:31:28 ah, okay. 15:31:44 apparently you use lxc to control lxd, but you don't use lxc to control lxc ? ;) 15:31:59 so +1 for lxc once security issues are addressed 15:32:09 sivel: You use lxc-* to control lxc. 15:32:19 sivel: lxc-commands vs lxc command line client 15:32:22 yeah, just not "lxc" no trailing utility name :) 15:32:29 Yeah, it's confusing. 15:32:33 ^ its nice they kept same name to keep maximum confusion factor 15:32:35 sivel: lxd came after lxc, they created an additional daemon to have a complement to the docker cli 15:32:44 Doesn't help that lxd builds on top of lxc containers. 15:32:53 lxc == system (but also cli for lxd, which is optional deamon) 15:33:33 So for anyone using lxd, having the lxd plugin is good. For anyone using only lxc, having an lxc plugin would be good. 15:33:41 ok, think we are all on same page and agree that 2 plugins are worth having when each has diff applications for diff contexts 15:33:47 15:34:02 * bcoca needs lxc mobious strip tshirt 15:34:10 bcoca, Mic92: Can we keep this on the meeting agenda to make sure it doesn't fall through the cracks for 2.2? 15:34:35 abadger1999: agreed, add for next meeting 're review plugin after symlink security issue is addressed' 15:34:44 Cool. 15:34:47 Mic92: you think next week is fine for that? 15:35:08 and again, i appologize for dropping this, thsi should have all happened pre 2.1 15:35:28 bcoca: I will have some time on the weekend to fix that, but I have not found corresponding fix in the jails plugin so far 15:35:47 Mic92: I'm going to portland for pycon tonight (and then in portland until the 8th of June) but you can feel free to ping me on irc -- I try to keep up with the backlog in #ansible-devel even when I'm ravelling 15:35:47 abadger1999: can you take post meeting with Mic92 and point him in right direction? 15:35:58 yep 15:36:03 ^ consider that a yes 15:36:26 ok 15:36:29 Mic92: If you're around today, I'll walk you through what we're doing in the plugins right now. 15:37:46 can we consider that done for now? next item? 15:37:55 https://github.com/ansible/ansible/issues/16008 15:38:06 yeah -- Mic92 just join #ansible-devel and we can talk this through there. 15:38:07 ^ jtanner|t420 foudn this while investigating other bug 15:38:08 #action abadger1999 to help Mic92 fix security vulnerabilities in lxc connection plugin after meeting 15:38:35 # action abadger1999 set item for future meeting to rediscuss lxc connection plugin 15:38:54 #action, learn how action works 15:38:57 ?? 15:39:05 #wefail 15:39:12 abadger1999: halp? 15:40:22 #action abadger1999 set item for future meeting to rediscuss lxc connection plugin 15:40:24 try tha tlast one again, but with a space immediately following '#action' 15:40:36 ^ broke down and read instructions, action does not give feedback in channel 15:41:25 #topic https://github.com/ansible/ansible/issues/16008 should we allow non string options or only for set_facts ? 15:42:02 bcoca: #action is silent 15:42:02 i'm torn here, i don't think modules should allow for 123=stuff options, but set_facts might need it here for yaml parity 15:42:13 i'm indifferent, but will fix if told to 15:42:38 How will you reference those facts later on? I get the hostvars[foo][23], but just accessing 23? 15:42:39 I've never liked keys not being strings. 15:42:57 i dont either, but its a yaml 'feature' 15:42:57 part of me thinks set_fact should allow the same things vars files allow ... but i've never really made use of non-string var names 15:43:19 ^ seeing no one has reported thsi problem, i don't think anyone has 15:43:30 Technically speaking dict keys can be effectively anything including int, but I don't think you can use {{ 23 }}, you would have to use hostvars or vars 15:44:01 {{ 23 }} woudl just print the int 23 in jinja2 15:44:01 sivel: agreed, not very practical but currently 'possible' if defined in yaml var 15:44:16 {{vars[23]}} should work 15:44:38 we COULD decide to warn/error if keys are not strings on import? 15:44:52 for all cases? 15:45:11 woudl requrie modifying yaml import 15:45:16 files, play vars, role vars, and set_fact? 15:45:30 include_vars and host/group vars 15:45:33 and yaml inventory 15:45:34 also set_fact with k=v would probably make that a string 15:45:41 sivel: it does 15:45:42 so just the yaml version of set_fact 15:46:24 what is catching the error right now is 'mod_args' parsing, which is options in general 15:46:37 i see a few options: 15:46:57 1) catch teh error gracefully and disallow all options from being anything other than strings 15:47:11 2) same as 1 but exception for set_fact for 'vars parity' 15:47:31 3) modify all vars imports to ensure this and make existing 'int' keys an error or at least deprecation warning 15:47:41 4) cast the key to string? 15:48:03 yes ...was typing a longer version of that 15:48:25 so i'm for 1 or 4, i can see 2 as an option 15:48:41 really dislike 3 as its very invasive 15:48:51 though i understand why people would want it 15:49:12 4) for jsut set_fact 15:49:13 4 would technically require fixing the args parsing the same as executor was, and then altering logic of set_fact 15:50:00 votes? opinions? no one except tanner and i care? 15:50:49 parse_kv is using to_unicode(non_string='passthrough'), and mod_args uses that in various places, but there is a ### FIXME: args should already be a unicode string 15:50:50 jtanner|t420: which solution do you favor? 15:51:19 alikins: so 5) always cast to string no matter what the action is? 15:51:25 4 ... but i would need to go look at what other assumptions may or may not be made about the type for var names 15:51:26 I vote for just allowing integers 15:51:50 sivel: so 2) 15:52:03 i suppose i do prefer 2 15:52:18 or whatever sivel just said 15:52:22 :) 15:52:29 sivel: or 6) allow all module options to be ints? 15:52:44 6 6 6 ! 15:52:47 bcoca: I would tend to enforce keys are always strings if possible 15:52:53 #2 didn't sound like "just allow integers" 15:53:07 sivel: its allow ints for set_facts 15:53:09 I think I am more for "fix that exception to just allow integers" 15:53:20 alikins, concern there is users not being certain how to address the string/int in their templates 15:53:23 so i'm with alikins 15:53:26 and not go down the rabbit hole 15:53:43 jtanner|t420: yeah, depends on if say {{ 21 }} dwim 15:54:13 sivel: {{ 23 }} woudl just print the int 23 in jinja2 hmm 15:54:26 I say, let people shoot themselves in the foot, using {{ vars[23] }} will work fine 15:54:33 "i set 21, so ... hostvars[inventory_hostname][23] or hostvars[inventory_hostname]['23'] ?" 15:54:40 s/21/23 15:54:47 no matter what we do that will still be a question 15:54:54 damn, I set 21, how did 23 show up? ;) 15:54:59 heh 15:55:06 sivel: taxes 15:55:06 that would be a severe bug 15:55:10 haha 15:55:33 so I am still for just let the user set what they want, and let them deal with accessing it 15:55:48 although there is the question of did someone really want an int? 15:55:54 but I don't think we can answer that 15:56:03 we can either let them do it, or force them into strings 15:56:09 i doubt it, that is why changing all keys to strings seems 'saner' to me 15:56:12 I say, just let them do it 15:56:14 if i did answer it, i'd probably be wrong in at least 3 different cases 15:56:17 I think I'm 1 or 4 15:56:39 but in the end, I doubt I'd do it 15:56:43 4) cast all keys to string? 15:56:44 so whatevs :) 15:57:03 i think we have majority there now, i'm goin for 4 also 15:57:19 yeah, 4 is making more sense than 1 to me too 15:57:29 #agreed fix by autocasting all keys to strings 15:57:37 very well 15:57:47 *all* keys? 15:57:55 keys, not values, yes 15:58:04 this[key] 15:58:06 i'll note it in the issue so i don't forget 15:58:14 jtanner|t420: thanks 15:58:26 we are out of time, i'll push rest of topics for next meeting 15:58:43 bcoca: what about this[key][key2] ? 15:58:44 #action bcoca carry over rest of topics to next meeting 15:58:49 what all types can keys in a playbook potentially be? ints? floats? bools? none? 15:58:54 Pricey: both keys should be strings 15:58:55 bcoca: note we said meetings would be 1.5 hours 15:59:10 bcoca: eek 15:59:13 abadger1999: missed that meeting? ... 15:59:24 Pricey: you do realize 2nd value is still dict 15:59:42 Pricey: though this change will not enforce key2 being one 15:59:51 just key, as it matches top level module options 16:00:06 i really fail to see use case for 'non string dict keys' 16:00:11 bcoca: sorry yes that was the distinction i was trying to make, whether it'd just be top level keys. 'all' sounded scary :) 16:00:14 alikins: I'd have to recheck but I think yaml allows things that don't make sense in python like keys can be lists and dicts... not sure how pyyaml handles that. 16:00:20 I don't tend to use this in ansible, but do in other python code, but I do sometimes use True/False/None as dict keys 16:00:28 Pricey: all mod_args keys 16:00:35 bcoca: gotcha, thanks for the clarificaotin. 16:00:57 just worried we might be artificially limiting something we don't really need to do 16:01:00 sivel: if you have a module options True=something or False=something ... i'm rejecting that module 16:01:34 ^ iknow its not in guidelines ... but we also dont specify 'thou shalt not kill' 16:01:37 well, not necessarily a module, and I'd probably set it via vars or vars file, and would use some statement, to select a value based on that 16:01:47 sivel: this is specifically for mod_args keys 16:02:00 yeah, just saying someone might try to do it with set_fact 16:02:13 and i'm fine with that not working for set_fact 16:02:14 but anywho, again, just making statements 16:02:28 making sure we see all the angles 16:03:15 sivel: agreed, that is why i brougt it up for meeting, i did not want to rule w/o considering possible uses that i could nto think of 16:03:50 since set_fact: k=v already coerces into strings ... i think there is good case for this being done for yaml syntax also 16:03:59 keep module internal parity over set_fact vars parity 16:04:40 ok, lunch here, had not calculated for 1.5h meetins (also not reflected in calendar) 16:05:03 Define a framework for getting detailed action feedback from modules (see azure/docker 'actions') <= next topic, i dont think 30mins is enough either 16:06:43 chouse, you around? 16:10:21 #info abadger1999 has looked closer at the lxc connectin plugin and does not think it suffers from the symlink vulnerability. Go ahead and test and merge! 16:12:19 Okay -- if both bcoca and chouse are not here I guess we can't talk about hte docker/azure and facts tickets. 16:12:25 #topic Open Floor 16:12:41 Anyone have something to say/a PR or issue they want to draw attention to? 16:13:29 #topic PyCon 16:13:46 This is just an FYI -- a number of us will be going to Pycon. 16:14:04 We have a booth and everything :-) 16:14:17 feel free to stop in and say hi if you're there. 16:14:31 i'll be arriving tomorrow and staying throughout the sprints. 16:14:53 Sprints are open to anyone, even if you didn't register for pycon. 16:15:21 abadger1999: I'm planning on being there for the sprints. 16:15:39 So if you're in the portland area and want to come harass me to review and merge something, or want to help develop ansible, please come on down :-) 16:15:49 mattclay, and nitzmahone will be there for Sprints as well. 16:16:07 #topic Open Floor 16:16:19 Anything else? 16:16:25 not from me 16:16:28 If not I'll close the meeting in 60s 16:16:39 just a congrats for 2.1 from me 16:16:47 woot 16:17:16 jhawkesworth: thanks :-) 16:17:48 #endmeeting