200 lines
		
	
	
		
			6.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			200 lines
		
	
	
		
			6.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| =head1 NAME
 | |
| 
 | |
| App::Netdisco::Manual::Deployment - Tips and Tricks for Deployment
 | |
| 
 | |
| =head1 Init and Run Control Scripts
 | |
| 
 | |
| The Netdisco applications will generate RC scripts suitable for Linux systems:
 | |
| 
 | |
|  bin/netdisco-web get_init_file
 | |
|  bin/netdisco-backend get_init_file
 | |
| 
 | |
| On C<systemd>-based systems please see L<our systemd
 | |
| guide|App::Netdisco::Manual::Systemd>.
 | |
| 
 | |
| On BSD systems please see L<our BSD tips|App::Netdisco::Manual::BSDInstall>,
 | |
| and submit patches against the L<Daemon::Control> distribution.
 | |
| 
 | |
| =head1 Enable MD5 authentication to PostgreSQL
 | |
| 
 | |
| Some installations of PostgreSQL don't have MD5 authentication enabled by
 | |
| default, which blocks database connections with the default Netdisco
 | |
| configuration.
 | |
| 
 | |
| If your database and Netdisco are on the same system, then the easiest
 | |
| solution is to comment out the "C<host:>" line in your C<deployment.yml> file.
 | |
| 
 | |
| Alternatively, reconfigure PostgreSQL to permit MD5 auth for TCP connections
 | |
| by adding the following to your system's "C<pg_hba.conf>" file (and restarting
 | |
| the database service):
 | |
| 
 | |
|  # TYPE  DATABASE  USER  ADDRESS       METHOD
 | |
|  host    all       all   127.0.0.1/32  md5
 | |
| 
 | |
| =head1 Run multiple poller daemons
 | |
| 
 | |
| A common scenario is that the network is split into security domains (or
 | |
| zones) and one Netdisco poller daemon cannot see all devices.
 | |
| 
 | |
| You can run multiple pollers, as long as they all connect back to the same
 | |
| PostgreSQL database. Use the C<devices_only> or C<devices_no> configuration
 | |
| settings to control which devices are "seen" by each poller. You can also
 | |
| include only the necessary minimum SNMP community/authentication settings in
 | |
| each poller's configuration.
 | |
| 
 | |
| Of course you will also need to start the web server somewhere, as well.
 | |
| 
 | |
| =head1 Connect to PostgreSQL database on non-standard port
 | |
| 
 | |
| The standard port for PostgreSQL is 5432. To connect on a different port you
 | |
| need to use the C<host> option under C<database:> config in your
 | |
| C<~/environments/deployment.yml> file. For example if connecting to a database
 | |
| on the local server:
 | |
| 
 | |
|  database:
 | |
|    name: 'netdisco'
 | |
|    user: 'changeme'
 | |
|    pass: 'changeme'
 | |
|    host: 'localhost;port=5432'
 | |
| 
 | |
| Obviously, substitute the C<user>, C<pass>, and actual port number for your
 | |
| local values. Note the separator character is a semicolon.
 | |
| 
 | |
| =head1 Deploy without Internet access
 | |
| 
 | |
| The C<netdisco-deploy> script asks for Internet access but it is possible to
 | |
| install off-line. You should download the following two files:
 | |
| 
 | |
| =over 4
 | |
| 
 | |
| =item *
 | |
| 
 | |
| https://raw.githubusercontent.com/netdisco/upstream-sources/master/ieee/oui.txt
 | |
| 
 | |
| =item *
 | |
| 
 | |
| https://github.com/netdisco/netdisco-mibs/releases/latest (download link is on the page)
 | |
| 
 | |
| =back
 | |
| 
 | |
| Run the C<netdisco-deploy> script but pass the OUI file name as a parameter on
 | |
| the command line, for example:
 | |
| 
 | |
|  ~/bin/netdisco-deploy ./oui.txt
 | |
| 
 | |
| Then answer yes to questions, even though you're not connected to the
 | |
| Internet.
 | |
| 
 | |
| For the MIBs you can simply extract the downloaded archive to the home
 | |
| directory of Netdisco, and change the name of the directory to
 | |
| C<netdisco-mibs>.
 | |
| 
 | |
| =head1 Relocating the Installation
 | |
| 
 | |
| The installation process installs Netdisco self-contained to your home
 | |
| directory. The target directory can easily be changed by setting the
 | |
| C<NETDISCO_HOME> environment variable, for example:
 | |
| 
 | |
|  export NETDISCO_HOME=/opt/netdisco
 | |
| 
 | |
| Obviously, you'll need to substitute this wherever you see "C<~>" in the
 | |
