16:30:30 #startmeeting fedora_coreos_meeting 16:30:30 Meeting started Wed Sep 18 16:30:30 2019 UTC. 16:30:30 This meeting is logged and archived in a public location. 16:30:30 The chair is dustymabe. Information about MeetBot at http://wiki.debian.org/MeetBot. 16:30:30 Useful Commands: #action #agreed #halp #info #idea #link #topic. 16:30:30 The meeting name has been set to 'fedora_coreos_meeting' 16:30:35 #topic roll call 16:30:40 .hello2 16:30:40 .hello redbeard 16:30:41 slowrie: slowrie 'Stephen Lowrie' 16:30:41 .hello2 16:30:44 red_beard: redbeard 'Brian 'redbeard' Harrington' 16:30:47 dustymabe: dustymabe 'Dusty Mabe' 16:30:49 .hello2 16:30:50 jdoss: jdoss 'Joe Doss' 16:30:52 .hello2 16:30:54 rishi: rishi 'Debarshi Ray' 16:30:57 * jdoss waves 16:31:07 .hello lucab 16:31:08 kaeso[m]: lucab 'Luca Bruno' 16:31:55 #chair slowrie red_beard rishi kaeso[m] walters jdoss 16:31:55 Current chairs: dustymabe jdoss kaeso[m] red_beard rishi slowrie walters 16:32:10 .hello strigazi 16:32:11 strigazi: strigazi 'Spyros Trigazis' 16:32:20 .hello mnguyen 16:32:21 mnguyen_: mnguyen 'Michael Nguyen' 16:32:30 .hello2 16:32:31 ajeddeloh: ajeddeloh 'Andrew Jeddeloh' 16:32:46 #chair mnguyen_ strigazi 16:32:46 Current chairs: dustymabe jdoss kaeso[m] mnguyen_ red_beard rishi slowrie strigazi walters 16:32:53 .hello sinnykumari 16:32:54 ksinny: sinnykumari 'Sinny Kumari' 16:33:16 .hello2 16:33:17 jlebon: jlebon 'None' 16:33:25 #chair ajeddeloh ksinny jlebon 16:33:25 Current chairs: ajeddeloh dustymabe jdoss jlebon kaeso[m] ksinny mnguyen_ red_beard rishi slowrie strigazi walters 16:34:02 #topic Action items from last meeting 16:34:10 * bgilbert to update #159 to add doc item for immutable '/' 16:34:47 .hello2 16:34:47 bgilbert: bgilbert 'Benjamin Gilbert' 16:35:16 #info bgilbert added ` Immutable root directory (#270)` to the list of items to document in #159 16:35:22 thanks bgilbert for doing that 16:35:22 +1 16:36:15 #topic Ignition: Support multi part mime for user-data 16:36:24 #link https://github.com/coreos/ignition/issues/849 16:36:44 we punted on this discussion last week because our good friend ajeddeloh was not around to take part in the discussion 16:36:51 * ajeddeloh waves 16:37:13 for some background some of our OpenStack Magnum friends (/me waves at strigazi) are evaluating FCOS for use as the base for Openstack Magnum 16:37:22 they used Fedora Atomic Host in the past 16:37:50 and f29ah atm :) 16:37:51 I believe the request here is to support mutli-part MIME input for the user-data to an instance 16:38:34 this would allow for ignition to parse and use some of the user-data and other applications to parse and use other parts of the user-data 16:39:09 I believe the application in question right now that wants to take advantage of this is openstack heat templates ? 16:39:17 yes 16:39:22 the issue is 16:40:13 heat (the orchestration service like cloud formation), appends some credentials in json format to the user's passed user_data 16:40:24 repeating just so I'm clear exactly what the idea is: the userdata supplied would contain multiple types of userdata, including an ignition config. 16:40:42 ajeddeloh: that is my understanding - strigazi, is that correct? 16:40:43 ignition would use only the ignition part and ignore the rest 16:40:54 strigazi: to be completely clear, the user does not supply multipart data, right? the system does that behind their back. 16:40:55 for our use-case, one igniton config + a json that needs to be written in the fs 16:41:31 bgilbert: unfortunately yes, the user can even pass multipart but the server will add one more part 16:42:01 strigazi: hmm. is that use case in scope here? 16:42:32 and each part is standalone? i.e. no splitting an ignition config across parts 16:43:03 ajeddeloh: yeah I wouldn't think we'd want to support multiple ignition config fragments 16:43:06 if we treat the server (heat) as a user, from ignitions pov it is I guess? 16:43:07 strigazi: i know this has been outlined in the scope of Magnum (hence the concerns around heat). Would you foresee this having benefits around atoption of FCoS for use with Kolla? 16:43:42 the ignition config would be only one 16:43:52 strigazi: what I'm asking is: would it be acceptable for us to explicitly reject userdata that contains more than the Ignition config + heat-injected part 16:44:11 strigazi: the implementation effort isn't the issue. the issue is the principle that Ignition is the sole source of configuration for the machine 16:44:36 (imo) 16:44:44 bgilbert: but does this proposal change that? 16:45:10 to me this looks like ignitions is still soruce of config for the OS but user-data is being used to provide some info to the app that runs on top 16:45:11 if users expect to be able to pass N parts, where N-1 parts are input to $OTHER_CONFIGURATION_SYSTEM, yes 16:45:19 There's two parts I think: getting ignition to read multipart to find it's config, and what to do with the second part 16:45:34 bgilbert: to clarify, you mean the idea that 1) FCoS is a component of building distributed systems 2) in a distributed system there should only be a single source of truth for a fact and thus 3) .... (what you just said re: $OTHER_CONFIGURATION_SYSTEM) 16:46:05 red_beard: that's slightly more general than I was thinking, but yes 16:46:15 red_beard: the Ignition config should completely describe the customizations to an FCOS system 16:46:20 I think it's reasonable for ignition to know how to read it's userdata out of a multipart thing, but it shouldn't do anything with the other parts 16:46:35 ajeddeloh: agreed about the "other parts" thing 16:46:55 strigazi: how is the heat-specific part normally processed now? does the heat agent read userdata directly? 16:46:57 similar to how ignition reads user data on clouds, but does not read the clouds ssh heys 16:47:14 ajeddeloh: bgilbert let me fetch a small example 16:47:54 while we wait.. does openstack heat configure the OS? I don't know much about it 16:49:02 dustymabe: it _can_, which makes it worse 16:49:16 because (as with any similar mechanism) if someone can use it, they will use it 16:49:40 MCO anyone ? 16:49:43 :) 16:49:59 we break our own philosophy right there 16:50:22 yeah, so let's not do it more often :-) 16:50:45 there are other platform agents that also like to help configure the OS. which is one of the reasons why, in general, we have a policy against platform agents :-/ 16:50:59 +1 16:51:13 ehh, it's a bit arbitrary to allow it for openshift and not openstack IMO 16:51:23 strigazi: got that small example? 16:51:35 dustymabe: users are allowed to run whatever they want in containers 16:51:46 dustymabe: and talk to their own metadata services, etc 16:51:47 dustymabe: IMHO openshift shouldn't be doing it. it's an anti-pattern. 16:51:56 dustymabe: but we don't encourage it 16:51:56 I don't disagree 16:51:59 red_beard: +1 16:52:27 couldn't find dustymabe couldn't find it, to generate the parts. :( I can post in the issue 16:52:45 but it's also a long way from being my circus or my monkey in the case of RHCOS 16:53:02 ok so let me see if we can reign this conversation in 16:53:22 in this case we have a platform that wants to pass some data to an app that is running on top of FCOS via the user-data mechanism 16:53:48 normally apps could pull their data from a URL somewhere and be fine, but in this case the platform has chosen to re-use user-data 16:53:52 so we could 16:53:58 1. change the platform 16:54:09 2. support multi-part mime input and ignore non-ignition input 16:54:41 does that reflect reality ? 16:54:50 strigazi: does the heat agent read userdata directly, or is the request for Ignition to copy the other parts out somewhere? 16:54:50 I think yes 16:55:06 bgilbert: the heat-agent does not read user data/ 16:55:19 strigazi: so it wants ignition to write it to a file somewhere ? 16:55:27 dustymabe: yes 16:55:31 ehh 16:55:39 so here is where I am 16:55:58 I tried to make ignition write that file. 16:55:59 I support #2 but not special casing writing out files of other types of MIME data 16:56:00 strigazi: and it can't just add that to the Ignition config, because it doesn't want to have to understand Ignition + cloud-init + ... 16:56:11 If anything I think that fits more with afterburn, not ignition 16:56:19 dustymabe: ++ 16:56:21 ajeddeloh: oh, hmm 16:56:56 strigazi: couldn't the heat agent ship something (e.g. another unit) which reads userdata itself? 16:57:01 *systemd unit 16:57:04 bgilbert: yes, (also developement is bit stale in the project (heat)) 16:57:14 strigazi: you say you tried to make ignition write that file ? what issue did you hit ? 16:57:54 dustymabe: the credentials required by the agent are generated after I do a POST to the server and I can not access them 16:58:20 so you can't access the contents of the file in order to do the write ? \ 16:58:51 so, I pass an ignition json file as user_data, and the server takes that puts it as part together with the required creds 16:58:57 dustymabe: yes 16:59:03 strigazi: ok 16:59:06 strigazi: right, the proposal was more that heat itself would append to the Ignition config 16:59:11 here is a possible solution: 16:59:23 we implement #2 where ignition completely ignores non ignition bits 16:59:23 would also be possible for your Ignition config to write a unit which itself curl's userdata 16:59:33 bgilbert++ 16:59:33 dustymabe: Karma for bgilbert changed to 10 (for the current release cycle): https://badges.fedoraproject.org/tags/cookie/any 16:59:38 that's what I was going to ask 16:59:48 so we make ignition ignore non ignition MIME data 17:00:05 and then you can write a unit that will read the parts of the user-data you want and write it to the file you want 17:00:11 would also be possible for your Ignition config to write a unit which itself curl's userdata, that wouldn't work 17:00:21 why not? 17:00:37 that's also something that could go in the platform base config if it's universally needed (not sure exactly if that would work given the large number of openstack variants) 17:00:58 oh, wait, if ignition reads multipart and takes into account only ignition config, yes, it would work 17:01:20 (altough we can, I wouldn't drag Afterburn into this as the logics seems very specific to the specific agent, so it can be confined there fully) 17:01:21 so basically we make ignition be more tolerant, but not special case anything 17:01:37 at a minimum, Ignition should do this only on OpenStack 17:01:44 right 17:01:55 why? 17:02:02 to avoid encouraging the practice 17:02:26 I'd say using user-data to pass info in to apps could be legitimate 17:02:36 if they don't have any other way to pass information to the app 17:02:47 but I guess they should embed that in ignition 17:02:48 it is! that's what the Ignition files section is for :-) 17:02:49 yup 17:03:03 so it's mostly a "platform" problem 17:03:30 strigazi: maybe this seems strange from your perspective. the general idea is that, if I have an Ignition config, I can use it to exactly replicate a machine, without any other outside info 17:04:02 bgilbert: it is not, I agree. We just can't get around it 17:04:03 if a machine is defined by several different things, it's a lot harder to tell what the result will be, or to replicate it 17:04:29 #proposed to support the openstack heat use case we can make ignition support multi-part mime user-data where ignition will ignore any non ignition parts. users can then parse the other parts and pass that information to openstack heat 17:04:35 dustymabe: wait one 17:04:39 oops 17:04:42 k 17:04:50 there is also the problem of defining a lifecycle for such userdata. If it is only Ignition, we know that changes won't affect a node after the first boot 17:05:02 we can consider that the machine is defiled by igntion only. What happens after is up to the user? 17:05:29 strigazi: sure. we encourage users not to change the machine after, but they're free to 17:05:31 kaeso[m]: good point.. does the openstack heat info change over time? 17:06:23 user_data are immutable in openstack, a change in user_data causes machine replacement 17:06:30 +1 17:06:33 +1 17:06:38 and, again, is the issue just the heat-injected credentials? can we intentionally disallow other user-provided parts? 17:06:51 it would work for us 17:06:56 (it's always possible to allow more things later. it's impossible to forbid more things later) 17:07:19 +1 17:07:38 should i make any changes to the proposal? 17:07:53 bgilbert: you know that will only drag people to use the heat mime-type for everything else :) 17:08:18 okay, I'm +1 to allowing multipart for OpenStack only, accept the Ignition config, ignore exactly one instance of the heat-injected part, and fail if we see anything else 17:08:27 +1 17:08:34 hmm 17:08:48 so we are special casing specifically the heat-injected part ? 17:08:52 yes 17:09:08 dustymabe: the nice thing about being strict is that if we're wrong we get bug reports :-P 17:09:11 sounds like their platform changes in the future and we have to then change ignition 17:09:50 I don't typically like hardcoding things for specific platforms in code, but I guess ignition already does that 17:10:14 honestly if we're going that far then we might as well write the file to the right location 17:10:15 I wouldn't expect changes in heat's side. 17:10:32 strigazi: is there a well-defined path for the heat part? 17:10:35 (destination path) 17:10:46 yes, one moment 17:11:01 this is running long and there is another topic I want to get to 17:11:35 dustymabe: I'm -0.something to writing the file, but we can discuss that offline if you'd like 17:12:11 Lets discuss the exact details in the ignition ticket 17:12:31 #proposed to support the openstack heat use case we can make ignition support multi-part mime user-data on the openstack platform only. discussion will continue in the ticket on how targeted to heat the support will be 17:12:53 ack/nack? 17:12:56 here /var/lib/cloud/data/cfn-init-data 17:13:03 dustymabe: +1 17:13:05 ack 17:13:35 #agreed to support the openstack heat use case we can make ignition support multi-part mime user-data on the openstack platform only. discussion will continue in the ticket on how targeted to heat the support will be 17:13:40 strigazi: thanks for your patience 17:13:49 #topic coreos/toolbox v2 17:13:55 #link https://github.com/coreos/fedora-coreos-tracker/issues/38 17:14:06 ok we discussed this last week in the meeting 17:14:26 rishi: has nicely provided us some new rpms to test out to evaluate dependency additions 17:14:48 walters wanted to further a side discussion about the direction of toolbox 17:14:53 before moving forward 17:15:06 walters: can you frame the discussion and give us some background ? 17:15:47 #info toolbox future direction discussion ticket: https://github.com/debarshiray/toolbox/issues/265 17:16:53 * dustymabe reads that ticket 17:17:22 * rishi is around 17:17:51 ok so it looks like the discussion is centered around future programming language direction 17:18:02 walters has a good point between the lines there, which is: growing/forking another container runtime is not a good thing 17:18:07 rishi: you would like to rewrite toolbox from bash into Golang? 17:18:49 dustymabe: /usr/bin/toolbox is currently POSIX shell, and POSIX shell is a bit limiting as a programming environment. :) 17:18:51 and it looks like the link to coretoolbox shows it is written in rust 17:19:15 The script has worked surprisingly ok so far - we don't get too many bugs from it, but it does make it hard to hack. 17:19:29 rishi: +1 - lots of shell code can get unwieldy 17:19:39 Yeah, it's more than 2000 lines already. 17:20:04 rishi: so are you planning to vendor libpod when you rewrite or are you planning to just use Go, but shell out 17:20:14 the reason I ask is because I think it matters how big toolbox is 17:20:33 podman is already large on our system and if toolbox grows large it's not as nice IMHO 17:20:41 dustymabe: Shelling out from Go, or vendoring in libpod into a Go frontend - both are possible. 17:20:59 rishi: what do you anticipate will be the size difference between those two options? 17:21:12 I, personally, want to keep the door open to re-evaluate and switch to a different approach if one doesn't work out for some reason. 17:21:40 CL toolbox is 81 lines. /me wonders what happened 17:21:46 But I am a bit biased in favour of Go, simply because the entire OCI ecosystem is Go. 17:22:21 rishi: regarding go vs rust - I'd say you (and other contributors) are the authors of the code 17:22:22 The Toolbox front-end code isn't that big, so asking contributors to learn both Rust and Go (because you will end up poking at Podman sooner or later) seems like a needless hurdle. 17:22:36 so it's up to you 17:22:54 unless you think that merging with colin's POC would give you some new contributors 17:22:56 +1 to just shelling out. ISTM like toolbox should just be a thin layer on top of existing tools 17:22:59 It seems wise to stay aligned with Podman and friends. 17:23:16 dustymabe: Regarding size ... 17:23:34 Maybe mheon can chime in. I see that /usr/bin/podman is 51M (!) today. 17:23:48 we've looked into reducing that, but Go does not make it easy 17:24:09 No idea how much of that we could cut out - the Toolbox frontend would be simpler than Podman in some sense. 17:24:14 static linking plus an ecosystem of heavily interdependent libraries are not friendly to binary size 17:24:22 :) 17:24:35 ok we're running short on time. I think I have a proposal 17:24:43 I haven't been following toolbox work. anyone have a little bit of background on why this is an issue? 17:24:47 again, CL toolbox is tiny 17:24:58 is it growing additional features? 17:25:33 bgilbert: There's a desire to unify the SB and COS toolboxes. 17:25:54 The SB toolbox has a few more things, since it's mostly a development tool. 17:26:25 #proposed regarding golang vs rust that is up to the author of toolbox. we do care about size, however, and thus if Golang is chosen we prefer that we don't vendor libpod, but rather either shell out or use the varlink API to manage containers. 17:26:53 jlebon: There are some drawbacks to shelling out though. 17:27:37 Handling errors becomes tricky. Can't do fancy progress bars and what not. Plus the fact that Podman can change underneath. 17:27:49 dustymabe: "about size and exploding the number of container-runtime implementations" 17:28:09 The idea of being in charge of the full stack and QE:ing it in one shot, and being able to cherry-pick a libpod fix and release quick update, seems tempting. 17:28:35 kaeso[m]: as a libpod developer, i'm not terribly concerned by that as long as they use libpod - Podman is mostly intended to be a very thin layer over the libpod library 17:28:53 But then that comes at the cost of a massive binary. If the binary size is a real deal breaker for CoreOS, then I guess we'd have to ditch vendoring. 17:28:59 kaeso[m]: changes to the frontend aren't particularly significant in my eyes, so long as the backend code remains the same 17:29:21 rishi: I'd really prefer podman not vendor libpod - shared maintenance of podman would be better IMO 17:30:06 it's better if you help maintain podman than maintain things yourself.. a lot less work 17:30:18 WDYT? 17:30:24 dustymabe: Well, the libpod/cmd/podman doesn't seem to be a lot. The real issue is the binary size, which I totally understand. 17:30:33 +1 17:30:43 ok we're over time 17:30:47 *the libpod/cmd/podman code 17:30:51 kaeso[m]: you had a proposed change to my proposal? 17:31:14 I’m AFK at the moment, will read scrollback a bit later 17:31:43 dustymabe: yes, just a small addition about duplicated/vendored logic 17:32:15 #proposed regarding golang vs rust that is up to the author of toolbox. we do care about size and exploding the number of container-runtime implementations. If Golang is chosen we prefer that we don't vendor libpod, but rather either shell out or use the varlink API to manage containers. 17:32:31 better? 17:32:40 SGTM 17:32:46 ack/nack? 17:33:20 ack 17:33:31 no nacksss.. 17:33:36 +1 17:33:38 #agreed regarding golang vs rust that is up to the author of toolbox. we do care about size and exploding the number of container-runtime implementations. If Golang is chosen we prefer that we don't vendor libpod, but rather either shell out or use the varlink API to manage containers. 17:33:47 #topic open floor 17:33:57 anything important for open floor? 17:34:00 https://github.com/coreos/mantle/pull/1046 merge me! 17:34:05 i'll close out in 30 seconds if not 17:34:14 jdoss: :) 17:34:16 that's on me 17:34:24 will look at it soon I promise this time 17:34:27 :) Thanks! 17:34:28 thanks bgilbert dustymabe ajeddeloh everyone 17:34:42 #endmeeting