Forge Home

gitlab_inventory

pdk
tasks
A Bolt plugin that generates local Targets from GitLab group repositories

Bolterrific

bolterrific

774 downloads

750 latest version

5.0 quality score

Version information

  • 0.1.1 (latest)
  • 0.1.0
released Dec 31st 2020
This version is compatible with:
  • Puppet Enterprise 2021.3.x, 2021.2.x, 2021.1.x, 2021.0.x, 2019.8.x, 2019.7.x, 2019.5.x, 2019.4.x, 2019.3.x, 2019.2.x, 2019.1.x, 2019.0.x, 2018.1.x, 2017.3.x, 2017.2.x, 2016.4.x
  • Puppet >= 4.10.0 < 8.0.0
  • CentOS
    ,
    OracleLinux
    ,
    RedHat
    ,
    Scientific
    ,
    Debian
    ,
    Ubuntu
    ,
    windows
    ,
    Fedora
Tasks:
  • resolve_reference
Plans:
  • count

Start using this module

  • r10k or Code Manager
  • Bolt
  • Manual installation
  • Direct download

Add this declaration to your Puppetfile:

mod 'bolterrific-gitlab_inventory', '0.1.1'
Learn more about managing modules with a Puppetfile

Add this module to a Bolt project:

bolt module add bolterrific-gitlab_inventory
Learn more about using this module with an existing project

Manually install this module globally with Puppet module tool:

puppet module install bolterrific-gitlab_inventory --version 0.1.1

Direct download is not typically how you would use a Puppet module to manage your infrastructure, but you may want to download the module in order to inspect the code.

Download

Documentation

bolterrific/gitlab_inventory — version 0.1.1 Dec 31st 2020

gitlab_inventory

Table of Contents

Description

gitlab_inventory is an inventory reference plugin for Puppet Bolt. It uses the GitLab API to dynamically provide a list of local transport Targets that represent each project under a GitLab group.

This module also contains an example Bolt project with a working inventory.yaml and several Bolt plans.

Setup

Setup Requirements

  • Puppet Bolt 2.15+, installed from an OS package (don't use the RubyGem)
    • Note: The example inventory.yaml assumes Bolt 2.37+ (see comments)
  • A GitLab API personal auth token with sufficient scope
  • The gitlab RubyGem

Beginning with gitlab_inventory

  1. If you are using rvm, you must disable it before running bolt:

    rvm use system
    
  2. Install the RubyGem dependencies using Bolt's gem command

    On most platforms:

    /opt/puppetlabs/bolt/bin/gem install --user-install -g gem.deps.rb
    

    On Windows:

    "C:/Program Files/Puppet Labs/Bolt/bin/gem.bat" install --user-install -g gem.deps.rb
    

Usage

To use this plugin in your own Bolt project, configure it to provide targets in the inventory file.

Using the plugin in a Bolt inventory file

An example inventory.yaml file:

version: 2

groups:
  - name: repo_targets
    targets:
      - _plugin: gitlab_inventory  # <- Plugin provides `local` Targets
        group:                     # <- GitLab group with Target repos
          _plugin: env_var
          var: GITLAB_GROUP
          default: simp
        # some optional parameters:
        gitlab_api_token:          # <- API token with scope that can get repos
          _plugin: env_var         # <- (provided by another Bolt plugin)
          var: GITLAB_API_PRIVATE_TOKEN
        archived_repos: true
        allow_list:
          - '/^pupmod-simp/'
          - 'simp-core'
        block_list:
          - '/_/'
config:
  transport: local
  local:
    bundled-ruby: true
    tmpdir:
     _plugin: env_var
     var: PWD

Reference

See REFERENCE.md

Limitations

In order to provide an example bolt project in the same module as the inventory plugin, the example bolt-project.yaml adds .. to the modulepath. This means that (when using the example bolt project) the folder containing this repo must be named gitlab_inventory. There may be other weirdness, depending on this folders' neighbors.

This quirk only affects the example bolt project; it will not affect the inventory plugin or Bolt plans from your own Bolt projects.

Development

Submit PRs at the project's GitHub repository.