@@ -42,32 +42,36 @@ This phase ensures that, once Tails code is copied to Tor's Puppet Control repo:
...
@@ -42,32 +42,36 @@ This phase ensures that, once Tails code is copied to Tor's Puppet Control repo:
### Converge in structure
### Converge in structure
- Tails:
Tails:
- Switch from Git submodules to using g10k ([#41974](https://gitlab.torproject.org/tpo/tpa/team/-/issues/41974))
- Remove ENC configuration, Tails don't really use it and the Puppet server switch will implement Tor's instead
- (1.1) Switch from Git submodules to using g10k ([#41974](https://gitlab.torproject.org/tpo/tpa/team/-/issues/41974))
- Move node definitions under `manifests/nodes.pp` to roles
- (1.2) Remove ENC configuration, Tails don't really use it and the Puppet server switch will implement Tor's instead
- Switch to the directory structure used by Tor:
- (1.3) Move node definitions under `manifests/nodes.pp` to roles
- Move custom non-profile modules (`bitcoind`, `borgbackup`, `etckeeper`, `gitolite`, `rbac`, `reprepro`, `rss2email`, `tails`, `tirewall` and `yapgp`) to `legacy/`. Note: there are no naming conflicts in this case.
- (1.4) Switch to the directory structure used by Tor:
- Make sure to leave only 3rd party modules under `modules/`. There are 2 naming conflicts here (`unbound` and `network`): Tails uses these from voxpupuli and Tor uses custom ones in `legacy/`, so in these cases we deprecate the Tor ones in favor of voxpupuli's.
- Move custom non-profile modules (`bitcoind`, `borgbackup`, `etckeeper`, `gitolite`, `rbac`, `reprepro`, `rss2email`, `tails`, `tirewall` and `yapgp`) to `legacy/`. Note: there are no naming conflicts in this case.
- Rename `hieradata` to `data`
- Make sure to leave only 3rd party modules under `modules/`. There are 2 naming conflicts here (`unbound` and `network`): Tails uses these from voxpupuli and Tor uses custom ones in `legacy/`, so in these cases we deprecate the Tor ones in favor of voxpupuli's.
- Rename `profiles` to `site`
- Rename `hieradata` to `data`
- Move default configuration to a new `profile::tails` class and include it in all nodes
- Rename `profiles` to `site`
- (1.5) Move default configuration to a new `profile::tails` class and include it in all nodes
### Converge in substance
### Converge in substance
- Tails:
Tails:
- Rename all profiles from `tails::profile` to `profile::tails`
- Ensure all exported resources' tags are prefixed with tails_
- (1.6) Rename all profiles from `tails::profile` to `profile::tails`
- Upgrade 3rdparty modules to match TPA versions
- (1.7) Ensure all exported resources' tags are prefixed with tails_
- Tor:
- (1.8) Upgrade 3rdparty modules to match TPA versions
- Install all `3rdparty` modules that are used by Tails but not by Tor
- Isolate all exported resources and collectors using tags
Tor:
- Move default configuration to a new `profile::tpa` class and include it in all nodes
- Enforce signed commits
- (1.9) Install all `3rdparty` modules that are used by Tails but not by Tor
- Ensure all private data is moved to Trocla and publish the repo ([tpo/tpa/team#29387](https://gitlab.torproject.org/tpo/tpa/team/-/issues/29387))
- (1.10) Isolate all exported resources and collectors using tags
- Import the `tails::profile::puppet::eyaml` profile into TPA's `profile::puppet::server`
- (1.11) Move default configuration to a new `profile::tpa` class and include it in all nodes
- Copy the EYAML keys from the Tails to the Tor puppet server, and adapt `hiera.yaml` to use them
- (1.12) Enforce signed commits
- Upgrade 3rdparty modules to match Tails versions
- (1.13) Ensure all private data is moved to Trocla and publish the repo ([tpo/tpa/team#29387](https://gitlab.torproject.org/tpo/tpa/team/-/issues/29387))
- (1.14) Import the `tails::profile::puppet::eyaml` profile into TPA's `profile::puppet::server`
- (1.15) Copy the EYAML keys from the Tails to the Tor puppet server, and adapt `hiera.yaml` to use them
- (1.16) Upgrade 3rdparty modules to match Tails versions
When we say "upgrade", we don't mean to upgrade to the latest upstream
When we say "upgrade", we don't mean to upgrade to the latest upstream
version of a module, but to the latest release that is highest version
version of a module, but to the latest release that is highest version
...
@@ -83,28 +87,28 @@ considering the Tails codebase is generally tidier.
...
@@ -83,28 +87,28 @@ considering the Tails codebase is generally tidier.
This phase moves all nodes from one Puppet server to the other:
This phase moves all nodes from one Puppet server to the other:
-Copy `legacy` modules from Tails to Tor
-(2.1) Copy code (`legacy` modules and profiles) from Tails to Tor
-Copy profiles from Tails to Tor
-(2.2) Create a flag that determines whether a node is Tails or TPA and which
- Create a flag that determines whether a node is Tails or TPA and which base class it should include
base class it should include, and assign nodes to their corresponding base
- Assign nodes to their corresponding base class using the flag above
class using the flag above
- Point Tails nodes to the Tor Puppet server
-(2.3) Point Tails nodes to the Tor Puppet server
- Retire the Tails' Puppet server
-(2.4) Retire the Tails' Puppet server
## Phase 3: Towards a more homogeneous codebase
## Phase 3: Codebase homogeneity
This phase paves the way towards a cleaner future:
This phase paves the way towards a cleaner future:
- Remove all `tails::profile::puppet` profiles
- (3.1) Remove all `tails::profile::puppet` profiles
- Merge the 8 conflicting Tails and TPA profiles:
- (3.2) Merge the 8 conflicting Tails and TPA profiles:
-`grub`
-`grub`
-`limesurvey`
-`limesurvey`
-`mta`
-`mta`
-`nginx`
-`nginx`
-`podman`
-`podman`
-`rspamd`
-`rspamd`
-`sudo`
-`sudo`
-`sysctl`
-`sysctl`
- Move the remaining 114 non-conflicting Tails profiles to `profile` (without `::tails`)
- (3.3) Move the remaining 114 non-conflicting Tails profiles to `profile` (without `::tails`)
At this point, we'll have 244 profiles.
At this point, we'll have 244 profiles.
...
@@ -127,14 +131,119 @@ services on a need-to basis, and progress in the merge roadmap.
...
@@ -127,14 +131,119 @@ services on a need-to basis, and progress in the merge roadmap.
# Costs
# Costs
TODO: try to break down costs of each of the above steps, to get a
To estimate costs of tasks in days of work, We use the same parameters as
broad idea of how long all this work is going to take (and generate