Automate installation of CI-required devtools

Clone this repo:

Branches

  1. 3c9af7d Added netdev tools group, and additional tools for bootstrap and python packages by Zack Williams · 2 years, 5 months ago master
  2. 6415ecf Add documentation by Zack Williams · 2 years, 6 months ago
  3. a3ecef4 Updates to fix testing by Zack Williams · 2 years, 8 months ago
  4. 04575aa Initial devtools commit by Zack Williams · 2 years, 8 months ago

devtools

This role installs tools for development on CI systems

This is used against the following types of systems:

  • Physical machines
  • Virtual machines (both cloud and on-prem)
  • Docker containers

There are two sets of installed, one common set, and optional extended sets of tools.

The default sets of tools are specified in the tasks/main.yml and tasks/Debian.yml. This contains basic development tools (git, make, python, repo, etc.) that are frequently used.

The extended set of tools is dynamic and customizable, for projects that have individual tool requirements. These additional tools are specified using the devtools_install list which is loaded from tasks/main.yml. This list specifies filenames in the tasks/ directory.

Adding a new development tool

If you have a new tool (or set of tools) named example:

  1. Create a task file tasks/example.yml

  2. Add plays to the file to perform tool installation.

    If required, add versions, download URLs, and SHA256 checksums for downloaded files to the defaults/main.yml. Prefix these variables with devtools_example_

  3. Add Molecule tests for the tool to verify that it functions:

    a. Add the installation to the devtools_install list in molecule/default/converge.yml

    b. Add tests tomolecule/default/verify.yml that checks that the tools will function correctly - mostly this would be running some variant of printing the version, ie: example --version or similar, and verifying the version number.

Note that some tools that have more complicated installations, and in those cases a separate role should be created. One example of a more complicated tool that has it's own role is Docker, which requires a GPG key and apt repo, installs multiple tools, customizes it's configuration file, and so on.

Example Playbook

- hosts: all
  vars:
    devtools_install:
      - k8s
      - terraform
      - yq
  roles:
    - devtools

License and Author

Copyright 2022 Open Networking Foundation support@opennetworking.org

License: Apache-2.0