Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Configuration Management #561

Open
15 tasks
jon-nfc opened this issue Feb 10, 2025 · 0 comments
Open
15 tasks

Configuration Management #561

jon-nfc opened this issue Feb 10, 2025 · 0 comments
Assignees
Labels
type::epic Issue Type is Epic User Story

Comments

@jon-nfc
Copy link
Member

jon-nfc commented Feb 10, 2025

Config management is the process of storing, tracking of settings/data required for the configuration of infrastructure,

This Epic is an extension of the completed epic #33. This epic is to track the initial module features desired.

Details

The intent is to obtain configuration values from the ITSM library so that configuration is not duplicated by using an external config management system. i.e. ansible, puppet, terraform etc.

Even though most of the industry is moving towards a GitOps approach to config management, this module is intended to not use nor rely upon GitOps at all. why? GitOps adds additional steps just to enable version control (and roll on features), namely the creation of tickets and MR/PR in addition to any ITIL/ITSM tickets. It is for this reason that this module won't be GitOps based.

This module must provide version control for ALL configuration as well as the ability for approvals.

Config system must cater for and to the device lifecycle stages, being:

  • OS provisioning

  • SOE Setup

  • Role deployment

  • maintenance

Config deployment

We have settled on using Ansible as the config deployment system. This module will be setup to replicate the Ansible Inventory, Although, direct API requests will provide the same config values via a JSON dict.

Config workflow

The proposed config workflow is as follows:

  1. User makes config change
  2. Change ticket is created containing the config change
    1. if setup, an approval request is made to the required approver
    2. collaboration as required occurs on change ticket
    3. Proposed changes can be made to the config (if post approval, change will require re-approval)
    4. on approval, write the approved changes to the config
  3. events system1 notifies AWX for deployment
    1. AWX job that will make the changes (in check mode)
    2. AWX updates change ticket with job details
    3. Any host that AWX did detect as requiring a change:
      1. Change ticket created, with the host added as related
      2. parent ticket set to original change ticket2.
      3. Job details added to hosts/clusters/etc change ticket
      4. Events system1 notifies AWX for job to run against the host, that required the change
      5. Change ticket closed if job successful / Job failure to notify responsible person

Links

Features

Requirements

  • API Provides JSON config via object endpoint
  • ALL config version controlled
  • A devices setting that conflicts with a group setting takes precedence (when fetching from API).
  • A clusters setting that conflicts with a group setting takes precedence (when fetching from API).

Footnotes

  1. depends upon Webhooks on events #379 2

  2. depends upon Sub Tickets #495

  3. depends upon Location Management #62

@jon-nfc jon-nfc added the type::epic Issue Type is Epic User Story label Feb 10, 2025
@jon-nfc jon-nfc self-assigned this Feb 10, 2025
@jon-nfc jon-nfc moved this to Planning in Centurion ERP Feb 10, 2025
@jon-nfc jon-nfc moved this from Planning to In progress in Centurion ERP Feb 10, 2025
@jon-nfc jon-nfc changed the title Config Management Module Configuration Management Feb 10, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type::epic Issue Type is Epic User Story
Projects
Status: In progress
Development

No branches or pull requests

1 participant