-
anarcat authored
Looks better in emacs outline
title: Managing static site components
This documentation is about administrating the static site components, from a sysadmin perspective. User documentation lives in doc/static-sites.
Adding a new component
-
add the component to Puppet, in
modules/roles/misc/static-components.yaml
:onionperf.torproject.org: master: staticiforme.torproject.org source: staticiforme.torproject.org:/srv/onionperf.torproject.org/htdocs/
-
create the directory on
staticiforme
:ssh staticiforme "mkdir -p /srv/onionperf.torproject.org/htdocs/ \ && chown torwww:torwww /srv/onionperf.torproject.org/{,htdocs}"
-
add the host to DNS, if not already present, see howto/dns, for example add this line in
dns/domains/torproject.org
:onionperf IN CNAME static
-
add an Apache virtual host, by adding a line like this in howto/puppet to
modules/roles/templates/static-mirroring/vhost/static-vhosts.erb
:vhost(lines, 'onionperf.torproject.org')
-
add an SSL service, by adding a line in howto/puppet to
modules/roles/manifests/static_mirror_web.pp
:ssl::service { onionperf.torproject.org': ensure => 'ifstatic', notify => Exec['service apache2 reload'], key => true, }
This also requires generating an X509 certificate, for which we use Let's encrypt. See howto/letsencrypt for details.
-
add an onion service, by adding another
onion::service
line in howto/puppet tomodules/roles/manifests/static_mirror_onion.pp
:onion::service { [...] 'onionperf.torproject.org', [...] }
-
run Puppet on the master and mirrors:
ssh staticiforme puppet agent -t cumin 'C:roles::static_mirror_web' 'puppet agent -t'
The latter is done with howto/cumin, see also howto/puppet for a way to do jobs on all hosts.
-
consider creating a new role and group for the component if none match its purpose, see howto/create-a-new-user for details:
ssh alberti.torproject.org ldapvi -ZZ --encoding=ASCII --ldap-conf -h db.torproject.org -D "uid=$USER,ou=users,dc=torproject,dc=org"
-
if you created a new group, you will probably need to modify the
sudoers
file to grant a user access to the role/group, seemodules/sudo/files/sudoers
in thetor-puppet
repository (and howto/puppet to learn about how to make changes to Puppet).onionperf
is a good example of how to create asudoers
file. edit the file withvisudo
so it checks the syntax:visudo -f modules/sudo/files/sudoers
This, for example, is the line that was added for
onionperf
:%torwww,%metrics STATICMASTER=(mirroradm) NOPASSWD: /usr/local/bin/static-master-update-component onionperf.torproject.org, /usr/local/bin/static-update-component onionperf.torproject.org
-
add to nagios monitoring, in
tor-nagios/config/nagios-master.cfg
:- name: mirror static sync - atlas check: "dsa_check_staticsync!atlas.torproject.org" hosts: global servicegroups: mirror
Removing a component
-
remove the component to Puppet, in
modules/roles/misc/static-components.yaml
-
remove the host to DNS, if not already present, see howto/dns. this can be either in
dns/domains.git
ordns/auto-dns.git
-
remove the Apache virtual host, by removing a line like this in howto/puppet to
modules/roles/templates/static-mirroring/vhost/static-vhosts.erb
:vhost(lines, 'onionperf.torproject.org')
-
remove an SSL service, by removing a line in howto/puppet to
modules/roles/manifests/static_mirror_web.pp
:ssl::service { onionperf.torproject.org': ensure => 'ifstatic', notify => Exec['service apache2 reload'], key => true, }
-
remove the Let's encrypt certificate, see howto/letsencrypt for details
-
remove onion service, by removing another
onion::service
line in howto/puppet tomodules/roles/manifests/static_mirror_onion.pp
:onion::service { [...] 'onionperf.torproject.org', [...] }
-
remove the sudo rules for the role user
-
remove the home directory specified on the server (often
staticiforme
, but can be elsewhere) and mirrors, for example:ssh staticiforme "mv /home/ooni /home/ooni-OLD ; echo rm -rf /home/ooni-OLD | at now + 7 days" cumin -o txt 'C:roles::static_mirror_web' 'mv /srv/static.torproject.org/mirrors/ooni.torproject.org /srv/static.torproject.org/mirrors/ooni.torproject.org-OLD' cumin -o txt 'C:roles::static_mirror_web' 'echo rm -rf /srv/static.torproject.org/mirrors/ooni.torproject.org-OLD | at now + 7 days'
-
consider removing the role user and group in LDAP, if there are no files left owned by that user
-
remove from nagios, e.g.:
name: mirror static sync - atlas check: "dsa_check_staticsync!atlas.torproject.org" hosts: global servicegroups: mirror