From Fedora Project Wiki
(Created page with "{{admon/warning|DRAFT|This page is a draft and still under construction.}} <!-- Self Contained or System Wide Change Proposal? Use this guide to determine to which category yo...")
 
Line 59: Line 59:
== Detailed Description ==
== Detailed Description ==


<!-- Expand on the summary, if appropriate. A couple sentences suffices to explain the goal, but the more details you can provide the better. -->
<pre>
                                                    +----------------+
    +------------+                                  |                |
    |            +--------------------------------->+  Taskotron    |
    |  fedmsg  |                                  |                |
    |            |<---------------------------------+                |
    |            |                                  +----------------+
    +------------+
        ^
        |
        |
        |
        |
        |
        +-----------------+
                          |
                          |
                          |
                          |
                          |
                  +------+-----------------------------+
                  |                                    |
                  |      Release Engineering          +----------------+
                  |      Workflow Automation Engine    |                |
                  |                                    |                |
                  +------------------+-----------------+                |
                        |            |                                  |
                        |            |                                  |
      +-----------------+            |                                  |
      |                              |                                  |
      |                              |                                  |
      V                              V                                  |
+-------------+                  +--------------+                      |
|            |                  |              |                      |
|    bodhi    |                  |              |                      |
|            |                  |    pungi    |                      |
+-------------+                  |              |                      |
                                  |              |                      |
                                  +----------+---+                      |
                                      ^    |                          V
                                      |    |                +---------------+
                                      |    |                |              |
                                      |    +--------------->|    koji      |
                                      |                      |              |
                                      +----------------------+              |
                                                              +---------------+
</pre>
 
 
Centralized entry point, logging, and dash board for pre-defined Automated Workflow tasks used by the Release Engineering team with delegation and self-service tasks for members of various teams who normally depend on Release Engineering for various tasks.
 
 
Currently Fedora Release Engineering Automation tasks are performed by various scripts run on various machines within the Fedora Infrastructure with no real centralized logging. Some of these are automated by chron jobs and some run by hand by request of various members within the Fedora Community, normally around Fedora Test Days. Finding information about old tasks is not always the easiest of things to do and the delegation of tasks is currently not available. The goal here is to provide a solution that removes those barriers.
 
=== Functional Requirements ===
 
The following features are functional requirements
 
* Role Based Access Control
** Users in certain groups are allowed to execute only certain workflows)
** This will enable the self-service component
* Public central logging
** Workflow tasks should be logged centrally and historic runs of workflows can be publicly viewed in a central location
 
=== Technical Implementation ===
 
Everything will be powered by Ansible as this is a toolchain that both Fedora Infrastucture and Fedora Release Engineering is familiar with and has been using heavily for automation tasks. We are simply aiming to solve a new automation problem space with the same tool and a different set of rules/policy.
 
https://www.ansible.com/
 
The main component that will define the workflows is going to be Ansible Playbooks.
 
==== Ansible ====
 
Tasks or sets of tasks should be in an "Include Playbook" such that they are not meant to stand on their own but should be included by other Playbooks or an Ansible Role.
 
Workflow Playbooks should effectively be "glue" that supply necessary variables to make the "Include Playbooks" and Roles useful for the Workflow at hand.
 
==== Ansible Execution ====
 
A goal of this proposal is to have a way to execute tasks or jobs that can be centralized, role based
 
The software that becomes the "Workflow Engine" itself is currently being evaluated, this will be the thing that actually executes the Ansible playbooks. The following options are being looked at:
* Ansible Tower
** https://www.ansible.com/tower
** Currently closed source but has been announced by Red Hat that it will be open sourced since the acquisition of Ansible
* Jenkins CI
** 2.0 Pipeline https://jenkins.io/2.0/
** Blue Ocean https://jenkins.io/blog/2016/05/26/introducing-blue-ocean/
* Zuul v3
** http://inaugust.com/talks/zuulv3.html#/
** https://specs.openstack.org/openstack-infra/infra-specs/specs/zuulv3.html


== Benefit to Fedora ==
== Benefit to Fedora ==

Revision as of 22:13, 2 June 2016

DRAFT
This page is a draft and still under construction.


