18:09:14 <abadger1999> #startmeeting Ansiblefest: Galaxy 18:09:14 <zodbot> Meeting started Mon Oct 1 18:09:14 2018 UTC. 18:09:14 <zodbot> This meeting is logged and archived in a public location. 18:09:14 <zodbot> The chair is abadger1999. Information about MeetBot at http://wiki.debian.org/MeetBot. 18:09:14 <zodbot> Useful Commands: #action #agreed #halp #info #idea #link #topic. 18:09:14 <zodbot> The meeting name has been set to 'ansiblefest:_galaxy' 18:09:47 <mattclay> gregdek: Start Blue Jeans recording. 18:09:51 <abadger1999> #chair alikins gregdek tima 18:09:51 <zodbot> Current chairs: abadger1999 alikins gregdek tima 18:10:02 <abadger1999> #chair mattclay willthames jhawkesworth_ 18:10:02 <zodbot> Current chairs: abadger1999 alikins gregdek jhawkesworth_ mattclay tima willthames 18:10:34 <jhawkesworth_> etherpad for this session: https://etherpad.openstack.org/p/ansible-summit-october-2018-galaxy 18:10:36 <abadger1999> #link https://etherpad.openstack.org/p/ansible-summit-october-2018-galaxy 18:18:22 <felixfontein> what's the link to the mentioned statistics? 18:19:00 <abadger1999> jtanner: ^ 18:19:08 <abadger1999> #chair felixfontein jtanner 18:19:08 <zodbot> Current chairs: abadger1999 alikins felixfontein gregdek jhawkesworth_ jtanner mattclay tima willthames 18:19:28 <abadger1999> tanner is looking for the link 18:19:58 <felixfontein> thanks! 18:20:13 <abadger1999> #action jtanner to publish a link to the gathered statistics 18:22:43 <jtanner> http://tannerjc.net/ansible/galaxy.html 18:25:24 <jtanner> example https://github.com/jctanner/mazer-example-1 18:26:32 <alikins> https://galaxy-qa.ansible.com/testing/ansible_testing_content 18:26:43 <alikins> https://github.com/atestuseraccount/ansible-testing-content 18:27:48 <alikins> https://github.com/ansible/mazer/tree/devel/tests/ansible_galaxy/collection_examples/hello is a 'hello world' example 18:31:52 <alikins> https://gist.github.com/alikins/d09e34e68af2b7573b60f917b37846b4 example of the 'built' artifact 18:36:40 <abadger1999> Talking with nitzmahone, this import looks like it needs to be changed: https://github.com/atestuseraccount/ansible-testing-content/blob/master/modules/newmodule.py#L13 but I'm not sure if the final location has been determined yet. 18:40:46 <tima> #info we are not abandoning the traditional role format 18:42:03 <defionscode> #info versioning is staying at the repo level; subcomponents of a collection will not be independently versioned 18:42:05 <tima> #info we will version at the collection level. each piece of content will *not* have their own individual version number. (that would be insane) 18:42:14 <defionscode> ha 18:44:46 <abadger1999> #info packaging roles/content via mazer will be able to have versioned content 18:45:18 <bearrito> upgrade++ 18:45:30 <defionscode> force push tags...ew 18:46:26 <tima> #info migration guide and tool for going from traditional roles to content collections. 18:46:50 <tima> right @deficonscode 18:48:03 <defionscode> geerlingguy: i imagine you'd have quite a bit of work to do, probably? 18:48:28 <geerlingguy> yeah... 18:48:43 <geerlingguy> maintaining 100% roles in two different repos? 18:48:47 <geerlingguy> 100+ I mean 18:49:27 <defionscode> no sweat, right? (╯°□°)╯︵ ┻━┻ 18:49:48 <bcoca> just create a role that manages that 18:50:15 <geerlingguy> I already have enough shell scripts to manage all the deprecation changes I have to deal with across all those roles :P 18:50:50 <tima> #info collection == repo 18:50:53 <bcoca> no collection of collections? 18:51:01 <bcoca> submodule/subfolder/subrepo 18:51:28 <geerlingguy> git submodules-- 18:51:40 <geerlingguy> also, I still don't quite get the use case for collections—they sound not-composable 18:52:02 <bcoca> ^ that is why collection of collections question, the workaround we all hate (submodules) 18:52:06 <geerlingguy> e.g. I have 35 different ways I build a webserver that uses Apache... each one uses 5-10 roles, but all have different set of roles 18:52:24 <geerlingguy> I would love to have a collection that says "here are 3 roles specific to this collection, plus grab 7 other roles from Galaxy" 18:52:38 <bcoca> dependencies 18:52:39 <geerlingguy> but not have 35 collections that all have tons of git submodules to manage 18:53:04 <geerlingguy> so collections _can_ have deps? 18:53:52 <defionscode> geerlingguy: I'll add to that, _can_ they have deps...and will deps behavior be staying the same? I mean you could presumably have deps on collection, no? 18:55:09 <bcoca> or you would need to interject a 'fake role' that just lists dependencies for that collection 18:55:25 <geerlingguy> that sounds hacky and annoying :/ 18:55:28 <bcoca> but that is a hack, imho 18:55:36 <geerlingguy> also an icky .json file... :O 18:55:38 <defionscode> yeah 18:55:48 <geerlingguy> you got JSON in my YAML! 18:55:59 <bcoca> he, not meant to be human read/edited 18:56:04 <geerlingguy> true true 18:56:16 <bcoca> and for 'web' its easier being json 18:58:24 <tima> #info need to scan/check/warn of variables coming from multiple roles. 18:58:37 <geerlingguy> is it possible we could have a way for one repo (e.g. a role) to drive both mazer and galaxy? I'm a little confused by what happens if e.g. I want to push geerlingguy.apache and support Ansible 2.6 and 2.7-mazer (or whatever version mazer comes in) 18:59:01 <geerlingguy> I like the idea of unchangeable release archives a lot, wish that were how git tags were handled on existing galaxy 18:59:32 <tima> @alikins ^^^ @chouseknecht 19:01:20 <bcoca> that could be done via git archive on import 19:02:09 <bcoca> -10 19:02:22 <bcoca> i expect to erase at least 10 dep solvers 19:03:11 <geerlingguy> also our poor CPUs. ansible-galaxy is so lightweight. I imagine we'll be like npm or composer, using gigabytes of ram building the graph 19:09:00 <geerlingguy> Maybe 3.0 would be a clean time to switch things to mazer-driven? 19:09:15 <abadger1999> geerlingguy: I think we want it sooner. 19:09:21 <geerlingguy> Fine to intro sooner 19:09:36 <abadger1999> Or put in the other way, That would be too soon for 3.0 ;-) 19:09:39 <geerlingguy> but I mean like switch to "this is the only really supported way—others are deprecated" 19:10:00 <defionscode> as in deprecate 'old galaxy' style 19:10:05 <geerlingguy> exactly ^^ 19:10:07 <abadger1999> Also, I'm not sure that this deprecates anyhting that is actually in core ansible. 19:10:27 <geerlingguy> not in core ansible, but in 'the way things work' in terms of roles, dependency management 19:10:30 <abadger1999> it deprecates how to build content for galaxy.. but I don't think anything goes away in ansible itself. 19:10:31 <bcoca> the plan is to deprecate current ansible-galaxy 19:11:23 <abadger1999> <nod> that's probably not a 3.0 worthy change. 19:12:01 <abadger1999> (But I would say actual removal should probably be one of those long deprecation cycles I talked about earlier) 19:13:15 <geerlingguy> I'm just thinking that since galaxy and ansible are so closely linked, trying to radically change the way deps are handled without a major ansible version change (even if ansible core itself doesn't require major changes) feels... weird 19:13:52 <bcoca> current role dependencies are really both 'install' and 'runtime' things, collections would be separating these 19:14:08 <bcoca> you'll have 'install' deps .. runtime will depend on runtime refs, instead of mixing both 19:14:30 <bcoca> though we might want the tool to generate the former from scanning the latter 19:15:29 <geerlingguy> Is mazer going to be 'ansible-galaxy' in the future? Or separate completely? 19:15:46 <defionscode> i understand it as its successor... 19:15:48 <geerlingguy> like will you have to install it after a `pip install ansible` (eventually) 19:16:21 <abadger1999> Sounds like undecided but both alikins and nitzmahone want it to be. I'm not sure though, it does feel like a separate thing. 19:16:32 <abadger1999> Although if pip install ansible is the target.... 19:16:42 <abadger1999> Perhaps ansible's requirements specifying mazer? 19:16:48 <geerlingguy> I feel like even if separate, it should be a requirement 19:17:06 <abadger1999> (this is just my own thought.... nitzmahone and alikins are much closer to this) 19:17:16 <defionscode> yeah as a req would make sense 19:17:31 <willthames> not necessarily - ansible-galaxy could just say "please install mazer" if it's not installed 19:18:03 <bcoca> i suspect, short term its diff project, once it gains traction it will be merged into core and eventually replace ansible-galaxy 19:18:08 <abadger1999> req feels right to me as installing ansible could then get the tool that users would need but it could develop on its own faster or slower schedule. 19:18:08 <geerlingguy> that introduces a little friction (imo) but wouldn't be the worst thing 19:18:29 <geerlingguy> If it were up to me, I vote for adding it as a requirement :) 19:18:34 <abadger1999> :-) 19:18:41 <defionscode> abadger1999: but would the req be pinned? seems like you'd keep it as latest? 19:19:14 <geerlingguy> also someone needs to do a blog post talking about the name 'Mazer' 19:19:21 <geerlingguy> another chapter in the history of Ansible lore :P 19:19:51 <abadger1999> That's a good question. I'd kinda want latest but as long as mazer is developing faster than ansible, it probably needs some sort of maximum mazer version. 19:20:07 <abadger1999> (as mazer may need support from within ansible for some htings) 19:20:21 <defionscode> in ender's game I suppose 'The ansible' did predate Mazer since he led teh first super battle against the aliens 19:20:41 <abadger1999> #chair retr0h 19:20:41 <zodbot> Current chairs: abadger1999 alikins felixfontein gregdek jhawkesworth_ jtanner mattclay retr0h tima willthames 19:20:48 <abadger1999> #topic Molecule! 19:20:50 <defionscode> abadger1999: at the same time im thinking for folks that may want/need to upgrade mazer independent of Ansible 19:20:56 <abadger1999> Yeah. 19:21:03 <abadger1999> That was my thought at first 19:22:50 <abadger1999> We could abuse mazer's versioning I suppose. 19:23:34 <bcoca> eventually i expect it to merge back into core, it makes little sense to include ability to install pip/rpm/npm but not ansible content in basic ansible 19:23:51 <bcoca> but as a project that is rapidly evolving, its fine as an outside thing for now 19:23:56 <abadger1999> mazer version X works with ansible-2.8+ so ansible 2.8's requirement on mazer is mazer<2.9 19:24:17 <bcoca> abadger1999: but mazer requries ansible ... 19:25:15 * abadger1999 wonders if pip can do circular deps (and then wonders if mazer will be able to do circular deps ;-) 19:25:24 <abadger1999> Oh the fun things I remember from yum code... 19:25:36 <bcoca> hehe, this is why i hate creating new package managers 19:25:36 <defionscode> oh man... 19:26:08 <bcoca> a) version handling b) dep solving c) dep solving d) conflict resolution e) dep solving 19:26:39 <defionscode> throw in caching for good measure 19:26:55 <bcoca> version pinning/masking 19:27:16 <bcoca> the only easy part is 'package verification' using checksums 19:27:38 <bcoca> but there is also 'source verification' which now requires signed keys/certificates ... 19:27:51 <bcoca> pub key management 19:28:01 <bcoca> stop me when you've seen enough 'fun' 19:28:11 * defionscode grabs popcorn 19:29:32 <abadger1999> Welp, pip used to handle circular deps at least: https://github.com/pypa/pip/blob/1.5.6/pip/req.py#L1089 19:29:57 <alikins> geerlingguy: (catching up scrollback) At the moment, mazer can install traditional style roles to some degree. For example, `mazer install geerlingguy.apache` will install that role to ~/.ansible/content/geerlingguy/roles/apache. Though eventually, ~/.ansible/content roles will have diff behaviour (plugin paths etc) so still a problem 19:30:53 <bcoca> handle or create them? 19:31:10 <bmbouter> pulp uses a lot of libdebsolve to do all this work 19:31:28 <bmbouter> turns out dependency resolution graphs are complicated enough for their own project! 19:31:38 <geerlingguy> alikins: will everything (including just one single role in a repo) need to be a 'collection'? 19:31:46 <geerlingguy> That wasn't clear from earlier convo 19:31:53 <bcoca> he, only people that believe dependency resolution is easy have never tried to write a dep solver 19:31:57 <defionscode> abadger1999: then there is this 'problem' that npm handles okay-ish https://npm.github.io/how-npm-works-docs/npm3/how-npm3-works.html 19:32:14 <defionscode> so deps that have the same dep but at diff vers 19:32:23 <geerlingguy> dependency resolution is insane, and I will not touch it with a 10 ft pole 19:32:27 <bcoca> geerlingguy: you can have 'current roles' become collections easily by just adding the manifest 19:32:47 <bcoca> geerlingguy: after 300 feet my pole was not usable, but i still feel its too short 19:32:54 <geerlingguy> lol 19:33:23 <abadger1999> defionscode: yeah, that is something that setuptools didn't handle and I think pip inherited that broken behaviour. 19:33:34 <defionscode> yep 19:34:11 <abadger1999> But in this case, it's just a question of whether ansible can put mazer in requirements.txt and it looks like it can. 19:36:03 <alikins> geerlingguy: " will everything ... need to be a 'collection" Yes and no. Collections will require it, but traditional style roles unlikely to go away anytime soon (ever?) 19:36:05 <defionscode> but should it? i dunno 19:36:11 <abadger1999> sivel: It's a step up from button presser! 19:37:13 <gundalow> DING DING. If we finish up at 14:45, if people want to grab their badges and a drink we can start the next sessions at 3pm 19:37:26 <bearrito> this may have been asked already. will mazer allow for private / on-premise hosting? 19:37:44 <abadger1999> galaxy is open source. 19:37:51 <abadger1999> alikins: ^ Is that all that's needed? 19:38:17 <geerlingguy> `Lines should be no longer than 100 chars` :( 19:38:37 <geerlingguy> is there a way to tell molecule to use this rule set? 19:38:39 <gundalow> geerlingguy: I'm not sure about that one 19:38:39 <abadger1999> #link https://github.com/ansible/galaxy 19:38:42 <bcoca> bearrito: currently ansible-galaxy can install directly from a repo, are you asking about that? 19:39:09 <defionscode> geerlingguy: i believe you can spec lint rules in molecule.yml 19:39:24 <defionscode> we're starting to integrate it into ansible-lockdown content 19:39:33 <abadger1999> alikins: (I was referencing bearrito's question) 19:40:12 <geerlingguy> chouseknecht-- terrible code quality 19:40:14 <bearrito> yep. been on projects where there's a want to be able to install from public github and their private github / bitbucket using ansible-galaxy. also been asked for purely self hosted, but that's less 19:40:32 <defionscode> bearrito: it sounds like the path to a 'private mirror' of galaxy stuff is in the works via pulp 19:40:32 <bmbouter> it's not galaxy, but this is what pulp_ansible is able to do 19:40:35 <bearrito> as for both, it's just pointing the requirements.yml to the private repos i believe. is that right? 19:40:44 <bearrito> ah ok 19:40:59 <bmbouter> https://github.com/pulp/pulp_ansible/ 19:41:03 <alikins> bearrito: Yes, albeit with a standalong (open source) galaxy server. And/or soon, a pulp setup. I'd like to support a static-metadata-over-http style hosting solution as well but doesn't exist atm. 19:42:14 <abadger1999> #info on-prem/self-hosted galaxy server will work with mazer. pulp and static-metadata-over-http may work/be implemented as well 19:42:29 <bmbouter> we added a commit to ansible-client CLI to be able to install from an on-premise pulp_ansible. it's released in the GA ansible-client now actually 19:42:33 <abadger1999> #topic galaxy web ui update 19:42:42 <bmbouter> it's at the bottom of the readme at the link above 19:43:25 <defionscode> bmbouter: i feel like that should be promoted more, bummed i just found out about pulp_ansible 19:43:55 <bmbouter> we're just getting started. pulp has been around for a long time, but this is on pulp3 which is new 19:44:39 <defionscode> ah ok, going to bring it up a couple of clients, it seems quite slick 19:46:44 <abadger1999> #endmeeting