Project

General

Profile

Feature #11836

Feature #11834: Migrate our infrastructure to Puppet 4

Stop stringifying Puppet facts

Added by intrigeri about 1 year ago. Updated 5 months ago.

Status:
In Progress
Priority:
Normal
Assignee:
Category:
Infrastructure
Target version:
Start date:
09/24/2016
Due date:
% Done:

10%

QA Check:
Feature Branch:
Type of work:
Sysadmin
Blueprint:
Easy:
Affected tool:


Related issues

Blocks Tails - Feature #11837: Upgrade Puppet master to Puppet 4 Confirmed 09/24/2016
Blocked by Tails - Feature #11835: Upgrade Puppet master and clients to 3.8 Resolved 09/24/2016

History

#1 Updated by intrigeri about 1 year ago

  • Parent task set to #11834

#2 Updated by intrigeri about 1 year ago

#3 Updated by intrigeri about 1 year ago

  • Blocked by Feature #11835: Upgrade Puppet master and clients to 3.8 added

#4 Updated by intrigeri about 1 year ago

  • Assignee set to intrigeri
  • Target version set to Tails_2.7

I'll try to do that during this dev cycle, we'll see how time-consuming a task it really is.

#5 Updated by intrigeri about 1 year ago

  • Status changed from Confirmed to In Progress
  • % Done changed from 0 to 10

Applied, this breaks stuff with "can't cast Hash to text". Will investigate.

#6 Updated by intrigeri about 1 year ago

Reverted. Emptying a node definition is not enough to fix the problem.

#7 Updated by intrigeri about 1 year ago

I've verified that Puppet 4 indeed dropped the stringify_facts option.

It might be that this problem is caused by using storedconfigs with ActiveRecord + thin_storeconfigs, which is deprecated: on a system of mine, that has storeconfigs disabled, and uses lots of the same modules as Tails' infra, I don't see this problem. It might be that moving to PuppetDB will fix it, but I'm not too hopeful.

The Puppet doc says "This should only affect you if you have custom facts that naïvely return something other than a string (a bool, an array…) and you also have regexes or templates that don’t expect structured facts and rely on that implicit coercion to string" so perhaps a template or manifest of ours does something wrong.

Next debugging step is to set up a testing environment (e.g. using a Puppet environment) that has no module nor custom template at all, have a node use it, and then:

  • either an empty node definition exposes the problem: then the problem is probably caused by lower level bit of our config, most likely using storeconfigs + thin_storeconfigs with an ActiveRecord backend; and then we'll need to switch to PuppetDB in order to fix that (either at the same time as we upgrade to Puppet 4, or earlier but we'll need PuppetDB 2.x since 3.x requires a Puppet 4 master);
  • or, an empty node definition works: and then we can incrementally add our modules and custom code/templates until the culprit is identified, and then we can fix it, and disable stringify_facts on all our systems.

#8 Updated by intrigeri 12 months ago

  • Target version changed from Tails_2.7 to 284

Best case I'll work on this around December 17-20.

#9 Updated by anonym 11 months ago

  • Target version changed from 284 to Tails 2.10

#10 Updated by intrigeri 9 months ago

  • Target version changed from Tails 2.10 to Tails_2.11

#11 Updated by intrigeri 8 months ago

  • Target version changed from Tails_2.11 to Tails_3.1

Best case I'll work on this in June-July.

#12 Updated by intrigeri 5 months ago

  • Target version changed from Tails_3.1 to Tails_3.2

#13 Updated by intrigeri 5 months ago

  • Target version changed from Tails_3.2 to Tails_3.4

I would like to tackle our yearly hardware upgrade before starting seriously working on Puppet 4.

Also available in: Atom PDF