Release Engineering Automation Workflow Engine

Summary

Owner

  • Name: Your Name
  • Email: <your email address so we can contact you, invite you to meetings, etc.>
  • Release notes owner:

Current status

  • Targeted release: [[Releases/<number> | Fedora <number> ]]
  • Last updated: 2016-06-02
  • Tracker bug: <will be assigned by the Wrangler>

Detailed Description

                                                    +----------------+
    +------------+                                  |                |
    |            +--------------------------------->+   Taskotron    |
    |   fedmsg   |                                  |                |
    |            |<---------------------------------+                |
    |            |                                  +----------------+
    +------------+
        ^
        |
        |
        |
        |
        |
        +-----------------+
                          |
                          |
                          |
                          |
                          |
                   +------+-----------------------------+
                   |                                    |
                   |      Release Engineering           +----------------+
                   |      Workflow Automation Engine    |                |
                   |                                    |                |
                   +------------------+-----------------+                |
                         |            |                                  |
                         |            |                                  |
       +-----------------+            |                                  |
       |                              |                                  |
       |                              |                                  |
       V                              V                                  |
+-------------+                   +--------------+                       |
|             |                   |              |                       |
|    bodhi    |                   |              |                       |
|             |                   |    pungi     |                       |
+-------------+                   |              |                       |
                                  |              |                       |
                                  +----------+---+                       |
                                       ^     |                           V
                                       |     |                +---------------+
                                       |     |                |               |
                                       |     +--------------->|     koji      |
                                       |                      |               |
                                       +----------------------+               |
                                                              +---------------+


Centralized entry point, logging, and dash board for pre-defined Automated Workflow tasks used by the Release Engineering team with delegation and self-service tasks for members of various teams who normally depend on Release Engineering for various tasks.


Currently Fedora Release Engineering Automation tasks are performed by various scripts run on various machines within the Fedora Infrastructure with no real centralized logging. Some of these are automated by chron jobs and some run by hand by request of various members within the Fedora Community, normally around Fedora Test Days. Finding information about old tasks is not always the easiest of things to do and the delegation of tasks is currently not available. The goal here is to provide a solution that removes those barriers.

Functional Requirements

The following features are functional requirements

  • Role Based Access Control
    • Users in certain groups are allowed to execute only certain workflows)
    • This will enable the self-service component
  • Public central logging
    • Workflow tasks should be logged centrally and historic runs of workflows can be publicly viewed in a central location

Technical Implementation

Everything will be powered by Ansible as this is a toolchain that both Fedora Infrastucture and Fedora Release Engineering is familiar with and has been using heavily for automation tasks. We are simply aiming to solve a new automation problem space with the same tool and a different set of rules/policy.

https://www.ansible.com/

The main component that will define the workflows is going to be Ansible Playbooks.

Ansible

Tasks or sets of tasks should be in an "Include Playbook" such that they are not meant to stand on their own but should be included by other Playbooks or an Ansible Role.

Workflow Playbooks should effectively be "glue" that supply necessary variables to make the "Include Playbooks" and Roles useful for the Workflow at hand.

Ansible Execution

A goal of this proposal is to have a way to execute tasks or jobs that can be centralized, role based

The software that becomes the "Workflow Engine" itself is currently being evaluated, this will be the thing that actually executes the Ansible playbooks. The following options are being looked at:

Benefit to Fedora

Scope

  • Proposal owners:
  • Other developers: N/A (not a System Wide Change)
  • Release engineering: N/A (not a System Wide Change)
  • Policies and guidelines: N/A (not a System Wide Change)
  • Trademark approval: N/A (not needed for this Change)

Upgrade/compatibility impact

N/A (not a System Wide Change)

How To Test

N/A (not a System Wide Change)

User Experience

N/A (not a System Wide Change)

Dependencies

N/A (not a System Wide Change)

Contingency Plan

  • Contingency mechanism: (What to do? Who will do it?) N/A (not a System Wide Change)
  • Contingency deadline: N/A (not a System Wide Change)
  • Blocks release? N/A (not a System Wide Change), Yes/No
  • Blocks product? product

Documentation

N/A (not a System Wide Change)

Release Notes