20:01:09 #startmeeting Server Working Group Weekly Meeting (2017-03-21) 20:01:09 Meeting started Tue Mar 21 20:01:09 2017 UTC. The chair is sgallagh. Information about MeetBot at http://wiki.debian.org/MeetBot. 20:01:09 Useful Commands: #action #agreed #halp #info #idea #link #topic. 20:01:09 The meeting name has been set to 'server_working_group_weekly_meeting_(2017-03-21)' 20:01:10 #chair nirik sgallagh mhayden dperpeet smooge jds2001 vvaldez adamw mjwolf 20:01:10 Current chairs: adamw dperpeet jds2001 mhayden mjwolf nirik sgallagh smooge vvaldez 20:01:10 #topic roll call 20:01:10 .hello sgallagh 20:01:11 sgallagh: sgallagh 'Stephen Gallagher' 20:01:27 morning 20:01:28 .hello mjwolf 20:01:29 mjwolf: mjwolf 'Michael Wolf' 20:01:33 .hello dperpeet 20:01:36 dperpeet: dperpeet 'None' 20:02:59 .hello smooge 20:03:00 smooge: smooge 'Stephen J Smoogen' 20:03:10 .hello vvaldez 20:03:10 vvaldez: vvaldez 'Vinny Valdez' 20:03:10 .hello jstanley 20:03:13 jds2001: jstanley 'Jon Stanley' 20:03:18 * mhayden can't make it today as he's at a conference with terrible wifi 20:03:29 vvaldez: :( 20:03:35 er, mhayden 20:03:47 * jds2001 must be going blind 20:04:10 .hello adamwill 20:04:11 adamw: adamwill 'Adam Williamson' 20:04:35 mhayden: That sentence probably could have stopped three words sooner with exactly the same meaning :-/ 20:06:33 #topic Agenda 20:06:44 sgallagh: summit last year was surpirsingly decent 20:07:01 I only had one topic on the agenda for today: jds2001 and dperpeet were going to summarize the meeting with the Cockpit team. 20:07:09 Did we have other topics to discuss? 20:07:33 adamw: Anything we might have to deal with for Alpha? 20:10:06 OK, I guess we already lost adamw to the void. 20:10:14 #topic Cockpit and Roles 20:10:20 jds2001, dperpeet: Please take it away 20:10:37 #link https://meetbot.fedoraproject.org/cockpit/2017-03-13/meeting.2017-03-13-14.03.log.html 20:10:56 so we met with the cockpit team, see link above 20:11:08 it was pretty productive, actually 20:11:43 and an intense discourse :) 20:11:53 Cockpit seems to prefer having API's to do things, we clarified that Ansible roles are really an API 20:12:02 and playbooks are the client of that API. 20:12:39 there are issues with getting notifications of change from Ansible, which is perfectly a valid concern. 20:13:10 due to the way a browser session works 20:13:12 also 20:13:26 and we're not looking to displace existing functionality was a big one. 20:13:34 (for example NM) 20:15:30 jds2001: we == Ansible in that sentence? 20:15:40 one part that wasn't entirely clear was how to weigh the different user stories 20:15:41 yeah 20:16:05 dperpeet: As in prioritize them? 20:16:10 not looking to displace existing functionality that NM with Ansible 20:16:47 er, sorry phone rang 20:16:53 well, priorities for one 20:17:11 but which functionality should be how comfortable to use et cetera 20:17:23 and how important is it to get notifications 20:17:24 ah 20:18:35 also, there were some misconceptions that it was not possible to obtain status from Ansible....really you can obtain anything you want from a running system without changing anything. 20:18:54 but you do have to poll obviously 20:19:18 there is no active notification as there is no daemon running on the system to provide it. 20:20:22 that’s usually true, most modules don’t have a ‘status’ equivalent (e.g. service or systemctl), but you can use ansible facts or a command to grab that 20:21:02 vvaldez: good modules would implement 'check' correctly ;) 20:21:10 jds2001: true 20:21:21 we'd have to see how that would integrate into the cockpit ui 20:21:23 jds2001: By which we mean: any modules produced by our team would require that for acceptance. Fair? 20:21:29 which usually responds to changes instead of doing polling 20:21:33 sgallagh: +1 20:21:38 sgallagh: +1 20:21:47 s/produced/used though 20:22:05 because I doubt we'd produce new ansible modules (though it certainly is possible) 20:22:11 Well, there's no *existing* daemon that can do this stuff, but I wonder if we might work ourselves into something else that's commonly on the system. SCAP perhaps? 20:22:32 * linuxmodder looks in 20:22:53 adamw: sorry, no, nothing i'm aware of for alpha right now. the remaining freeipa bug we downgraded to not-a-blocker. 20:23:11 sgallagh: ^ 20:23:27 adamw: quit talking to yourself, only crazy people do that :D 20:23:35 .fire jds2001\ 20:23:35 adamw fires jds2001\ 20:24:06 You missed :-P 20:24:47 one more comment on the "replacing" comment 20:25:18 we agreed not to replace the things already done in cockpit, e.g. using networkmanager to configure the network 20:25:33 that doesn't mean there couldn't be another cockpit package that also configures the network, but via ansible 20:25:57 dperpeet: That seems like a waste of effort. 20:26:05 I just pulled the networking example out of thin air 20:26:19 If we start having multiple ways to accomplish the same thing in Cockpit, it'll quickly become webmin and everyone will be sad again 20:26:20 I'm just saying there's no technical reason why they couldn't coexist 20:26:40 I think Cockpit should have a default way, so I agree with you 20:27:10 s/default/definitive/ IMHO 20:27:33 dperpeet: So, one case we need to come back to: NFS 20:27:48 As it stands, there is no existing API for managing NFS today. 20:28:12 yup 20:28:17 good candidate 20:28:40 especially if the module supports "status" 20:29:11 Well, that's part of the problem: it's actually hard to get NFS to tell you what it's sharing 20:29:37 You can't just read the /etc/exports, because that's only accurate as of the moment the service starts. After that, you can edit it as often as you like until your reload/restart 20:29:41 sgallagh: we can use the existing tools, which are obviously inaccurate 20:29:54 but it is what exists :/ 20:30:10 sgallagh: showmount -e 20:30:25 jds2001: That doesn't really work in NFSv4 20:30:34 well, there can be limits 20:30:36 Because it will only show you the mounts available to the user identity you present 20:30:43 to the accuracy... as long as we make that clear 20:30:58 there doesn't have to be magically more information 20:31:05 if something needs to change, then in the underlying tools 20:31:22 sgallagh: i havent much used NFSv4, but there should be some way to get the kernel's view of the world, no? 20:31:48 dperpeet: I guess we could always indicate to the user that the modification time of /etc/exports was more recent than when the service started... 20:32:05 jds2001: Ah, *should*. My favorite word... 20:32:05 sgallagh: i suspect that most people in the Real World(TM) don't use kerberized NFSv4 either. 20:32:32 jds2001: Except that's a major part of what we're fixing here :) 20:32:42 Our initial pass was meant to be Kerberized NFSv4-only 20:33:21 /me doesn't really want to rehash that decision 20:33:56 sgallagh, there is precedent for that 20:33:58 that's fine - so it's difficult/impossible to get real status. 20:34:27 dperpeet: Sorry, precedent for what? 20:35:03 sgallagh, indicate to the user that something may have changed (selinux enforce state can be changed after the next reboot for example) 20:35:12 /me nods 20:35:23 as long as we know that it's off, we don't necessarily need to know exactly what happened 20:35:28 of course it would be preferable 20:35:55 dperpeet: OK, so I guess the open question is: do we use an Ansible module to control the NFS state, or do we build a service that ansible (and Cockpit) will talk to that controls the NFS state? 20:36:24 I'd prefer *not* doing the latter, mostly because there is already effort in place for an Ansible module that is OS-independent 20:36:32 If we build a service, it will be rather NIH 20:36:37 NIH? 20:36:45 "Not Invented Here" 20:37:03 A perjorative term for making our own thing when other solutions exist 20:37:29 inserting extra layers shouldn't be done lightly 20:37:45 if there is an ansible module to control the state, I don't see why we couldn't use that 20:37:52 Right, if we insert extra layers, they shuold be as heavy as possible! 20:37:58 Viva OpenLMI~! ;-) 20:37:59 sgallagh, well put! 20:38:03 heh 20:38:14 let's invent our own config file format, just to make sure 20:39:14 dperpeet: it should be a binary config file! 20:39:16 YACF? 20:39:32 But seriously, is that where we're going to go? Stick with the ansible module as the implementation for Cockpit to use? 20:39:45 well, if there is one, cockpit can use it 20:39:51 (And with it, acknowledge that it means carrying an ansible client implementation on the machine) 20:39:54 but I would like to be clear on what that module will offer 20:40:00 to see if we can make it work in the ui 20:40:01 Or else automatically downloading the ansible client on first use... 20:40:10 (Yes, that's still my personal bugbear) 20:40:18 I haven't forgotten :) 20:40:21 sgallagh: right, and the py2 stack that currently comes with :/ 20:41:01 ideally we would fix up nfs to provide everything we need 20:41:17 dperpeet: Sorry, meaning what? 20:41:32 nfs server: proper system service with a dbus interface :) 20:41:37 * nirik notes there has been a lot of work on py3 ansible, but yeah 20:41:59 nirik: thats why i used the word "currently" :) 20:42:11 dperpeet: NFS is part of the kernel itself. The "services" are mainly support functions. 20:42:22 yeah, they could be put into a service :) 20:42:27 anyway, sidetracked 20:42:39 dperpeet: See Ganesha. That's basically what it is. 20:42:43 Also pNFS, IIRC 20:42:44 YetAnotherXML format 20:42:52 userland NFS is a disaster :/ 20:43:05 But that's not useful, because it's not the implementation we actually ship 20:43:25 jds2001: Whereas kernel NFS is merely a crisis. 20:44:16 I think we should do the nfs ansible role as a proof as concept, like we said 20:44:33 we can make it work and then we can always decide to do it differently for the next module 20:45:00 /me agrees 20:45:18 we should plan the "status" from the start 20:45:22 yes 20:45:28 but it doesn't have to be implemented in the first iteration 20:46:35 Honestly, parsing /etc/exports[.d/] and simply alerting the user if the service start time is older than the modification times is probably sufficient. 20:46:41 At least for a PoC 20:47:17 and cockpit has the ability to watch files 20:47:26 so that wouldn't require polling 20:47:42 which makes me happy :) 20:47:58 sgallagh: I agree, and we can certainly use different techniques to try and get a bigger picture as we iterate through it 20:48:13 vvaldez++ 20:48:13 sgallagh: Karma for vvaldez changed to 1 (for the f25 release cycle): https://badges.fedoraproject.org/tags/cookie/any 20:49:23 dperpeet: So the biggest potential complaint I can think of is adding ansible as a dep. 20:49:55 yeah, but that won't add the dependency for all of cockpit 20:49:58 But you know my recommended solution for that already :) 20:50:03 if cockpit-nfs needs ansible, so be it 20:50:23 dperpeet: No, but since we'd ideally want to ship cockpit-nfs by default, it's functionally the same. 20:50:28 (by default in Fedora Server, I mean) 20:50:48 sgallagh, for the record, what's your recommended solution? =) 20:51:20 dperpeet: lazy installation of needed packages. Don't install cockpit-nfs by default, but auto-install it the first time someone clicks on that tab. 20:51:46 sgallagh: no likey 20:51:50 yes, I'm sure we'll tackle software installation some time :) 20:51:52 and/or don't install ansible by default, but install it automatically the first time you need to effect a change with it. 20:51:56 sgallagh: what happens if that for some reason doesn't work? 20:52:10 clippy pops up? 20:52:15 /me snickers 20:52:29 jds2001: Well, there's nothing saying you can't *opt* to install things ahead of time 20:52:33 we'll get to that story sometime (not clippy) 20:52:43 I'm just saying that if we want to be lean-and-mean out of the box, that's a good way to do it. 20:53:15 sgallagh: I don’t know cockpit well enough, are there other lazy install components? I like this idea 20:53:16 it is, but if you're on a slow connection.... 20:53:30 (3 days later)..."what was I going to do again?" 20:53:53 vvaldez, jds2001 this is a long term feature wish that's not part of cockpit currently 20:54:05 ack 20:54:25 jds2001: I'm kind of working from the assumption here that if you're setting up NFS, you're not doing it over dial-up :) 20:54:39 sgallagh, daring assumption! 20:54:47 why wouldnt you be? 20:54:59 you want to set up a fileserver at home or something 20:55:05 jds2001: fair point, or a disconnected environment possibly 20:55:05 jds2001: Sorry, I don't mean you as the web client 20:55:12 anyway, I think we should make sure the scope and iterations of the ansible modules need to be written out a bit 20:55:23 I mean that even in a disconnected environment, you're probably running a local fast mirror 20:55:39 that should be true 20:55:40 And you wouldn't be *serving* NFS over dialup. 20:55:59 Or if you are, I'm willing to count you as the exception we don't optimize for ) 20:56:01 :) 20:57:09 dperpeet: OK, so what's our next step? 20:57:26 decide on what the ansible module should be able to do 20:57:38 in the first iteration and eventually 20:57:51 (design) 20:58:05 then we want a rough module 20:58:10 ansible that is 20:58:21 and then we implement a cockpit ui for that 20:58:41 these steps could be somewhat parallelized 20:58:48 we need a contract between ansible and cockpit at some point 20:59:29 that's why we want to decide on the functionality first, so we know what to expect 20:59:34 and can sync up on our needs 21:01:46 ok 21:01:59 So what is the very *first* of those steps? 21:02:26 Requirements? I think we have those 21:02:48 look at the design document and then start defining interfaces between cockpit and ansible 21:03:06 ok 21:03:30 jds2001: This is your baby: can you take that on? 21:03:53 jds2001, and coordinate with me for the cockpit site 21:03:54 side 21:04:04 I'll get a designer onboard also 21:04:12 for UX requirements 21:04:45 OK, we are over time. 21:04:48 sure, sorry.... 21:05:07 Everything begins to come together, at least... 21:05:21 Any last-minute thoughts? 21:05:31 Make Fedora Great Again! 21:05:34 * vvaldez runs away 21:05:59 none from me 21:06:06 that was uncalled for, I have nother else 21:06:11 /kick vvaldez 21:06:25 * vvaldez kicks himself 21:06:27 Thanks for participating, folks 21:06:30 #endmeeting