18:09:14 #startmeeting Ansiblefest: Galaxy 18:09:14 Meeting started Mon Oct 1 18:09:14 2018 UTC. 18:09:14 This meeting is logged and archived in a public location. 18:09:14 The chair is abadger1999. Information about MeetBot at http://wiki.debian.org/MeetBot. 18:09:14 Useful Commands: #action #agreed #halp #info #idea #link #topic. 18:09:14 The meeting name has been set to 'ansiblefest:_galaxy' 18:09:47 gregdek: Start Blue Jeans recording. 18:09:51 #chair alikins gregdek tima 18:09:51 Current chairs: abadger1999 alikins gregdek tima 18:10:02 #chair mattclay willthames jhawkesworth_ 18:10:02 Current chairs: abadger1999 alikins gregdek jhawkesworth_ mattclay tima willthames 18:10:34 etherpad for this session: https://etherpad.openstack.org/p/ansible-summit-october-2018-galaxy 18:10:36 #link https://etherpad.openstack.org/p/ansible-summit-october-2018-galaxy 18:18:22 what's the link to the mentioned statistics? 18:19:00 jtanner: ^ 18:19:08 #chair felixfontein jtanner 18:19:08 Current chairs: abadger1999 alikins felixfontein gregdek jhawkesworth_ jtanner mattclay tima willthames 18:19:28 tanner is looking for the link 18:19:58 thanks! 18:20:13 #action jtanner to publish a link to the gathered statistics 18:22:43 http://tannerjc.net/ansible/galaxy.html 18:25:24 example https://github.com/jctanner/mazer-example-1 18:26:32 https://galaxy-qa.ansible.com/testing/ansible_testing_content 18:26:43 https://github.com/atestuseraccount/ansible-testing-content 18:27:48 https://github.com/ansible/mazer/tree/devel/tests/ansible_galaxy/collection_examples/hello is a 'hello world' example 18:31:52 https://gist.github.com/alikins/d09e34e68af2b7573b60f917b37846b4 example of the 'built' artifact 18:36:40 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 #info we are not abandoning the traditional role format 18:42:03 #info versioning is staying at the repo level; subcomponents of a collection will not be independently versioned 18:42:05 #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 ha 18:44:46 #info packaging roles/content via mazer will be able to have versioned content 18:45:18 upgrade++ 18:45:30 force push tags...ew 18:46:26 #info migration guide and tool for going from traditional roles to content collections. 18:46:50 right @deficonscode 18:48:03 geerlingguy: i imagine you'd have quite a bit of work to do, probably? 18:48:28 yeah... 18:48:43 maintaining 100% roles in two different repos? 18:48:47 100+ I mean 18:49:27 no sweat, right? (╯°□°)╯︵ ┻━┻ 18:49:48 just create a role that manages that 18:50:15 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 #info collection == repo 18:50:53 no collection of collections? 18:51:01 submodule/subfolder/subrepo 18:51:28 git submodules-- 18:51:40 also, I still don't quite get the use case for collections—they sound not-composable 18:52:02 ^ that is why collection of collections question, the workaround we all hate (submodules) 18:52:06 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 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 dependencies 18:52:39 but not have 35 collections that all have tons of git submodules to manage 18:53:04 so collections _can_ have deps? 18:53:52 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 or you would need to interject a 'fake role' that just lists dependencies for that collection 18:55:25 that sounds hacky and annoying :/ 18:55:28 but that is a hack, imho 18:55:36 also an icky .json file... :O 18:55:38 yeah 18:55:48 you got JSON in my YAML! 18:55:59 he, not meant to be human read/edited 18:56:04 true true 18:56:16 and for 'web' its easier being json 18:58:24 #info need to scan/check/warn of variables coming from multiple roles. 18:58:37 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 I like the idea of unchangeable release archives a lot, wish that were how git tags were handled on existing galaxy 18:59:32 @alikins ^^^ @chouseknecht 19:01:20 that could be done via git archive on import 19:02:09 -10 19:02:22 i expect to erase at least 10 dep solvers 19:03:11 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 Maybe 3.0 would be a clean time to switch things to mazer-driven? 19:09:15 geerlingguy: I think we want it sooner. 19:09:21 Fine to intro sooner 19:09:36 Or put in the other way, That would be too soon for 3.0 ;-) 19:09:39 but I mean like switch to "this is the only really supported way—others are deprecated" 19:10:00 as in deprecate 'old galaxy' style 19:10:05 exactly ^^ 19:10:07 Also, I'm not sure that this deprecates anyhting that is actually in core ansible. 19:10:27 not in core ansible, but in 'the way things work' in terms of roles, dependency management 19:10:30 it deprecates how to build content for galaxy.. but I don't think anything goes away in ansible itself. 19:10:31 the plan is to deprecate current ansible-galaxy 19:11:23 that's probably not a 3.0 worthy change. 19:12:01 (But I would say actual removal should probably be one of those long deprecation cycles I talked about earlier) 19:13:15 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 current role dependencies are really both 'install' and 'runtime' things, collections would be separating these 19:14:08 you'll have 'install' deps .. runtime will depend on runtime refs, instead of mixing both 19:14:30 though we might want the tool to generate the former from scanning the latter 19:15:29 Is mazer going to be 'ansible-galaxy' in the future? Or separate completely? 19:15:46 i understand it as its successor... 19:15:48 like will you have to install it after a `pip install ansible` (eventually) 19:16:21 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 Although if pip install ansible is the target.... 19:16:42 Perhaps ansible's requirements specifying mazer? 19:16:48 I feel like even if separate, it should be a requirement 19:17:06 (this is just my own thought.... nitzmahone and alikins are much closer to this) 19:17:16 yeah as a req would make sense 19:17:31 not necessarily - ansible-galaxy could just say "please install mazer" if it's not installed 19:18:03 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 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 that introduces a little friction (imo) but wouldn't be the worst thing 19:18:29 If it were up to me, I vote for adding it as a requirement :) 19:18:34 :-) 19:18:41 abadger1999: but would the req be pinned? seems like you'd keep it as latest? 19:19:14 also someone needs to do a blog post talking about the name 'Mazer' 19:19:21 another chapter in the history of Ansible lore :P 19:19:51 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 (as mazer may need support from within ansible for some htings) 19:20:21 in ender's game I suppose 'The ansible' did predate Mazer since he led teh first super battle against the aliens 19:20:41 #chair retr0h 19:20:41 Current chairs: abadger1999 alikins felixfontein gregdek jhawkesworth_ jtanner mattclay retr0h tima willthames 19:20:48 #topic Molecule! 19:20:50 abadger1999: at the same time im thinking for folks that may want/need to upgrade mazer independent of Ansible 19:20:56 Yeah. 19:21:03 That was my thought at first 19:22:50 We could abuse mazer's versioning I suppose. 19:23:34 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 but as a project that is rapidly evolving, its fine as an outside thing for now 19:23:56 mazer version X works with ansible-2.8+ so ansible 2.8's requirement on mazer is mazer<2.9 19:24:17 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 Oh the fun things I remember from yum code... 19:25:36 hehe, this is why i hate creating new package managers 19:25:36 oh man... 19:26:08 a) version handling b) dep solving c) dep solving d) conflict resolution e) dep solving 19:26:39 throw in caching for good measure 19:26:55 version pinning/masking 19:27:16 the only easy part is 'package verification' using checksums 19:27:38 but there is also 'source verification' which now requires signed keys/certificates ... 19:27:51 pub key management 19:28:01 stop me when you've seen enough 'fun' 19:28:11 * defionscode grabs popcorn 19:29:32 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 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 handle or create them? 19:31:10 pulp uses a lot of libdebsolve to do all this work 19:31:28 turns out dependency resolution graphs are complicated enough for their own project! 19:31:38 alikins: will everything (including just one single role in a repo) need to be a 'collection'? 19:31:46 That wasn't clear from earlier convo 19:31:53 he, only people that believe dependency resolution is easy have never tried to write a dep solver 19:31:57 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 so deps that have the same dep but at diff vers 19:32:23 dependency resolution is insane, and I will not touch it with a 10 ft pole 19:32:27 geerlingguy: you can have 'current roles' become collections easily by just adding the manifest 19:32:47 geerlingguy: after 300 feet my pole was not usable, but i still feel its too short 19:32:54 lol 19:33:23 defionscode: yeah, that is something that setuptools didn't handle and I think pip inherited that broken behaviour. 19:33:34 yep 19:34:11 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 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 but should it? i dunno 19:36:11 sivel: It's a step up from button presser! 19:37:13 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 this may have been asked already. will mazer allow for private / on-premise hosting? 19:37:44 galaxy is open source. 19:37:51 alikins: ^ Is that all that's needed? 19:38:17 `Lines should be no longer than 100 chars` :( 19:38:37 is there a way to tell molecule to use this rule set? 19:38:39 geerlingguy: I'm not sure about that one 19:38:39 #link https://github.com/ansible/galaxy 19:38:42 bearrito: currently ansible-galaxy can install directly from a repo, are you asking about that? 19:39:09 geerlingguy: i believe you can spec lint rules in molecule.yml 19:39:24 we're starting to integrate it into ansible-lockdown content 19:39:33 alikins: (I was referencing bearrito's question) 19:40:12 chouseknecht-- terrible code quality 19:40:14 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 bearrito: it sounds like the path to a 'private mirror' of galaxy stuff is in the works via pulp 19:40:32 it's not galaxy, but this is what pulp_ansible is able to do 19:40:35 as for both, it's just pointing the requirements.yml to the private repos i believe. is that right? 19:40:44 ah ok 19:40:59 https://github.com/pulp/pulp_ansible/ 19:41:03 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 #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 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 #topic galaxy web ui update 19:42:42 it's at the bottom of the readme at the link above 19:43:25 bmbouter: i feel like that should be promoted more, bummed i just found out about pulp_ansible 19:43:55 we're just getting started. pulp has been around for a long time, but this is on pulp3 which is new 19:44:39 ah ok, going to bring it up a couple of clients, it seems quite slick 19:46:44 #endmeeting