Support New Test Invocation Standard
Open, HighPublic

Description

Lately, there has been an effort to define a standard interface for test invocation for Fedora tests. At this time, the ansible-based proposal has secured the most votes and is the standard that we will be going with.

Add support to libtaskotron so that we can run tests written for this new interface

Details

Differential Revisions
D1195: Support for Ansible Tasks
tflink created this task.Apr 18 2017, 8:30 PM
tflink added a subscriber: roshi.Apr 19 2017, 6:41 PM
tflink added a subscriber: merlinm.Wed, May 17, 1:52 PM

As alluded to in D1195, there has been a bit of confusion around how all this is going to work. After re-reading the wiki pages and talking with @merlinm a bit, my understanding is:

One of the primary points of this effort is to make the execution system (CI, Taskotron, etc.) a commodity. One of the best ways to accomplish this is to contain all of the test-relevant work in the test itself and limit interactions with the system executing those tests. This leads to the "localhost only" bits and requiring the test to do any deployment work in support of whatever that test needs - this way it can move from system to system without having to worry about changing how anything is deployed/run.

Personally, I prefer the way that zuulv3 is doing things (describing the needed environment in a file with a known format) or at least leaving that as an option but that's something to bring up and discuss on the ci list.

For now, I think it would be best to work with the specification that we have and change if/when needed. @merlinm has been working on getting ansible roles to work with that specification and IIRC, already has a usecase that may require that specification to be tweaked.

kparal added a subscriber: kparal.Mon, May 22, 1:49 PM

I understand the motivation - being able to transfer the task between different test systems without any changes. What I don't understand is how localhost-only ansible execution is related here. When I execute a task through ansible locally, and when I execute it remotely from a different machine, doesn't it look the same to the task itself? Is there a different environment or some behavioral changes that the task needs to adapt to? If the execution looks the same to the task regardless of ansible mode, the end goal is achieved (the task doesn't need to be adjusted when moving between test systems), and the particular ansible execution mode then can be left to the test system to implement as it fits best for it.

I just simply wonder whether running ansible in local mode through ansible in remote mode (ansible in ansible, as in current D1195 patch), actually helps anything.

As an ansible n00b, I'm also trying to work my way through the confusion of how this is going to work, too. I'd be interested in seeing some examples on how to things should be set up in dist-git to have Taskotron automatically kick off the examples described in the ansible-based proposal referenced in the description. I'm sure that will help flesh out a lot of additional questions and details.