| installation instructions. The Netdisco application will use this setting
 | |
| itself to locate files and configuration.
 | |
| 
 | |
| =head1 Pass Options to the Web Frontend Daemon
 | |
| 
 | |
| Simply add any options after the "C<start>" command. See other sections of
 | |
| this document for some examples.
 | |
| 
 | |
| =head1 Non-root Hosting
 | |
| 
 | |
| Netdisco will assume its web site is hosted at the apex of your server - that
 | |
| is, the document root. To relocate the web application, pass the C<--path>
 | |
| parameter to the web startup script:
 | |
| 
 | |
|  ~/bin/netdisco-web start --path=/netdisco2
 | |
| 
 | |
| Alternatively, can set the C<path> configuration option in your
 | |
| C<deployment.yml> file:
 | |
| 
 | |
|  path: '/netdisco2'
 | |
| 
 | |
| =head1 Listening Port for the Web Frontend
 | |
| 
 | |
| Pass the C<--port> parameter to any of the web scripts. For example:
 | |
| 
 | |
|  ~/bin/netdisco-web start --port=8080
 | |
| 
 | |
| =head1 Listening Address for the Web Frontend
 | |
| 
 | |
| Pass the C<--host> parameter to any of the web scripts. For example:
 | |
| 
 | |
|  ~/bin/netdisco-web start --host=127.0.0.1
 | |
| 
 | |
| =head1 Behind a Proxy
 | |
| 
 | |
| By default the web application daemon starts listening on port 5000 and goes 
 | |
| into the background. This is ideal for hosting behind a web proxy (e.g. Apache
 | |
| with C<mod_proxy>).
 | |
| 
 | |
| After enabling the C<headers>, C<proxy> and C<proxy_http> modules in Apache, a
 | |
| suitable configuration would be:
 | |
| 
 | |
|  ProxyPreserveHost On
 | |
|  ProxyPass / http://localhost:5000/ retry=0 timeout=60
 | |
|  ProxyPassReverse / http://localhost:5000/
 | |
|  
 | |
|  ProxyRequests Off
 | |
|  <Proxy *>
 | |
|    Order allow,deny
 | |
|    Allow from all
 | |
|  </Proxy>
 | |
| 
 | |
| To combine this with Non-root Hosting as above, simply change the paths
 | |
| referenced in the configuration, and set C<path> in your C<deployment.yml> as
 | |
| discussed above. Note there is no trailing slash in the Apache config:
 | |
| 
 | |
|  ProxyPass /netdisco2 http://localhost:5000/netdisco2 retry=0 timeout=60
 | |
|  ProxyPassReverse /netdisco2 http://localhost:5000/netdisco2
 | |
| 
 | |
| To delegate user authentication to Apache, use the C<trust_remote_user> or
 | |
| C<trust_x_remote_user> settings. See L<App::Netdisco::Manual::Configuration>
 | |
| for more details.
 | |
| 
 | |
| =head1 SSL Support
 | |
| 
 | |
| There is no SSL support in the built-in web server. This is because it's not
 | |
| straightforward to support all the SSL options, and using port 443 requires
 | |
| root privilege, which the Netdisco application should not have.
 | |
| 
 | |
| You are instead recommended to run C<netdisco-web> behind a reverse proxy as
 | |
| described elsewhere in this document. Apache can easily act as an SSL reverse
 | |
| proxy.
 | |
| 
 | |
| =head1 Database Backups
 | |
| 
 | |
| We recommend you backup the Netdisco database regularly. You could put the
 | |
| following commands into a shell script and call it nightly from C<cron>:
 | |
| 
 | |
|  DATE=`date +%Y%m%d`
 | |
|  /usr/bin/pg_dump -F c --create -f /path/to/backups/netdisco-pgsql-$DATE.dump netdisco
 | |
|  gzip -9f /path/to/backups/netdisco-pgsql-$DATE.dump
 | |
|  /usr/bin/find /path/to/backups/ -type f -ctime +30 -exec rm {} \;
 | |
| 
 | |
| This will keep 30 days of backups. You don't need to stop Netdisco during the
 | |
| backup.
 | |
| 
 | |
| =head1 Display all Table Rows as Default
 | |
| 
 | |
| Add the following to your configuration:
 | |
| 
 | |
|  table_pagesize: -1
 | |
| 
 | |
| =head1 Further Reading...
 | |
| 
 | |
| Other ways to run and host the web application can be found in the
 | |
| L<Dancer::Deployment> page. See also the L<plackup> and L<starman>
 | |
| documentation.
 | |
| 
 | |
| =cut
 |