Nervously Proposing Marriage
Have ideas to improve npm?Join in the discussion! »

@itentialopensource/artifact-wizard

1.0.0-2019.3.1 • Public • Published

Artifact Wizard

Table of Contents

Contribution Guidelines

First of all: Thank you so much for being willing to contribute! We really need the awesome workflows and use cases you have built to grow our library of pre-built automations and to make them available to anyone who might need them.

Note: The terms Artifact and Pre-built Automation are currently used to describe the same thing. We'll hopefully get some clarification on naming conventions soon and will update this document accordingly.

To make contributions easy, we've published this Artifact Wizard artifact. We'll provide more details on how it works later in this README file, but here is the summary. When you run the Artifact Wizard from our Automation Catalog app, we ask you to select the Automation Catalog item you want to contribute. As long as your Automation Catalog item has a valid form and workflow attached, we'll discover all the other objects (Command Templates, Forms, Child Workflows, Configuration Trees, etc.) and dependencies that we'll need to successfully run your automation. After you confirm that we've discovered all the things you want to contribute, Artifact Wizard will prompt you to provide a category, description, README, license information, and keywords. Then Artifact Wizard will bundle your automation, push it up to our staging folder on GitLab, and provide you a link to the newly created repository.

Let's go through all things we'd like you to provide:

Files

All files you want to contribute (workflows, forms, templates, etc.) should follow this naming schema: <Artifact Name> <title/use of file>

Examples:

  • L2VPN create form
  • L3VPN create form
  • Banner-Management IOSXR subflow
  • Banner-Management Pre-check

Workflows

Since workflows are a central part of any of our automations, we want to make sure to keep them easy to read and understand. Here are a couple of things to look out for:

  • The main workflow should provide a high level view of what the entire artifact is doing. All functionality must be put into child workflows. Ideally a main workflow consists only of a couple of child workflow tasks and stub tasks. We're enforcing a 20 task maximum limit for main workflows.
  • Only use IAP tasks that are shipped with our bundles as well as essential tasks from open source adapters. Example: The Meraki SDWAN artifact needs tasks from the Meraki adapter, but tasks from a ServiceNow or Slack adapter should be replaced by the stub task, which should be renamed to explain the stubbed action. Ansible modules, scripts or roles can only be used starting with IAP 2020.1.
  • Re-name all titles of tasks according to what they do in your workflow. Use "Query device name" rather than "Query", or "Apply new interface config" rather than "apply template".
  • Choose a task layout that helps other people understand the flow of your automation
  • Try to keep the happy path on a straight line from left to right, add error handling at the bottom and loops at the top
  • When using eval tasks, both success and failure transitions should be drawn at a 45 degree angle; the success transition should point up, the failure transition should point down
  • Do not mix NSO and Ansible tasks in the same workflow. It will break for customers with only one of the adapters. Instead, use child workflows for each integration.
  • Provide a description for each task. Like commenting your code, this is very helpful for anyone to understand your automation.

Name

Please provide a short and descriptive name of what your artifact is used for. Examples:

  • Banner-Management
  • Device-Health-Check
  • Cisco-IOS-Upgrade

Categories

Pre-built automations are tracked in different categories. Here is a list of all of them:

  • Authentication
  • Cloud
  • Controller / Orchestration
  • DevOps
  • NetOps
  • Inventory
  • ITSM / Testing
  • Notification / Messaging
  • Persistence
  • SD-WAN
  • Security
  • Telemetry / Analytics
  • Utilities

Please select the category that fits your contribution. If your artifact covers multiple categories, you can select an additional one. For examples on which artifact should be in which category, please refer to the Itential pre-built automations page

Description

This is the description of the artifact you contribute, as shown in the project/repo in GitLab, as well as in the preview of an artifact within App-Artifacts. Please describe the use case that your artifact is solving, and why people should be excited about it, within 200 characters.

Example:

Manage network banners across multiple device types and execute automations against Ansible managed network devices.

README file

Please provide a thorough README file in markdown format, including:

  • Overview of the use case
  • Key features/benefits
  • Pre-requisites and how to install them
  • How to run this artifact
    • Which form inputs are necessary?
    • Are there stubbed tasks that can be replaced?
    • What is the expected output?

Example:

Itential pre-built automations - Service Provisioning

License File

If you want to provide a specific license for your contribution, you can do so here. If you leave this field blank, Apache License Version 2 will be automatically used.

Keywords

Please provide keywords related to your artifact so that users can find it.

