Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
ENH: Initial commit
- Loading branch information
0 parents
commit 4244d93
Showing
2 changed files
with
130 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,74 @@ | |||
## Update CGI computers remotely | |||
|
|||
Updates Ubuntu 14.04 computers with latest version of R, RStudio, R | |||
libraries, Python and BioPython, for bioinformatics training. | |||
|
|||
|
|||
### Remote computer requirements: | |||
|
|||
- ClusterShell | |||
- ssh key authentication for all 10 laptops | |||
- Wired connection (wireless in the building is flaky) | |||
|
|||
### Usage | |||
|
|||
Setup your `/etc/hosts` and map the target laptops as e.g. cgi01, | |||
cgi02, etc. The Ubuntu machines don't have openssh-server installed | |||
on them, so install it, copy the keys, and then disable password | |||
authentication. | |||
|
|||
``sh | |||
# On the laptops | |||
local$ sudo apt-get update && sudo apt-get -y install openssh-server | |||
local$ sudo sed -i 's/#Pass.*/PasswordAuthentication no/' /etc/ssh/sshd_config | |||
|
|||
Then create an ssh keys and copy it over: | |||
|
|||
```sh | |||
remote$ idf=~/.ssh/id_rsa-cgi-202 | |||
remote$ ssh-keygen -f $idf -N "" | |||
remote$ for host in cgi{01..10}; do ssh-copy-id -i $idf cgi_user@$host; done | |||
``` | |||
|
|||
Add the identity file to your `~/.ssh/config` | |||
|
|||
``` | |||
Host cgi* | |||
IdentityFile ~/.ssh/id_rsa-cgi-202 | |||
User cgi_user | |||
``` | |||
|
|||
Test that the keys work with: | |||
|
|||
```sh | |||
remote$ alias clush="clush -B -w cgi[01-10]" | |||
remote$ type clush # verify alias | |||
remote$ clush id -u | |||
1000 | |||
``` | |||
|
|||
On each computer, locally restart SSH server for the disabled password | |||
authentication to take effect. | |||
|
|||
```sh | |||
local$ sudo service ssh restart | |||
``` | |||
|
|||
Running sudo remotely is a pain, so use the same key for remote root | |||
access. | |||
|
|||
```sh | |||
local$ sudo mkdir -p /root/.ssh | |||
local$ sudo sh -c "echo $(tail -1 ~/.ssh/authorized_keys) >> /root/.ssh/authorized_keys" | |||
local$ sudo cat /root/.ssh/authorized_keys | |||
``` | |||
|
|||
In the present configuration, commands are normally executed as | |||
cgi_user. To execute as root, use the `-l root` option of `clush`: | |||
|
|||
```sh | |||
remote$ clush -l root id -u | |||
0 | |||
remote$ clush -l root --copy cgi-updater-payload.sh --dest /root/ | |||
remote$ clush -l root ./cgi-updater-payload.sh | |||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,56 @@ | |||
#!/bin/bash | |||
|
|||
r_pkgs=( DESeq2 grDevices genefilter biomaRt ggplot2 gplots RColorBrewer ) | |||
pip_pkgs=( biopython ) | |||
|
|||
if [[ $(id -u) -ne 0 ]]; then | |||
echo "Error: run this script as the root user, not EUID $(id -u)." | |||
exit 1 | |||
fi | |||
|
|||
set -e # Make most errors fatal. | |||
|
|||
ubuntu_update () { | |||
apt-get update | |||
apt-get -y upgrade | |||
} | |||
|
|||
ubuntu_install_r_cran () { | |||
cat <<EOF > /etc/apt/sources.list.d/cgi-r-cran.list | |||
# Newest R version from CRAN per | |||
# https://cran.r-project.org/bin/linux/ubuntu/ | |||
deb https://cran.fhcrc.org/bin/linux/ubuntu $(lsb_release -cs)/ | |||
EOF | |||
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E084DAB9 | |||
apt-get update | |||
apt-get -y install r-base-dev | |||
} | |||
|
|||
python_install_packages() { | |||
pip install --upgrade ${pip_pkgs[@]} | |||
} | |||
|
|||
r_install_packages() { | |||
local pkgs=\"$(sprintf "\",%s\"" "${r_pkgs[@]}")\" | |||
R --quiet -vanilla -e <<EOF | |||
source("https://bioconductor.org/biocLite.R") | |||
biocLite(c(${pkgs:3}) | |||
EOF | |||
} | |||
|
|||
main () { | |||
ubuntu_update | |||
ubuntu_install_r_cran | |||
|
|||
python_install_packages | |||
|
|||
# Install R libraries in the user home directory so that updating | |||
# the libraries later on does not triggering the "unwritable | |||
# directory" warning. | |||
export r_pkgs | |||
export -f r_install packages | |||
su cgi_user -c "bash -c r_install_packages" | |||
unset r_pkgs r_install_packages | |||
} | |||
|
|||
main |