Page MenuHomePhabricator

nginx puppet manifest requires nfs so error page cannot be updated over puppet
Closed, ResolvedPublic

Description

for https://wikitech.wikimedia.org/wiki/Nova_Resource:Tools/Admin/emergency_guides/labs_down_notification

Notice: /Stage[main]/Role::Labs::Instance/Exec[block-for-project-export]/returns: executed successfully
Notice: /Stage[main]/Toollabs/File[/data/project/.system/gridengine]: Dependency File[/data/project/.system] has failures: true
Warning: /Stage[main]/Toollabs/File[/data/project/.system/gridengine]: Skipping because of failed dependencies
Notice: /Stage[main]/Toollabs/File[/data/project/.system/store]: Dependency File[/data/project/.system] has failures: true
Warning: /Stage[main]/Toollabs/File[/data/project/.system/store]: Skipping because of failed dependencies
Notice: /Stage[main]/Toollabs/Exec[make_known_hosts]: Dependency File[/data/project/.system] has failures: true
Warning: /Stage[main]/Toollabs/Exec[make_known_hosts]: Skipping because of failed dependencies
Notice: /Stage[main]/Toollabs/Mount[/var/lib/gridengine]: Dependency File[/data/project/.system] has failures: true
Warning: /Stage[main]/Toollabs/Mount[/var/lib/gridengine]: Skipping because of failed dependencies
Notice: /Stage[main]/Gridengine/Package[gridengine-common]: Dependency File[/data/project/.system] has failures: true
Warning: /Stage[main]/Gridengine/Package[gridengine-common]: Skipping because of failed dependencies
Notice: /Stage[main]/Toollabs/Labsdebrepo[/data/project/.system/deb-trusty]/Package[dpkg-dev]: Dependency File[/data/project/.system] has failures: true
Warning: /Stage[main]/Toollabs/Labsdebrepo[/data/project/.system/deb-trusty]/Package[dpkg-dev]: Skipping because of failed dependencies
Notice: /Stage[main]/Misc::Labsdebrepo/Labsdebrepo[/data/project/repo]/Exec[Turn /data/project/repo into deb repo]: Dependency File[/data/project/.system] has failures: true
Warning: /Stage[main]/Misc::Labsdebrepo/Labsdebrepo[/data/project/repo]/Exec[Turn /data/project/repo into deb repo]: Skipping because of failed dependencies
Notice: /Stage[main]/Misc::Labsdebrepo/Labsdebrepo[/data/project/repo]/File[/etc/apt/sources.list.d/labsdebrepo.list]: Dependency File[/data/project/.system] has failures: true
Warning: /Stage[main]/Misc::Labsdebrepo/Labsdebrepo[/data/project/repo]/File[/etc/apt/sources.list.d/labsdebrepo.list]: Skipping because of failed dependencies
Notice: /Stage[main]/Toollabs/File[/data/project/.system/gridengine/collectors]: Dependency File[/data/project/.system] has failures: true
Warning: /Stage[main]/Toollabs/File[/data/project/.system/gridengine/collectors]: Skipping because of failed dependencies
Notice: /Stage[main]/Toollabs/File[/etc/ssh/ssh_known_hosts]: Dependency File[/data/project/.system] has failures: true
Warning: /Stage[main]/Toollabs/File[/etc/ssh/ssh_known_hosts]: Skipping because of failed dependencies
Notice: /Stage[main]/Role::Labs::Instance/Exec[block-for-home-export]/returns: executed successfully
Notice: /Stage[main]/Toollabs/File[/data/project/.system/store/hostkey-tools-webproxy-02.tools.eqiad.wmflabs]: Dependency File[/data/project/.system] has failures: true
Warning: /Stage[main]/Toollabs/File[/data/project/.system/store/hostkey-tools-webproxy-02.tools.eqiad.wmflabs]: Skipping because of failed dependencies
Notice: /Stage[main]/Nginx/Package[nginx-extras]: Dependency File[/data/project/.system] has failures: true
Warning: /Stage[main]/Nginx/Package[nginx-extras]: Skipping because of failed dependencies
Notice: /Stage[main]/Nginx/File[/etc/nginx/sites-enabled]: Dependency File[/data/project/.system] has failures: true
Warning: /Stage[main]/Nginx/File[/etc/nginx/sites-enabled]: Skipping because of failed dependencies
Notice: /Stage[main]/Nginx/File[/etc/nginx/sites-available]: Dependency File[/data/project/.system] has failures: true
Warning: /Stage[main]/Nginx/File[/etc/nginx/sites-available]: Skipping because of failed dependencies
Notice: /Stage[main]/Dynamicproxy/Diamond::Collector::Nginx[diamond-monitor-proxy]/Nginx::Status_site[status]/Nginx::Site[status]/File[/etc/nginx/sites-available/status]: Dependency File[/data/project/.system] has failures: true
Warning: /Stage[main]/Dynamicproxy/Diamond::Collector::Nginx[diamond-monitor-proxy]/Nginx::Status_site[status]/Nginx::Site[status]/File[/etc/nginx/sites-available/status]: Skipping because of failed dependencies
Notice: /Stage[main]/Dynamicproxy/File[/etc/nginx/lua]: Dependency File[/data/project/.system] has failures: true
Warning: /Stage[main]/Dynamicproxy/File[/etc/nginx/lua]: Skipping because of failed dependencies
Notice: /Stage[main]/Dynamicproxy/File[/etc/nginx/lua/list-proxy-entries.lua]: Dependency File[/data/project/.system] has failures: true
Warning: /Stage[main]/Dynamicproxy/File[/etc/nginx/lua/list-proxy-entries.lua]: Skipping because of failed dependencies
Notice: /Stage[main]/Dynamicproxy/Nginx::Site[proxymanager]/File[/etc/nginx/sites-available/proxymanager]: Dependency File[/data/project/.system] has failures: true
Warning: /Stage[main]/Dynamicproxy/Nginx::Site[proxymanager]/File[/etc/nginx/sites-available/proxymanager]: Skipping because of failed dependencies
Notice: /Stage[main]/Dynamicproxy/Nginx::Site[proxymanager]/File[/etc/nginx/sites-enabled/proxymanager]: Dependency File[/data/project/.system] has failures: true
Warning: /Stage[main]/Dynamicproxy/Nginx::Site[proxymanager]/File[/etc/nginx/sites-enabled/proxymanager]: Skipping because of failed dependencies
Notice: /Stage[main]/Dynamicproxy/File[/etc/nginx/lua/resty]: Dependency File[/data/project/.system] has failures: true
Warning: /Stage[main]/Dynamicproxy/File[/etc/nginx/lua/resty]: Skipping because of failed dependencies
Notice: /Stage[main]/Dynamicproxy/File[/etc/nginx/lua/resty/redis.lua]: Dependency File[/data/project/.system] has failures: true
Warning: /Stage[main]/Dynamicproxy/File[/etc/nginx/lua/resty/redis.lua]: Skipping because of failed dependencies
Notice: /Stage[main]/Dynamicproxy/File[/etc/nginx/lua/urlproxy.lua]: Dependency File[/data/project/.system] has failures: true
Warning: /Stage[main]/Dynamicproxy/File[/etc/nginx/lua/urlproxy.lua]: Skipping because of failed dependencies
Notice: /Stage[main]/Dynamicproxy/Nginx::Site[proxy]/File[/etc/nginx/sites-available/proxy]: Dependency File[/data/project/.system] has failures: true
Warning: /Stage[main]/Dynamicproxy/Nginx::Site[proxy]/File[/etc/nginx/sites-available/proxy]: Skipping because of failed dependencies
Notice: /Stage[main]/Dynamicproxy/Nginx::Site[proxy]/File[/etc/nginx/sites-enabled/proxy]: Dependency File[/data/project/.system] has failures: true
Warning: /Stage[main]/Dynamicproxy/Nginx::Site[proxy]/File[/etc/nginx/sites-enabled/proxy]: Skipping because of failed dependencies
Notice: /Stage[main]/Toollabs/Labsdebrepo[/data/project/.system/deb-trusty]/File[/data/project/.system/deb-trusty]: Dependency File[/data/project/.system] has failures: true
Warning: /Stage[main]/Toollabs/Labsdebrepo[/data/project/.system/deb-trusty]/File[/data/project/.system/deb-trusty]: Skipping because of failed dependencies
Notice: /Stage[main]/Toollabs/Labsdebrepo[/data/project/.system/deb-trusty]/Exec[Turn /data/project/.system/deb-trusty into deb repo]: Dependency File[/data/project/.system] has failures: true
Warning: /Stage[main]/Toollabs/Labsdebrepo[/data/project/.system/deb-trusty]/Exec[Turn /data/project/.system/deb-trusty into deb repo]: Skipping because of failed dependencies
Notice: /Stage[main]/Toollabs/Labsdebrepo[/data/project/.system/deb-trusty]/Exec[Turn /data/project/.system/deb-trusty into deb repo]: Dependency File[/data/project/.system] has failures: true
Warning: /Stage[main]/Toollabs/Labsdebrepo[/data/project/.system/deb-trusty]/Exec[Turn /data/project/.system/deb-trusty into deb repo]: Skipping because of failed dependencies
Notice: /Stage[main]/Toollabs/Labsdebrepo[/data/project/.system/deb-trusty]/File[/etc/apt/sources.list.d/tools-project.list]: Dependency File[/data/project/.system] has failures: true
Warning: /Stage[main]/Toollabs/Labsdebrepo[/data/project/.system/deb-trusty]/File[/etc/apt/sources.list.d/tools-project.list]: Skipping because of failed dependencies
Notice: /Stage[main]/Nginx/Package[nginx-common]: Dependency File[/data/project/.system] has failures: true
Warning: /Stage[main]/Nginx/Package[nginx-common]: Skipping because of failed dependencies
Notice: /Stage[main]/Dynamicproxy/File[/etc/nginx/nginx.conf]: Dependency File[/data/project/.system] has failures: true
Warning: /Stage[main]/Dynamicproxy/File[/etc/nginx/nginx.conf]: Skipping because of failed dependencies
Notice: /Stage[main]/Dynamicproxy/File[/etc/security/limits.conf]: Dependency File[/data/project/.system] has failures: true
Warning: /Stage[main]/Dynamicproxy/File[/etc/security/limits.conf]: Skipping because of failed dependencies
Notice: /Stage[main]/Dynamicproxy/Diamond::Collector::Nginx[diamond-monitor-proxy]/Nginx::Status_site[status]/Nginx::Site[status]/File[/etc/nginx/sites-enabled/status]: Dependency File[/data/project/.system] has failures: true
Warning: /Stage[main]/Dynamicproxy/Diamond::Collector::Nginx[diamond-monitor-proxy]/Nginx::Status_site[status]/Nginx::Site[status]/File[/etc/nginx/sites-enabled/status]: Skipping because of failed dependencies
Notice: /Stage[main]/Toollabs/Labsdebrepo[/data/project/.system/deb-trusty]/File[/etc/apt/preferences.d/tools-project.pref]: Dependency File[/data/project/.system] has failures: true
Warning: /Stage[main]/Toollabs/Labsdebrepo[/data/project/.system/deb-trusty]/File[/etc/apt/preferences.d/tools-project.pref]: Skipping because of failed dependencies
Notice: /Stage[main]/Nginx/File[/etc/nginx/conf.d]: Dependency File[/data/project/.system] has failures: true
Warning: /Stage[main]/Nginx/File[/etc/nginx/conf.d]: Skipping because of failed dependencies
Notice: /Stage[main]/Nginx/Service[nginx]: Dependency File[/data/project/.system] has failures: true
Warning: /Stage[main]/Nginx/Service[nginx]: Skipping because of failed dependencies
Notice: Finished catalog run in 1178.05 seconds