Examples: Configuration Management, Policy, Compliance, Audit, Device Onboarding

Note: At least one keyword is required.

Requirements

Artifact Wizard requires the following in order to run, and is compatible with the following versions:

  • Itential Automation Platform
    • ^2019.2.3
    • ^2019.3.0
  • App-Artifacts
    • ^2.4.2

Installation

Please ensure that you are running a supported version of Itential Automation Platform (IAP) as listed above in the Requirements section in order to install Artifact Wizard. If you do not currently have App-Artifacts installed as a service on your node, the .tgz file or "tarball" can be obtained from the Nexus repository. Please refer to the instructions included in the App-Artifacts README to install it.

Artifact Wizard can be installed from within App-Artifacts. Simply search for artifact-wizard and click the install button as shown below:

install

Alternatively, you may clone this repository and run npm pack to create a tarball which can then be installed via the offline installer in App-Artifacts. Please consult the documentation for App-Artifacts for further information.

Supported Components

The Itential Automation Platform components that Artifact Wizard can currently consume include:

  • Automation Catalog items
  • Configuration Trees
  • Form Builder Forms
  • JSON-Forms
  • Mop-Templates
  • Mop-Analytic Templates
  • Workflows
  • Jinja2 Templates
  • TextFSM Templates

How To Contribute

Please see:

Artifact Wizard can be launched from Automation Catalog, and the job must be run as an admin user. To begin, click the Run button:

automation catalog

Creating A New Artifact

To create a new artifact, you must supply a name and an entry point for the automation:

create new artifact

Please keep in mind that the entry point to the artifact must be an Automation Catalog item. The item should supply both a workflow and a form as an entry point for the artifact. Any job variables required for the workflow to run should be supplied by the accompanying form, and will be accessible to the workflow via the formData object.

After you click the Run button, Artifact Wizard will discover all dependencies required by the workflow selected in the Automation Catalog item, as well as version information for each IAP application required to install the bundled artifact. The results of the discovery will then be available for you to confirm:

discovery

Artifact Wizard will next prompt you for metadata for the artifact, and will give you the opportunity to provide a short description, a README, license information, and a list of keywords (at least one keyword is required) relevant to the artifact. If no license is provided, Artifact Wizard will bundle Apache License Version 2 by default. Please refer to the Contribution Guidelines regarding best practices and naming conventions.

At the time of this writing, Artifact Wizard must next perform a health check to gather module information in order to properly bundle the artifact. Please note that this step will not be required to run in future versions of Artifact Wizard. You will be prompted to perform the health check as an admin user:

health check

Artifact Wizard will then bundle all of your dependencies, create a package.json file, and push the artifact to a new repository on GitLab under our staging directory. Upon successful completion of the job, you will be provided with a link to the repository:

view repo

Click the provided link to direct your browser to the freshly created repository. You should see something similar to the following:

new repo

If you go into the bundles directory, you will be able to see all of the pieces of your automation that were bundled with the artifact:

bundles

Finally, press the Success button to complete the job

Congratulations on creating your very first artifact, and thank you for contributing! 🎉

Updating An Existing Artifact

To update and re-publish an existing artifact, simply select the automation from the dropdown menu:

update artifact

Artifact Wizard will discover any new dependencies and re-bundle the automation, then create a branch from master in your repository and submit a merge request. Upon successful completion of the job, you will be provided with a link to the merge request, where you will be able to review the diffs and merge the branch back to master.

Note: At this time, only an installed artifact initially created using Artifact Wizard may be updated using Artifact Wizard.

For instance, in the example artifact above:

workflow

The workflow may be updated to view the output of the addDevicesToNode task and save this as part of the artifact. A viewData task may be added, and the workflow may then be updated:

updated workflow

From Automation Catalog, we can now run Artifact Wizard and choose Update Artifact, as described above. When the job completes, you will be presented with a link to review the merge request:

review MR

Click the provided link to direct your browser to the freshly created merge request:

merge request

At the bottom of the page, click Changes to review the diffs:

diffs

Finally, click Success to complete the job. If you are happy with all changes you've made, you can choose to merge this auto-generated branch back into master.

Congratulations on updating your artifact, and thank you again for contributing! 👐

Install

npm i @itentialopensource/artifact-wizard

DownloadsWeekly Downloads

1

Version

1.0.0-2019.3.1

License

Apache-2.0

Unpacked Size

2.74 MB

Total Files

36

Last publish

Collaborators

  • avatar
  • avatar
  • avatar