Merge "Add config repo split spec"
This commit is contained in:
commit
375fcaa9d4
152
specs/config-repo-split.rst
Normal file
152
specs/config-repo-split.rst
Normal file
@ -0,0 +1,152 @@
|
|||||||
|
::
|
||||||
|
|
||||||
|
Copyright (c) 2014 Hewlett-Packard Development Company, L.P.
|
||||||
|
|
||||||
|
This work is licensed under a Creative Commons Attribution 3.0
|
||||||
|
Unported License.
|
||||||
|
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||||
|
|
||||||
|
==================================================
|
||||||
|
Split config into project-config and system-config
|
||||||
|
==================================================
|
||||||
|
|
||||||
|
Story: https://storyboard.openstack.org/#!/story/167
|
||||||
|
|
||||||
|
This describes a further refactor of the openstack-infra/config repo
|
||||||
|
to split system administration from project configuration.
|
||||||
|
|
||||||
|
Problem Description
|
||||||
|
===================
|
||||||
|
|
||||||
|
The config repo, particularly the openstack_project module, contains
|
||||||
|
both information on how our particular systems are operated (what we
|
||||||
|
might call system administration information) as well as the
|
||||||
|
configuration of those systems specific to their use hosting the
|
||||||
|
OpenStack project.
|
||||||
|
|
||||||
|
Much of the latter might be considered more like configuration data.
|
||||||
|
There are a number of people within the OpenStack project competent to
|
||||||
|
review changes to project and CI system configuration, but they are
|
||||||
|
overwhelmed by the system administration related changes in the same
|
||||||
|
repo.
|
||||||
|
|
||||||
|
Likewise, those who would like to help refactor the system
|
||||||
|
administration in the config repo to be more useful to other projects
|
||||||
|
and downstream users are not particularly interested in reviewing new
|
||||||
|
project changes. Further, colocating the two kinds of information
|
||||||
|
makes it potentially harder for downstream users of the config repo.
|
||||||
|
Future refactoring of the system administration portions of the
|
||||||
|
openstack_project module are anticipated by this specification, but
|
||||||
|
are not described here.
|
||||||
|
|
||||||
|
Proposed Change
|
||||||
|
===============
|
||||||
|
|
||||||
|
The following parts of the config repo will be extracted (preserving
|
||||||
|
history where possible) into a new git repo called
|
||||||
|
``openstack-infra/project-config``::
|
||||||
|
|
||||||
|
modules/openstack_project/files/jenkins_job_builder/config/*
|
||||||
|
modules/openstack_project/files/zuul/openstack_functions.py
|
||||||
|
modules/openstack_project/files/zuul/layout.yaml
|
||||||
|
modules/openstack_project/files/zuul/layout-dev.yaml
|
||||||
|
modules/openstack_project/files/accessbot/channels.yaml
|
||||||
|
modules/openstack_project/files/gerrit/acls/*
|
||||||
|
modules/openstack_project/files/gerrit/notify_impact.yaml
|
||||||
|
modules/openstack_project/files/nodepool/scripts/*
|
||||||
|
modules/openstack_project/files/review-dev.projects.yaml
|
||||||
|
modules/openstack_project/files/review.projects.yaml
|
||||||
|
modules/openstack_project/files/slave_scripts/*
|
||||||
|
modules/openstack_project/files/specs/index.html
|
||||||
|
modules/gerritbot/files/gerritbot_channel_config.yaml
|
||||||
|
|
||||||
|
Other files may move into the repo in the future as well as it becomes
|
||||||
|
clear how to separate them from system administration concerns
|
||||||
|
(ongoing work with multiple hiera data files may prove useful here).
|
||||||
|
|
||||||
|
Puppet configuration will then be updated to maintain a vcsrepo
|
||||||
|
checkout of the project-config repo (whose URL will be configurable to
|
||||||
|
support downstream use) and either reference or install files as
|
||||||
|
needed from it. Puppet templates (.erb files) will not be supported.
|
||||||
|
Some puppet actions are triggered by changes to these files, and that
|
||||||
|
will still need to be accomodated.
|
||||||
|
|
||||||
|
The files which have been added to ``project-config`` will be removed
|
||||||
|
from the config repo, and the config repo itself will be renamed to
|
||||||
|
``system-config``.
|
||||||
|
|
||||||
|
Alternatives
|
||||||
|
------------
|
||||||
|
|
||||||
|
N/A.
|
||||||
|
|
||||||
|
Implementation
|
||||||
|
==============
|
||||||
|
|
||||||
|
Assignee(s)
|
||||||
|
-----------
|
||||||
|
|
||||||
|
Primary assignee:
|
||||||
|
corvus (If you want to work on this, contact me!)
|
||||||
|
|
||||||
|
Work Items
|
||||||
|
----------
|
||||||
|
|
||||||
|
* Git filter-branch the listed files into a project-config repo
|
||||||
|
* Propose a change to adjust puppet config to install and reference
|
||||||
|
the project-config repo on related hosts, and remove related files.
|
||||||
|
* Freeze changes to related files.
|
||||||
|
* Update project-config with latest data from config.
|
||||||
|
* Land the above change.
|
||||||
|
* Unfreeze.
|
||||||
|
* Rename config to system-config, and update the puppet master to use
|
||||||
|
the new repo name.
|
||||||
|
|
||||||
|
Repositories
|
||||||
|
------------
|
||||||
|
|
||||||
|
Create openstack-infra/project-config from a git filter-branch of config.
|
||||||
|
Rename openstack-infra/config to openstack-infra/system-config
|
||||||
|
|
||||||
|
Servers
|
||||||
|
-------
|
||||||
|
|
||||||
|
N/A.
|
||||||
|
|
||||||
|
DNS Entries
|
||||||
|
-----------
|
||||||
|
|
||||||
|
N/A.
|
||||||
|
|
||||||
|
Documentation
|
||||||
|
-------------
|
||||||
|
|
||||||
|
The infra/config docs will need to be updated to reference the new
|
||||||
|
repo and locations of files. A new sphinx macro will need to be made
|
||||||
|
to support linking to the new repo within docs. An announcement
|
||||||
|
should be made to both the infra and dev lists.
|
||||||
|
|
||||||
|
Security
|
||||||
|
--------
|
||||||
|
|
||||||
|
None of the listed files have passwords in them and no template
|
||||||
|
parsing is immediately anticipated. If templates (to support, eg,
|
||||||
|
passwords in included files) are to be added to the project-config
|
||||||
|
repo and puppet is instructed to parse them, it could be instructed by
|
||||||
|
a template in the project-config repo to insert a password into a
|
||||||
|
wrong location and thereby either accidentally or intentially exposing
|
||||||
|
it. If templating is used, then reviewers of the project-config repo
|
||||||
|
should be selected with security-related trust in mind and reminded of
|
||||||
|
the potential for exposure.
|
||||||
|
|
||||||
|
Testing
|
||||||
|
-------
|
||||||
|
|
||||||
|
Private environment testing after the creation of the initial
|
||||||
|
project-config repo is likely to be the best way to test the change.
|
||||||
|
|
||||||
|
Dependencies
|
||||||
|
============
|
||||||
|
|
||||||
|
Related to this specification to split out puppet modules, but does
|
||||||
|
not depend on it: https://review.openstack.org/#/c/99990/
|
Loading…
x
Reference in New Issue
Block a user