USAGE for reset_sdp.sh v3.7.0: reset_sdp.sh [-B|-local] [-fast] [-c <cfg>] [-no_ssl] [-no_sd] [-no_ppr] [-b <branch>[,@cl] | -t <tarfile> | -d <sdp_dir>] [-p <dir1>[,<dir2>,...]>] [-i <helix_installer_branch>] [-D] [-X|-R] or reset_sdp.sh -C > reset_sdp.cfg or reset_sdp.sh [-h|-man] SAFETY NOTICE: This script SHOULD NEVER EXIST on a Production Perforce server. DESCRIPTION: This script simplifies the process of testing an SDP installation, repetitively blasting all process by the 'perforce' user and resetting the SDP from the ground up, blasting typical SDP folders each time. It installs the Perforce Helix Core server (P4D) with a P4Broker, and installs the Perforce Sample Depot data set used for training and PoC installations. It is helpful when bootstrapping a demo server with a sample data set, complete with broker, and optionally Perl/P4Perl and Python/P4Python. This script handles all aspects of installation. It does the following: * Creates the perforce OS user, if needed. * Creates the home directory for the perforce user, if needed. * Adds OS packages as needed for P4Perl/P4Python local builds. Following installation, it also does the following to be more convenient for demos, and also give a more production-like feel: * Grants the perforce user sudo access. * Creates default ~perforce/.bash_profile and .bashrc files. * Connects to the Perforce Package Repository (APT and YUM only). PLATFORM SUPPORT: This works on Red Hat Enterprise Linux, CentOS, and Mac OSX 10.10+ thru Mojave platforms. It works on RHEL/CentOS 6.4-7.6, SuSE Linux 12, and likely on Ubuntu 18 and other Linux distros with little or no modification. This script currently supports the bin.linux26x86_64 (Linux) and bin.maxosx1010x86_64 (Mac OSX/Darwin) architectures. This script recognizes SysV, Systemd, and Launchd init mechanisms, though does not currently support Launchd on OSX. For Mac OSX, note that this requires bash 4.x, and the default bash on Mac OSX remains 3.x as of OSX Mojave. For operating on Mac, the /bin/bash shebang line needs to be adjusted to reference a bash 4 version, e.g. /usr/local/bin/bash if installed with Homebrew. REQUIREMENTS: The following OS packages are installed (unless '-fast' is used): * Yum: curl gcc gcc-c++ make openssl openssl-devel rsync wget zlib zlib-devel * AptGet: build-essential libssl-dev make zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev * Zypper: curl gcc gcc-c++ make openssl openssl-devel wget zlib zlib-devel Development utilities such as 'make', the 'gcc' compiler, and 'curl' must be installed and available in the PATH (unless running with '-fast'). The package installation as noted above generally ensures these dependencies are available. OPTIONS: -c <cfg> Specify a config file. By default, values for various settings such as the email to send script logs to are configure with demo values, e.g. P4AdminList@p4demo.com. Optionally, you can specify a config file to define your own values. For details on what settings you can define in this way, run: reset_sdp.sh -C > reset_sdp.cfg Then modify the generated config file as desired. The generated config file contains documentation on settings and values. If no changes are made to the generated file, running with '-c reset_sdp.cfg' is the equivalent of running without using '-c' at all. -C See '-c <cfg>' above. -B Specify '-B' to blast base SDP dirs, for a clean start. Otherwise without '-B', downloaded components from earlier runs will be used (which should be fine if they were run recently). The '-B' flag also replaces files in the /hxdepots/reset directory, where this script lives, with those downloaded from The Workshop (the versions of which are affected by the '-i <helix_installer_branch>' flag, described below). The '-B' flag also blasts the /tmp/downloads and /tmp/p4perl directories, used by install_sdp_python.sh and install_sdp_perl.sh, if they exist. -local By default, various files and executables are downloaded from the Perforce Workshop or the Perforce FTP server as needed. With '-local', any missing files are treated as an error condition. The '-B', '-R', and '-local' arguments are mutually exclusive. -fast Specify '-fast' to skip installation SDP Perl and SDP Python, to include P4Perl and P4Python. The '-fast' argument changes a check for GCC/G++ from a fatal error to a warning message. The '-fast' option typically takes just a few minutes, as compared to 20+ minutes without due to the time needed to compile and test the Perl and Python bits. The '-fast' flag should not be used if you plan to deploy or develop triggers that use P4Python or P4Perl, such as the SDP CheckCaseTrigger.py. Alternately, you can run with '-fast', and then afterward run the following as the OS user perforce: cd /hxdepots/sdp/Server/Unix/setup ./install_sdp_python.sh ./install_sdp_perl.sh -no_ssl By default, the Perforce server is setup SSL-enabled. Specify '-no_ssl' to avoid using SSL feature. -no_sd By default, the Perforce Sample Depot data set is loaded. Specify '-no_sd' to skip loading the Sample Depot. -no_ppr Skip addition of the Perforce Package Repository for YUM/APT repos. By default, the Package Repository is added. -p <dir1>[,<dir2>,...]>] Specify a comma-delimited list of directories under /p4/common to preserve that would otherwise be removed. Directories must be specified as paths relative to /p4/common, and cannot contain spaces. For example, the value '-p config,bin/triggers' would preserve the /p4/common/config and /p4/common/bin/triggers directories. Directories specified are moved aside to a temporary working area before the SDP folders are removed. After installation, they are moved back via an 'rsync' command with no '--delete' option. This means any files that overlap with the stock install are replaced by ones that originally existed, but non-overlapping files are not removed. This is intended to be useful for developing test suites that install server under /p4/common/bin, e.g. Component Based Development scripts which install under /p4/common/bin/cbd would use '-p bin/cbd'. -b <branch>[,@cl] The default SDP install method is to clone the SDP from the main branch in The Workshop (public.perforce.com:1666). Specify '-b' to use a different branch, e.g. 'dev'. If '-b' is specified with the optional @cl syntax, where @cl specifies a changelist with files shelved on the given branch, a form of unshelving is done, enabling a workflow for testing shelved changes with the Helix Installer. So for example, specify '-b dev,@23123' to clone from the dev branch, and then followed by a fetch of shelved changelist @23123, which is expected to have files shelved in the dev branch. -t <tarfile> Specify a tarfile to use, e.g. '-t sdp.Unix.2017.3.23041.tgz', or use the special value '-t default' to use the default SDP tarfile, sdp.Unix.2019.2.25594.tgz The specified tar file must exist here: https://swarm.workshop.perforce.com/projects/perforce-software-sdp/files/downloads Use '-t' to get a known version of the SDP for testing. Avoid '-t' to test with the very latest SDP from a given branch (see '-b' above for more info), even if the latest has not yet been packaged into a distribution tar file. -d <sdp_dir> Specify a directory on the local host containing the SDP to deploy. Use the special value '-d default' to use the /sdp directory (as per the Docker-based SDP Test Suite environment). If neither '-t <tarfile>' nor '-d <sdp_dir>' are specified, default install method is used instead, which is to clone the SDP from The Workshop (P4PORT=public.perforce.com:1666). DEBUGGING OPTIONS: -i <helix_installer_branch> Specify the branch of the Helix Installer to use. This affects the URL from which Helix Installer files in /hxdepots/reset are pulled from The Workshop. The default is main; an alternative is '-i dev'. -D Set extreme debugging verbosity. -X Extreme reset. This removes the user accout for perforce and blasts all SDP-related directories at the start of script operations, including the perforce home directory. Using '-X' does not blast the Helix Installer downloads or exes directories, and thus is compatible with either the '-B' or '-local' options. -R Specify '-R' to reset. The cleanup logic is the same as with -X. Processing stops after the cleanup is done. HELP OPTIONS: -h Display short help message -man Display man-style help message EXAMPLES: === FAST INSTALLATION (skipping Perl, Python) === su - mkdir -p /hxdepots/reset cd /hxdepots/reset curl -k -s -O https://swarm.workshop.perforce.com/download/guest/perforce_software/helix-installer/main/src/reset_sdp.sh curl -k -s -O https://swarm.workshop.perforce.com/download/guest/perforce_software/helix-installer/main/src/r chmod +x reset_sdp.sh r ./r Note that the 'r' wrapper script calls the reset_sdp.sh script with a pre-defined of flags optimized for fast opreration. The 'r' wapper also handles log capture, writing to the file 'reset_sdp.log'. === COMPREHENSIVE INSTALLATION === su - mkdir -p /hxdepots/reset cd /hxdepots/reset curl -k -s -O https://swarm.workshop.perforce.com/download/guest/perforce_software/helix-installer/main/src/reset_sdp.sh chmod +x reset_sdp.sh ./reset_sdp.sh 2>&1 | tee reset_sdp.log === CONFIGURED INSTALLATION === su - mkdir -p /hxdepots/reset cd /hxdepots/reset curl -k -s -O https://swarm.workshop.perforce.com/download/guest/perforce_software/helix-installer/main/src/reset_sdp.sh chmod +x reset_sdp.sh ### Generate a default config file: ./reset_sdp.sh -C > reset_sdp.cfg ### Edit reset_sdp.cfg, changing the values as desired: vi reset_sdp.cfg ./reset_sdp.sh -c reset_sdp.cfg 2>&1 | tee log.reset_sdp === SDP DEV BRANCH TESTING === The Helix Installer can be used to test SDP changes shelved to the SDP dev branch in The Workshop. The following example illustrates testing a change in shelved changelist 23123: su - mkdir -p /hxdepots/reset cd /hxdepots/reset curl -k -s -O https://swarm.workshop.perforce.com/download/guest/perforce_software/helix-installer/main/src/reset_sdp.sh ./reset_sdp.sh -b dev,@23123 2>&1 | tee log.reset_sdp.CL23123 After the first test, an iterative test cycle may follow on the same shelved changelist. For each test iteration, the shelved changelist is first updated in the workspace from which the change was originally shelved, e.g. with a command like 'p4 shelve -f -c 23123'. Then a new test can be done by calling reset_sdp.sh with the same arguments. The script will re-install the SDP cleanly, and then re-apply the updated shelved changelist. === SDP TEST SUITE SUPPORT === The Helix Installer can install the SDP in the Docker-based SDP Test Suite. In that environment, the directory /sdp appears on the test VMs, shared from the host machine. To deploy that SDP, use the '-d <sdp_dir>' flag, something like this: ./reset_sdp.sh -d /sdp -fast 2>&1 | tee log.reset_sdp.test
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#45 | 30496 | C. Thomas Tyler | Updated Version, README.md, Release Notes, and doc files Release. | ||
#44 | 30459 | C. Thomas Tyler |
Change URLs in curl calls in docs and code to avoid Apache redirects. Also removed '-s' option from curl calls. |
||
#43 | 30412 | C. Thomas Tyler | Updated docs. | ||
#42 | 30399 | C. Thomas Tyler | Adapted to SDP default value of 'localhost' for DNS name of commit server. | ||
#41 | 30398 | C. Thomas Tyler | Add '-no_enable' option to avoid enabling installed services. | ||
#40 | 30397 | C. Thomas Tyler |
Adjust location of generated crontab file to: /p4/common/etc/cron.d/crontab.<user>.<short_hostname>.<instance>. |
||
#39 | 30393 | C. Thomas Tyler | Updated docs for release. | ||
#38 | 30299 | C. Thomas Tyler | Updated docs. | ||
#37 | 30213 | C. Thomas Tyler |
Added '-si <SDPInstance>' as a command line option, so there is one less reason to need to do the more complex 'Configured' installation, especially for a proxy or stand-alone broker. #review-30214 |
||
#36 | 30045 | C. Thomas Tyler | 2023.2 release; changed default version to 2023.2. | ||
#35 | 29698 | C. Thomas Tyler |
Changed 'curl' commands referencing Workshop to use '-L'. Updated stable version numbers in README.md to use new versions with corrected URLs. |
||
#34 | 29661 | C. Thomas Tyler | Updated doc and sample to match latest version of reset_sdp.sh. | ||
#33 | 29615 | C. Thomas Tyler |
Set default to r23.1. Removed '-k' from curl calls. |
||
#32 | 28928 | C. Thomas Tyler | Updated doc file. | ||
#31 | 28662 | C. Thomas Tyler |
Added support for SELinux in enforcing mode. Enhanced documentation, including notes about SELinux handling. |
||
#30 | 28656 | C. Thomas Tyler | Updated docs to latest. | ||
#29 | 28582 | C. Thomas Tyler |
reset_sdp.sh v4.9.0: Added '-no_sudo' option. Added '-no_firewall' option. Fixed minor issue where 'systemctl' commands try to execute when systemctl isn't avail. Added test coverage in test_hi.sh. |
||
#28 | 28266 | C. Thomas Tyler |
Improved support for proxy-only hosts. #review-28267 @rwillyoung |
||
#27 | 28125 | C. Thomas Tyler | Regenerated document. | ||
#26 | 27553 | C. Thomas Tyler |
Spell check only. Non-functional changes. Docs udpated. Fixed typos in comments and messages, including generated settings.cfg files. |
||
#25 | 27391 | C. Thomas Tyler | Updated docs. | ||
#24 | 27305 | C. Thomas Tyler | Added rsync package to all platforms. | ||
#23 | 27302 | C. Thomas Tyler | Updated command line summary. | ||
#22 | 26606 | C. Thomas Tyler | Non-functional changes to maintain shellcheck compliance. | ||
#21 | 26576 | C. Thomas Tyler |
Fixed order-of-operations issue due to recent changes in SDP; the logic to implement 'sudo' as required to call 'systemd' wrappers now requires the sudo to be called before the call to configure_sample_depot.sh. Refined firewall handling logic. |
||
#20 | 26565 | C. Thomas Tyler | Set password for OSUSER to same as P4USER if OSUSER needs to be created. | ||
#19 | 26557 | C. Thomas Tyler |
Changed default Helix Core to r20.1. Updated docs. |
||
#18 | 26022 | C. Thomas Tyler | Updated doc page. | ||
#17 | 25915 | C. Thomas Tyler |
Fixed issue with firewalld configuration on RHEL/CentOS 7 systems. Changed '-X' extreme cleanup to now clear firewalld rules. Added missing mention of firewalld config in documentation. |
||
#16 | 25870 | C. Thomas Tyler | Updated Version/Release Notes and docs for release. | ||
#15 | 25819 | C. Thomas Tyler | Updated docs. | ||
#14 | 25753 | C. Thomas Tyler |
Added code to call SDP os_tweaks.sh. Regenerated command summary file. |
||
#13 | 25392 | C. Thomas Tyler | Update default SDP release. | ||
#12 | 25382 | C. Thomas Tyler |
Updated default SDP release for tar installs to sdp.Unix.2019.1.25374.tgz. |
||
#11 | 25370 | C. Thomas Tyler |
Added '-c <cfg>' and '-C' flags to use (and with '-C' generate) a config file (similar to the '-C' and '-c <cfg>' flags with p4broker). Updated docs accordingly. Added missing 'chmod +x' step in man page in docs. Enabled testing on Mac OSX to get past the package manager test, since yum/apt-get/zypper aren't expected to be on Mac OSX. |
||
#10 | 25282 | C. Thomas Tyler | Fixed order-of-operations issue for creating ~perforce/.bash* files. | ||
#9 | 25248 | C. Thomas Tyler | Filled in SDP 2019.1 changelist number, 25238. | ||
#8 | 25247 | C. Thomas Tyler | Additional cleanup. | ||
#7 | 25240 | C. Thomas Tyler |
Simplified to use a single /hxmetadata volume, as this is the most common configuration. Small sites don't need multiple volumes, and big sites have an array of hardware options, only some of which require a two-volume solution for metadata to maintain performance. Changed default replica ServerID from p4d_fr_bos to p4d_ha_bos, to promote modern 2018.2 high availability replicas that can be created with the mkrep.sh in SDP 2019.1+. The replica is not actually created with the Helix Installer, just referenced as a sample ServerID name. Extended '-B' flag to cleanup temp dir used by install_sdp_python.sh. Changed behavior to bail on failure to cleanup temp dirs, as this could result in wasted time building outdated versions of P4Python, etc. Added '-i <helix_installer_branch>' debugging flag to support testing of Helix Installer from the dev branch. Moved this and the '-D' flag to a new doc section titled DEBUGGING OPTIONS. Added '-X' eXtreme reset debugging option. Updated some internal variable names. |
||
#6 | 25054 | C. Thomas Tyler |
Updated SDP default tarball to 2018.1.23583.p2. Corrected Swarm release to 2018.3; there is no 2018.4! |
||
#5 | 24913 | C. Thomas Tyler | Updated version for release. | ||
#4 | 24863 | C. Thomas Tyler | Updated Version, release notes, and docs for release. | ||
#3 | 23364 | C. Thomas Tyler | Updated Version to release 2017.4.23363. | ||
#2 | 23360 | C. Thomas Tyler | Updated Version, relnotes and doc for release. | ||
#1 | 23281 | C. Thomas Tyler | Added doc page. |