Event Timeline

valhallasw raised the priority of this task from to Needs Triage.
valhallasw updated the task description. (Show Details)
valhallasw added a project: Toolforge.
valhallasw subscribed.
Restricted Application added a subscriber: Aklapper. · View Herald Transcript

At the moment, we include the "local" NFS Debian repository everywhere.

  1. I believe for the proxy we nowadays only need the package lua-json_1.3.2-1_all.deb (cf. https://gerrit.wikimedia.org/r/#/c/203313/) which – some day – will come through Ubuntu Backports (cf. T91874). After that, we could limit the inclusion of the local repository to the hosts that need them, or, even better, to the packages that come from there (package { 'x': ensure => installed, require => Labsdebrepo[$toollabs::repo], }). The latter would also solve Puppet errors on new instances where packages are required before the configuration for the local repository is in place.
  2. @yuvipanda recently created the aptly Puppet module which – AFAIUI – creates an apt repository accessible by network. This requires testing how the aptly server reacts to when its "source" file system is inaccessible or a copying mechanism/manual checklist to refresh an instance-local file system with the packages from the source, and it would be nice if we could include the aptly server on multiple instances and configure the clients via Hiera.

Yes, I think you're right the root cause is the labsdebrepo. Specifically, I think the dependency chain is

Notice: /Stage[main]/Dynamicproxy/Nginx::Site[proxy]/File[/etc/nginx/sites-available/proxy]: Dependency File[/data/project/.system] has failures: true
Warning: /Stage[main]/Dynamicproxy/Nginx::Site[proxy]/File[/etc/nginx/sites-available/proxy]: Skipping because of failed dependencies
Notice: /Stage[main]/Dynamicproxy/Nginx::Site[proxy]/File[/etc/nginx/sites-enabled/proxy]: Dependency File[/data/project/.system] has failures: true
Warning: /Stage[main]/Dynamicproxy/Nginx::Site[proxy]/File[/etc/nginx/sites-enabled/proxy]: Skipping because of failed dependencies

which depends on Package["nginx-extras"] via the 'nginx' tag (module nginx). That Package is installed in module dynamicproxy using

class { 'nginx':
    variant => 'extras',
    require => Class['misc::labsdebrepo'],
}

and of course Class['misc::labsdebrepo'] depends on NFS to be online. The require in this nginx class is because of the lua-json issue you pointed out.

I think the require in:

class { 'nginx':
    variant => 'extras',
    require => Class['misc::labsdebrepo'],
}

is an artifact when the proxy ran Precise and the nginx version needed was only available from Trusty. To clean up that manifest up (with a focus on the Lua modules) I had filed T95442.

There are of course also references to /data/project/.system and subdirectories themselves in class toollabs.

*nod*. In general, it's OK if parts of the puppet manifest fail, but in this case, it prevented /etc/nginx/sites-enabled/proxy from being updated.

To switch to the 503 handler, puppet needs to do three things:

  • update /var/www/error/errorpage.html (worked correctly)
  • update /etc/nginx/sites-enabled/proxy to show /var/www/error/* instead of proxying (didn't work)
  • reload nginx configuration (also didn't work)

This should be fine now that we're using aptly and it doesn't use NFS.

bd808 claimed this task.
bd808 added subscribers: yuvipanda, bd808.

This should be fine now that we're using aptly and it doesn't use NFS.