├── LICENSE ├── README.md ├── post-install ├── add-parallel-starcluster.sh ├── add-parallel-tools-2015-spring.sh ├── add-parallel-tools.sh ├── build-bce-gpu.sh ├── build_openmpi.sh ├── cfncluster_example.config ├── modify-for-aws.sh ├── starcluster.sh └── starcluster_example.config └── provisioning ├── .gitignore ├── BCE-14.10-amd64.json ├── BCE-2015-fall.json ├── BCE-2015-summer.json ├── BCE-2016-spring.json ├── BCE-2016-summer.json ├── Dockerfile ├── HOWTO.md ├── Makefile ├── azureNotes.txt ├── bootstrap-bce.sh ├── bootstrap.d ├── 00-init ├── 10-ami-wait-cloud-init ├── 10-apt-get-update ├── 15-etckeeper ├── 20-guest-additions ├── 30-bash ├── 30-editors ├── 30-sudo ├── 40-ubuntu-packages ├── 42-azure ├── 45-grub ├── 46-plymouth ├── 48-ibus-fix ├── 50-user ├── 52-ebs-nfs ├── 55-desktop-help ├── 58-alsa ├── 60-globus ├── 60-google-chrome ├── 70-r ├── 75-rstudio ├── 80-anaconda ├── 81-python-launchers ├── 82-ipython-r-kernel ├── 85-pycharm ├── 89-docker ├── 90-clean ├── 99-finish ├── _65-r-ppas └── _80-anaconda-user ├── branch-visualization.svg ├── debconf.selections ├── dinosaur.svg ├── dot-config ├── menus │ └── xfce-applications.menu └── xfce4 │ ├── helpers.rc │ ├── panel │ ├── launcher-10 │ │ └── 13953449483.desktop │ ├── launcher-12 │ │ └── 13953450035.desktop │ ├── launcher-14 │ │ └── 14212014661.desktop │ ├── launcher-5 │ │ └── 13953448551.desktop │ ├── launcher-8 │ │ └── 13953448682.desktop │ └── launcher-9 │ │ └── 13953449624.desktop │ ├── terminal │ └── terminalrc │ └── xfconf │ └── xfce-perchannel-xml │ ├── thunar-volman.xml │ ├── thunar.xml │ ├── xfce4-desktop.xml │ ├── xfce4-keyboard-shortcuts.xml │ ├── xfce4-panel.xml │ ├── xfce4-session.xml │ ├── xfwm4.xml │ └── xsettings.xml ├── dot-local └── share │ └── desktop-directories │ └── xfce-development.directory ├── guest-scripts ├── setup_ipython_notebook.sh └── update-bce-docs ├── http ├── ubuntu-14.04 │ └── preseed.cfg ├── ubuntu-14.10 │ └── preseed.cfg ├── ubuntu-15.04 │ └── preseed.cfg ├── ubuntu-15.10 │ └── preseed.cfg └── ubuntu-16.04 │ └── preseed.cfg ├── packages ├── R-mpi-packages.txt ├── R-packages.txt ├── conda-requirements-py27.txt ├── conda-requirements-py35.txt ├── pip-requirements-py27.txt ├── pip-requirements-py35.txt ├── python-requirements-full.txt ├── python-requirements.txt ├── python3-requirements-full.txt ├── python3-requirements.txt ├── ubuntu-packages-norecommends.txt └── ubuntu-packages.txt ├── packer-ec2-BCE-2015-fall.log ├── packer-ec2-BCE-2016-spring-cfncluster.log ├── packer-ec2.log-20150930 └── plymouth-theme ├── .gitignore ├── README ├── bce.plymouth ├── bce.script ├── bce_name.png ├── planet_black.png ├── planet_glow.png ├── space_glow.png ├── sun_glow.png └── ucb_logo.png /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, and 10 | distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by the copyright 13 | owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all other entities 16 | that control, are controlled by, or are under common control with that entity. 17 | For the purposes of this definition, "control" means (i) the power, direct or 18 | indirect, to cause the direction or management of such entity, whether by 19 | contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the 20 | outstanding shares, or (iii) beneficial ownership of such entity. 21 | 22 | "You" (or "Your") shall mean an individual or Legal Entity exercising 23 | permissions granted by this License. 24 | 25 | "Source" form shall mean the preferred form for making modifications, including 26 | but not limited to software source code, documentation source, and configuration 27 | files. 28 | 29 | "Object" form shall mean any form resulting from mechanical transformation or 30 | translation of a Source form, including but not limited to compiled object code, 31 | generated documentation, and conversions to other media types. 32 | 33 | "Work" shall mean the work of authorship, whether in Source or Object form, made 34 | available under the License, as indicated by a copyright notice that is included 35 | in or attached to the work (an example is provided in the Appendix below). 36 | 37 | "Derivative Works" shall mean any work, whether in Source or Object form, that 38 | is based on (or derived from) the Work and for which the editorial revisions, 39 | annotations, elaborations, or other modifications represent, as a whole, an 40 | original work of authorship. For the purposes of this License, Derivative Works 41 | shall not include works that remain separable from, or merely link (or bind by 42 | name) to the interfaces of, the Work and Derivative Works thereof. 43 | 44 | "Contribution" shall mean any work of authorship, including the original version 45 | of the Work and any modifications or additions to that Work or Derivative Works 46 | thereof, that is intentionally submitted to Licensor for inclusion in the Work 47 | by the copyright owner or by an individual or Legal Entity authorized to submit 48 | on behalf of the copyright owner. For the purposes of this definition, 49 | "submitted" means any form of electronic, verbal, or written communication sent 50 | to the Licensor or its representatives, including but not limited to 51 | communication on electronic mailing lists, source code control systems, and 52 | issue tracking systems that are managed by, or on behalf of, the Licensor for 53 | the purpose of discussing and improving the Work, but excluding communication 54 | that is conspicuously marked or otherwise designated in writing by the copyright 55 | owner as "Not a Contribution." 56 | 57 | "Contributor" shall mean Licensor and any individual or Legal Entity on behalf 58 | of whom a Contribution has been received by Licensor and subsequently 59 | incorporated within the Work. 60 | 61 | 2. Grant of Copyright License. 62 | 63 | Subject to the terms and conditions of this License, each Contributor hereby 64 | grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, 65 | irrevocable copyright license to reproduce, prepare Derivative Works of, 66 | publicly display, publicly perform, sublicense, and distribute the Work and such 67 | Derivative Works in Source or Object form. 68 | 69 | 3. Grant of Patent License. 70 | 71 | Subject to the terms and conditions of this License, each Contributor hereby 72 | grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, 73 | irrevocable (except as stated in this section) patent license to make, have 74 | made, use, offer to sell, sell, import, and otherwise transfer the Work, where 75 | such license applies only to those patent claims licensable by such Contributor 76 | that are necessarily infringed by their Contribution(s) alone or by combination 77 | of their Contribution(s) with the Work to which such Contribution(s) was 78 | submitted. If You institute patent litigation against any entity (including a 79 | cross-claim or counterclaim in a lawsuit) alleging that the Work or a 80 | Contribution incorporated within the Work constitutes direct or contributory 81 | patent infringement, then any patent licenses granted to You under this License 82 | for that Work shall terminate as of the date such litigation is filed. 83 | 84 | 4. Redistribution. 85 | 86 | You may reproduce and distribute copies of the Work or Derivative Works thereof 87 | in any medium, with or without modifications, and in Source or Object form, 88 | provided that You meet the following conditions: 89 | 90 | You must give any other recipients of the Work or Derivative Works a copy of 91 | this License; and 92 | You must cause any modified files to carry prominent notices stating that You 93 | changed the files; and 94 | You must retain, in the Source form of any Derivative Works that You distribute, 95 | all copyright, patent, trademark, and attribution notices from the Source form 96 | of the Work, excluding those notices that do not pertain to any part of the 97 | Derivative Works; and 98 | If the Work includes a "NOTICE" text file as part of its distribution, then any 99 | Derivative Works that You distribute must include a readable copy of the 100 | attribution notices contained within such NOTICE file, excluding those notices 101 | that do not pertain to any part of the Derivative Works, in at least one of the 102 | following places: within a NOTICE text file distributed as part of the 103 | Derivative Works; within the Source form or documentation, if provided along 104 | with the Derivative Works; or, within a display generated by the Derivative 105 | Works, if and wherever such third-party notices normally appear. The contents of 106 | the NOTICE file are for informational purposes only and do not modify the 107 | License. You may add Your own attribution notices within Derivative Works that 108 | You distribute, alongside or as an addendum to the NOTICE text from the Work, 109 | provided that such additional attribution notices cannot be construed as 110 | modifying the License. 111 | You may add Your own copyright statement to Your modifications and may provide 112 | additional or different license terms and conditions for use, reproduction, or 113 | distribution of Your modifications, or for any such Derivative Works as a whole, 114 | provided Your use, reproduction, and distribution of the Work otherwise complies 115 | with the conditions stated in this License. 116 | 117 | 5. Submission of Contributions. 118 | 119 | Unless You explicitly state otherwise, any Contribution intentionally submitted 120 | for inclusion in the Work by You to the Licensor shall be under the terms and 121 | conditions of this License, without any additional terms or conditions. 122 | Notwithstanding the above, nothing herein shall supersede or modify the terms of 123 | any separate license agreement you may have executed with Licensor regarding 124 | such Contributions. 125 | 126 | 6. Trademarks. 127 | 128 | This License does not grant permission to use the trade names, trademarks, 129 | service marks, or product names of the Licensor, except as required for 130 | reasonable and customary use in describing the origin of the Work and 131 | reproducing the content of the NOTICE file. 132 | 133 | 7. Disclaimer of Warranty. 134 | 135 | Unless required by applicable law or agreed to in writing, Licensor provides the 136 | Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, 137 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, 138 | including, without limitation, any warranties or conditions of TITLE, 139 | NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are 140 | solely responsible for determining the appropriateness of using or 141 | redistributing the Work and assume any risks associated with Your exercise of 142 | permissions under this License. 143 | 144 | 8. Limitation of Liability. 145 | 146 | In no event and under no legal theory, whether in tort (including negligence), 147 | contract, or otherwise, unless required by applicable law (such as deliberate 148 | and grossly negligent acts) or agreed to in writing, shall any Contributor be 149 | liable to You for damages, including any direct, indirect, special, incidental, 150 | or consequential damages of any character arising as a result of this License or 151 | out of the use or inability to use the Work (including but not limited to 152 | damages for loss of goodwill, work stoppage, computer failure or malfunction, or 153 | any and all other commercial damages or losses), even if such Contributor has 154 | been advised of the possibility of such damages. 155 | 156 | 9. Accepting Warranty or Additional Liability. 157 | 158 | While redistributing the Work or Derivative Works thereof, You may choose to 159 | offer, and charge a fee for, acceptance of support, warranty, indemnity, or 160 | other liability obligations and/or rights consistent with this License. However, 161 | in accepting such obligations, You may act only on Your own behalf and on Your 162 | sole responsibility, not on behalf of any other Contributor, and only if You 163 | agree to indemnify, defend, and hold each Contributor harmless for any liability 164 | incurred by, or claims asserted against, such Contributor by reason of your 165 | accepting any such warranty or additional liability. 166 | 167 | END OF TERMS AND CONDITIONS 168 | 169 | APPENDIX: How to apply the Apache License to your work 170 | 171 | To apply the Apache License to your work, attach the following boilerplate 172 | notice, with the fields enclosed by brackets "[]" replaced with your own 173 | identifying information. (Don't include the brackets!) The text should be 174 | enclosed in the appropriate comment syntax for the file format. We also 175 | recommend that a file or class name and description of purpose be included on 176 | the same "printed page" as the copyright notice for easier identification within 177 | third-party archives. 178 | 179 | Copyright [yyyy] [name of copyright owner] 180 | 181 | Licensed under the Apache License, Version 2.0 (the "License"); 182 | you may not use this file except in compliance with the License. 183 | You may obtain a copy of the License at 184 | 185 | http://www.apache.org/licenses/LICENSE-2.0 186 | 187 | Unless required by applicable law or agreed to in writing, software 188 | distributed under the License is distributed on an "AS IS" BASIS, 189 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 190 | See the License for the specific language governing permissions and 191 | limitations under the License. 192 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | bce 2 | === 3 | 4 | Note 5 | ---- 6 | This project is no longer active. Some of the software manifests contained here are old and may reference packages with known security vulnerabilities. 7 | 8 | Description 9 | ----------- 10 | Berkeley Common Environment provides a common Linux computational environment for classwork and research. 11 | 12 | For more details, see the project website at: http://bce.berkeley.edu/ 13 | -------------------------------------------------------------------------------- /post-install/add-parallel-starcluster.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # installing software on the worker nodes 4 | 5 | # copy this file to (or paste the contents into) a 6 | # text file called add-parallel-starcluster.sh on the VM 7 | # run this script as: 8 | # sudo bash add-parallel-starcluster.sh 9 | # it will take a minute or two to complete 10 | 11 | nodes=`grep -Eo node[[:digit:]]{3} /etc/hosts` 12 | for node in $nodes; do 13 | # ssh $node adduser oski sudo 14 | scp add-parallel-tools.sh $node:/tmp/. 15 | ssh $node bash /tmp/add-parallel-tools.sh >& /home/ubuntu/add-parallel-$node.log 16 | done 17 | 18 | echo -e "master\n$nodes" > /home/ubuntu/.hosts 19 | chown -R ubuntu:ubuntu /home/ubuntu/.hosts 20 | -------------------------------------------------------------------------------- /post-install/add-parallel-tools-2015-spring.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # copy this file to (or paste the contents into) a 4 | # text file called add-parallel-tools.sh on the VM 5 | # run this script as follows: 6 | # sudo bash add-parallel-tools.sh 7 | # it will take a couple minutes to complete 8 | 9 | export DEBIAN_PRIORITY=high 10 | export DEBIAN_FRONTEND=noninteractive 11 | 12 | # install fast linear algebra package and MPI functionality 13 | # we install openMPI from source because Ubuntu-packaged version (1.6.5) 14 | # has bug in MPI_Comm_spawn affecting Rmpi 15 | git config --global user.email "bce@lists.berkeley.edu" 16 | git config --global user.name "BCE Release Team" 17 | 18 | apt-get update 19 | apt-get install -y libopenblas-base # libopenmpi-dev openmpi-bin 20 | 21 | MPI_VERSION=1.8.4 22 | mkdir /usr/local/openmpi 23 | cd /usr/local/openmpi 24 | # get openmpi from permanent BCE repository 25 | wget -O bce-openmpi-${MPI_VERSION}.tgz https://googledrive.com/host/0B9npFE3iDymgbTBZUGRBV3VYOEE 26 | # temporary location (should still work if needed) 27 | # wget http://www.stat.berkeley.edu/~paciorek/transfer/bce-openmpi-${MPI_VERSION}.tgz 28 | 29 | tar -xvzf bce-openmpi-${MPI_VERSION}.tgz 30 | rm bce-openmpi-${MPI_VERSION}.tgz 31 | echo /usr/local/openmpi/lib > /etc/ld.so.conf.d/openmpi.conf 32 | ldconfig 33 | echo 'export PATH=${PATH}:/usr/local/openmpi/bin' >> /etc/bash.bashrc 34 | export PATH=${PATH}:/usr/local/openmpi/bin 35 | 36 | # install parallelization packages for Python 37 | HOME=/root pip install multiprocessing mpi4py 38 | 39 | PP_VERSION=1.6.4 40 | cd /tmp 41 | wget http://www.parallelpython.com/downloads/pp/pp-${PP_VERSION}.tar.gz 42 | tar -xvzf pp-${PP_VERSION}.tar.gz 43 | cd pp-${PP_VERSION} 44 | python setup.py install 45 | 46 | # install parallelization packages for R 47 | cat < /tmp/R-packages.txt 48 | doMPI 49 | rlecuyer 50 | pbdDEMO 51 | pbdSLAP 52 | pbdBASE 53 | pbdDMAT 54 | pbdMPI 55 | EOF 56 | 57 | Rscript -e "pkgs <- scan('/tmp/R-packages.txt', what = 'char'); install.packages(pkgs, repos = 'http://cran.cnr.berkeley.edu')" 58 | 59 | -------------------------------------------------------------------------------- /post-install/add-parallel-tools.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # This whole script runs as root. 4 | 5 | # copy this file to (or paste the contents into) a 6 | # text file called add-parallel-tools.sh on the VM 7 | # run this script as follows: 8 | # sudo bash add-parallel-tools.sh 9 | # it will take a couple minutes to complete 10 | 11 | export DEBIAN_PRIORITY=high 12 | export DEBIAN_FRONTEND=noninteractive 13 | 14 | # install MPI and related functionality 15 | 16 | # we install openMPI from source because Ubuntu-packaged version (1.6.5) 17 | # has bug in MPI_Comm_spawn affecting Rmpi 18 | 19 | git config --global user.email "bce@lists.berkeley.edu" 20 | git config --global user.name "BCE Release Team" 21 | 22 | 23 | MPI_VERSION=1.8.4 24 | mkdir /usr/local/openmpi 25 | cd /usr/local/openmpi 26 | # get openmpi from permanent BCE repository 27 | wget -O bce-openmpi-${MPI_VERSION}.tgz https://googledrive.com/host/0B9npFE3iDymgbTBZUGRBV3VYOEE 28 | # temporary location (should still work if needed) 29 | # wget http://www.stat.berkeley.edu/~paciorek/transfer/bce-openmpi-${MPI_VERSION}.tgz 30 | 31 | tar -xvzf bce-openmpi-${MPI_VERSION}.tgz 32 | rm bce-openmpi-${MPI_VERSION}.tgz 33 | echo /usr/local/openmpi/lib > /etc/ld.so.conf.d/openmpi.conf 34 | ldconfig 35 | echo 'export PATH=${PATH}:/usr/local/openmpi/bin' >> /etc/bash.bashrc 36 | export PATH=${PATH}:/usr/local/openmpi/bin 37 | 38 | # install parallelization packages for Python 39 | # conda install mpi4py 40 | sudo -u ${BCE_USER} conda install --yes --use-local mpi4py 41 | 42 | # install parallelization packages for R 43 | cat < /tmp/R-packages.txt 44 | doMPI 45 | rlecuyer 46 | pbdDEMO 47 | pbdSLAP 48 | pbdBASE 49 | pbdDMAT 50 | pbdMPI 51 | EOF 52 | 53 | Rscript -e "pkgs <- scan('/tmp/R-packages.txt', what = 'char'); install.packages(pkgs)" 54 | 55 | -------------------------------------------------------------------------------- /post-install/build-bce-gpu.sh: -------------------------------------------------------------------------------- 1 | # start BCE-2015-fall from AWS console on a g2.2xlarge 2 | # $0.65/hour; 4 Gb video RAM, 1536 CUDA cores 3 | 4 | # make sure to increase space for home directory by requesting more when start instance, e.g. 30 Gb 5 | 6 | # set variable holding IP address 7 | # export ip=52-32-169-154 8 | 9 | # ssh to the Amazon instance 10 | # ssh -i ~/.ssh/keyfile ubuntu@ec2-${ip}.us-west-2.compute.amazonaws.com 11 | 12 | sudo su 13 | 14 | # install CUDA 15 | wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1504/x86_64/cuda-repo-ubuntu1504_7.5-18_amd64.deb 16 | dpkg -i cuda-repo-ubuntu1504_7.5-18_amd64.deb 17 | 18 | apt-get update 19 | date >> /tmp/date 20 | apt-get install -y cuda # 10-15 minutes 21 | date >> /tmp/date 22 | 23 | rm -rf cuda-repo-ubuntu1504_7.5-18_amd64.deb 24 | 25 | 26 | # set up some utilities for monitoring the GPU 27 | echo "" >> ~ubuntu/.bashrc 28 | echo "export PATH=${PATH}:/usr/local/cuda/bin" >> ~ubuntu/.bashrc 29 | echo "" >> ~ubuntu/.bashrc 30 | echo "alias gtop=\"nvidia-smi -q -d UTILIZATION -l 1\"" >> ~ubuntu/.bashrc 31 | echo "" >> ~ubuntu/.bashrc 32 | echo "alias gmem=\"nvidia-smi -q -d MEMORY -l 1\"" >> ~ubuntu/.bashrc 33 | 34 | # set up access to CUDA shared libraries 35 | echo "/usr/local/cuda/lib64" >> /etc/ld.so.conf.d/cuda.conf 36 | ldconfig 37 | 38 | exit # back to ubuntu user 39 | 40 | # reboot the instance 41 | 42 | gtop 43 | 44 | # gtop result without reboot will error: 45 | #modprobe: ERROR: could not insert 'nvidia_352': No such device 46 | #NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running. 47 | 48 | # create deviceQuery executable 49 | sudo /usr/local/cuda/bin/nvcc /usr/local/cuda/samples/1_Utilities/deviceQuery/deviceQuery.cpp -I/usr/local/cuda/include -I/usr/local/cuda/samples/common/inc -o /usr/local/cuda/bin/deviceQuery 50 | 51 | deviceQuery 52 | 53 | # install PyCUDA 54 | pip install pycuda 55 | 56 | # install RCUDA 57 | sudo su 58 | 59 | cd /tmp 60 | git clone https://github.com/duncantl/RCUDA 61 | git clone https://github.com/omegahat/RAutoGenRunTime 62 | 63 | cd RCUDA/src 64 | ln -s ../../RAutoGenRunTime/src/RConverters.c . 65 | ln -s ../../RAutoGenRunTime/inst/include/RConverters.h . 66 | ln -s ../../RAutoGenRunTime/inst/include/RError.h . 67 | 68 | cd ../.. 69 | 70 | Rscript -e "install.packages('bitops', repos = 'https://cran.cnr.berkeley.edu')" 71 | 72 | R CMD build RCUDA 73 | R CMD build RAutoGenRunTime 74 | R CMD INSTALL RAutoGenRunTime_0.3-0.tar.gz 75 | R CMD INSTALL RCUDA_0.4-0.tar.gz 76 | 77 | # install MAGMA 78 | export PATH=${PATH}:/usr/local/cuda/bin 79 | 80 | MAGMA_VERSION=1.7.0 81 | cd /usr/local 82 | mkdir magma-${MAGMA_VERSION} 83 | ln -s magma-${MAGMA_VERSION} magma 84 | cd /usr/src 85 | mkdir magma-${MAGMA_VERSION} 86 | ln -s magma-${MAGMA_VERSION} magma 87 | cd magma 88 | wget http://icl.cs.utk.edu/projectsfiles/magma/downloads/magma-${MAGMA_VERSION}.tar.gz 89 | tar -xvzf magma-${MAGMA_VERSION}.tar.gz 90 | cd magma-${MAGMA_VERSION} 91 | # note I added -fPIC per the magma README to enable creation of a shared object 92 | cp make.inc.openblas make.inc 93 | sed -i 's/-lopenblas/-llapack -lblas -lstdc++ -lm -lgfortran/' make.inc 94 | sed -i 's/#GPU_TARGET.*/GPU_TARGET = Kepler/' make.inc 95 | sed -i 's/.*(CUDADIR)\/lib64/LIBDIR\t\= -L$(CUDADIR)\/lib64/' make.inc 96 | sed -i 's/.*OPENBLASDIR.*//' make.inc 97 | sed -i 's/.*make.check-openblas.*//' make.inc 98 | # make NVCCFLAGS look like: 99 | # NVCCFLAGS = -O3 -DADD_ -Xcompiler "-fno-strict-aliasing $(FPIC)" 100 | 101 | export CUDADIR=/usr/local/cuda 102 | make shared 2>&1 | tee ../make.shared.log 103 | make test 2>&1 | tee ../make.test.log 104 | make install prefix=/usr/local/magma 2>&1 | tee ../make.install.log 105 | 106 | cd /usr/local/magma 107 | chmod ugo+r include/* 108 | 109 | echo "/usr/local/magma/lib" >> /etc/ld.so.conf.d/SITE-magma.conf 110 | ldconfig 111 | 112 | 113 | #### Create image ########################## 114 | 115 | # 1) now save the image in us-west-2 via point and click on VM page under Actions 116 | # 2) make it public 117 | 118 | -------------------------------------------------------------------------------- /post-install/build_openmpi.sh: -------------------------------------------------------------------------------- 1 | starcluster start -c bce -s 1 mycluster 2 | 3 | starcluster put mycluster modify-for-aws.sh . 4 | starcluster sshmaster mycluster bash modify-for-aws.sh 5 | 6 | starcluster sshmaster mycluster 7 | 8 | cd /tmp 9 | 10 | INSTALL_DIR=/usr/local/openmpi 11 | 12 | MPI_VERSION=1.8.4 13 | 14 | wget http://www.open-mpi.org/software/ompi/v1.8/downloads/openmpi-${MPI_VERSION}.tar.gz 15 | 16 | tar -xvzf openmpi-${MPI_VERSION}.tar.gz 17 | cd openmpi-${MPI_VERSION} 18 | 19 | mkdir ${INSTALL_DIR} 20 | ./configure --prefix /usr/local/openmpi --enable-orterun-prefix-by-default 2>&1 | tee ../configure.log 21 | make all install 2>&1 | tee ../make_all_install.log 22 | 23 | cd ${INSTALL_DIR} 24 | tar -cvzf /tmp/bce-openmpi-${MPI_VERSION}.tgz . 25 | 26 | # for now manually upload to google drive: login to gdrive under paciorek@berkeley.edu as +paciorek, select SPA-BCE and upload to Downloads folder 27 | # ideally would set up code to upload tarball to google drive 28 | -------------------------------------------------------------------------------- /post-install/cfncluster_example.config: -------------------------------------------------------------------------------- 1 | [aws] 2 | aws_region_name = us-west-2 3 | aws_access_key_id = enter_your_key_id 4 | aws_secret_access_key = enter_your_access_key 5 | 6 | [cluster default] 7 | vpc_settings = public 8 | key_name = ec2_rsa 9 | scheduler = sge 10 | initial_queue_size = 1 11 | # this is the BCE AMI compatible with CFN (built on top of ami-f2bf5492) 12 | custom_ami = ami-e6f50986 13 | base_os = ubuntu1404 14 | # need at least 15 Gb as that is the size of the BCE AMI snapshot 15 | master_root_volume_size = 15 16 | compute_root_volume_size = 15 17 | 18 | 19 | [vpc public] 20 | # enter info based on your AWS account 21 | master_subnet_id = subnet-XXXXXXXX 22 | vpc_id = vpc-XXXXXXXX 23 | 24 | 25 | [global] 26 | update_check = true 27 | sanity_check = true 28 | cluster_template = default -------------------------------------------------------------------------------- /post-install/modify-for-aws.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # copy this file to (or paste the contents into) a 4 | # text file called modify-for-aws.sh on the VM 5 | # run this script as: 6 | # sudo bash modify-for-aws.sh 7 | # it will take a minute or two to complete 8 | 9 | export DEBIAN_PRIORITY=high 10 | export DEBIAN_FRONTEND=noninteractive 11 | 12 | # add a few useful software packages 13 | git config --global user.email "bce@lists.berkeley.edu" 14 | git config --global user.name "BCE Release Team" 15 | apt-get update 16 | apt-get install -y mosh git-annex 17 | -------------------------------------------------------------------------------- /post-install/starcluster.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # template for starting up a BCE-based EC2 cluster 4 | 5 | # you'll need a starcluster config file (see starcluster_example.config as example) 6 | # save your config file as ~/.starcluster/config 7 | 8 | # start cluster 9 | starcluster start -c bce mycluster 10 | 11 | # add some basic functionality on the master node, tailoring BCE for AWS 12 | starcluster put mycluster modify-for-aws.sh . 13 | starcluster sshmaster mycluster bash modify-for-aws.sh 14 | 15 | # add parallel tools to the master node 16 | starcluster put -u oski mycluster add-parallel-tools-2015-spring.sh . 17 | starcluster sshmaster -u oski mycluster sudo bash add-parallel-tools-2015-spring.sh 18 | 19 | # add parallel tools to the worker nodes 20 | starcluster put -u oski mycluster add-parallel-starcluster.sh . 21 | starcluster sshmaster -u oski mycluster sudo bash add-parallel-starcluster.sh 22 | 23 | -------------------------------------------------------------------------------- /post-install/starcluster_example.config: -------------------------------------------------------------------------------- 1 | #################################### 2 | ## StarCluster Configuration File ## 3 | #################################### 4 | [global] 5 | # Configure the default cluster template to use when starting a cluster 6 | # defaults to 'smallcluster' defined below. This template should be usable 7 | # out-of-the-box provided you've configured your keypair correctly 8 | DEFAULT_TEMPLATE=bce 9 | # enable experimental features for this release 10 | #ENABLE_EXPERIMENTAL=True 11 | # number of seconds to wait when polling instances (default: 30s) 12 | #REFRESH_INTERVAL=15 13 | # specify a web browser to launch when viewing spot history plots 14 | #WEB_BROWSER=chromium 15 | # split the config into multiple files 16 | #INCLUDE=~/.starcluster/aws, ~/.starcluster/keys, ~/.starcluster/vols 17 | 18 | ############################################# 19 | ## AWS Credentials and Connection Settings ## 20 | ############################################# 21 | [aws info] 22 | # This is the AWS credentials section (required). 23 | # These settings apply to all clusters 24 | # replace these with your AWS keys 25 | # info for scf@stat.berkeley.edu 26 | AWS_ACCESS_KEY_ID = 27 | AWS_SECRET_ACCESS_KEY = 28 | 29 | # replace this with your account number 30 | AWS_USER_ID = 31 | # Uncomment to specify a different Amazon AWS region (OPTIONAL) 32 | # (defaults to us-east-1 if not specified) 33 | # NOTE: AMIs have to be migrated! 34 | AWS_REGION_NAME = us-west-2 35 | AWS_REGION_HOST = ec2.us-west-2.amazonaws.com 36 | # CHANGE this for east: 37 | #AWS_REGION_NAME = us-east-1 38 | #AWS_REGION_HOST = ec2.us-east-1.amazonaws.com 39 | # Uncomment these settings when creating an instance-store (S3) AMI (OPTIONAL) 40 | #EC2_CERT = /path/to/your/cert-asdf0as9df092039asdfi02089.pem 41 | #EC2_PRIVATE_KEY = /path/to/your/pk-asdfasd890f200909.pem 42 | # Uncomment these settings to use a proxy host when connecting to AWS 43 | #AWS_PROXY = your.proxyhost.com 44 | #AWS_PROXY_PORT = 8080 45 | #AWS_PROXY_USER = yourproxyuser 46 | #AWS_PROXY_PASS = yourproxypass 47 | 48 | ########################### 49 | ## Defining EC2 Keypairs ## 50 | ########################### 51 | # Sections starting with "key" define your keypairs. See "starcluster createkey 52 | # --help" for instructions on how to create a new keypair. Section name should 53 | # match your key name e.g.: 54 | [key ec2_rsa] 55 | KEY_LOCATION=~/.ssh/ 56 | 57 | # You can of course have multiple keypair sections 58 | # [key myotherkey] 59 | # KEY_LOCATION=~/.ssh/myotherkey.rsa 60 | 61 | ################################ 62 | ## Defining Cluster Templates ## 63 | ################################ 64 | # Sections starting with "cluster" represent a cluster template. These 65 | # "templates" are a collection of settings that define a single cluster 66 | # configuration and are used when creating and configuring a cluster. You can 67 | # change which template to use when creating your cluster using the -c option 68 | # to the start command: 69 | # 70 | # $ starcluster start -c mediumcluster mycluster 71 | # 72 | # If a template is not specified then the template defined by DEFAULT_TEMPLATE 73 | # in the [global] section above is used. Below is the "default" template named 74 | # "smallcluster". You can rename it but dont forget to update the 75 | # DEFAULT_TEMPLATE setting in the [global] section above. See the next section 76 | # on defining multiple templates. 77 | 78 | [cluster bce] 79 | # change this to the name of one of the keypair sections defined above 80 | #KEYNAME = ec2new 81 | KEYNAME = ec2_rsa 82 | # number of ec2 instances to launch 83 | CLUSTER_SIZE = 4 84 | # create the following user on the cluster 85 | CLUSTER_USER = oski 86 | # optionally specify shell (defaults to bash) 87 | # (options: tcsh, zsh, csh, bash, ksh) 88 | CLUSTER_SHELL = bash 89 | # AMI to use for cluster nodes. These AMIs are for BCE 90 | NODE_IMAGE_ID = ami-cdf5d3fd 91 | # for us-west-1 92 | #NODE_IMAGE_ID = ami-958e6bd1 93 | # instance type for all cluster nodes 94 | # (options: cg1.4xlarge, c1.xlarge, m1.small, c1.medium, m2.xlarge, t1.micro, cc1.4xlarge, m1.medium, cc2.8xlarge, m1.large, m1.xlarge, m2.4xlarge, m2.2xlarge) 95 | NODE_INSTANCE_TYPE = m3.large 96 | # Uncomment to disable installing/configuring a queueing system on the 97 | # cluster (SGE) 98 | DISABLE_QUEUE=True 99 | # Uncomment to specify a different instance type for the master node (OPTIONAL) 100 | # (defaults to NODE_INSTANCE_TYPE if not specified) 101 | #MASTER_INSTANCE_TYPE = m1.small 102 | # Uncomment to specify a separate AMI to use for the master node. (OPTIONAL) 103 | # (defaults to NODE_IMAGE_ID if not specified) 104 | #MASTER_IMAGE_ID = ami-899d49e0 (OPTIONAL) 105 | # availability zone to launch the cluster in (OPTIONAL) 106 | # (automatically determined based on volumes (if any) or 107 | # selected by Amazon if not specified) 108 | #AVAILABILITY_ZONE = us-east-1c 109 | # list of volumes to attach to the master node (OPTIONAL) 110 | # these volumes, if any, will be NFS shared to the worker nodes 111 | # see "Configuring EBS Volumes" below on how to define volume sections 112 | # VOLUMES = data 113 | # list of plugins to load after StarCluster's default setup routines (OPTIONAL) 114 | # see "Configuring StarCluster Plugins" below on how to define plugin sections 115 | #PLUGINS = myplugin, myplugin2 116 | # list of permissions (or firewall rules) to apply to the cluster's security 117 | # group (OPTIONAL). 118 | #PERMISSIONS = ssh, http 119 | # Uncomment to always create a spot cluster when creating a new cluster from 120 | # this template. The following example will place a $0.50 bid for each spot 121 | # request. 122 | #SPOT_BID = 0.50 123 | 124 | 125 | ############################# 126 | ## Configuring EBS Volumes ## 127 | ############################# 128 | # StarCluster can attach one or more EBS volumes to the master and then 129 | # NFS_share these volumes to all of the worker nodes. A new [volume] section 130 | # must be created for each EBS volume you wish to use with StarCluser. The 131 | # section name is a tag for your volume. This tag is used in the VOLUMES 132 | # setting of a cluster template to declare that an EBS volume is to be mounted 133 | # and nfs shared on the cluster. (see the commented VOLUMES setting in the 134 | # example 'smallcluster' template above) Below are some examples of defining 135 | # and configuring EBS volumes to be used with StarCluster: 136 | 137 | # [volume biodata2] 138 | # VOLUME_ID = vol-c999999 139 | # MOUNT_PATH = /opt/ 140 | 141 | # Another volume example 142 | # [volume oceandata] 143 | # VOLUME_ID = vol-d7777777 144 | # MOUNT_PATH = /mydata 145 | 146 | # By default StarCluster will attempt first to mount the entire volume device, 147 | # failing that it will try the first partition. If you have more than one 148 | # partition you will need to set the PARTITION number, e.g.: 149 | # [volume oceandata] 150 | # VOLUME_ID = vol-d7777777 151 | # MOUNT_PATH = /mydata 152 | # PARTITION = 2 153 | 154 | ############################################ 155 | ## Configuring Security Group Permissions ## 156 | ############################################ 157 | # Sections starting with "permission" define security group rules to 158 | # automatically apply to newly created clusters. PROTOCOL in the following 159 | # examples can be can be: tcp, udp, or icmp. CIDR_IP defaults to 0.0.0.0/0 or 160 | # "open to the # world" 161 | 162 | # open port 80 on the cluster to the world 163 | # [permission http] 164 | # PROTOCOL = tcp 165 | # FROM_PORT = 80 166 | # TO_PORT = 80 167 | 168 | # open https on the cluster to the world 169 | # [permission https] 170 | # PROTOCOL = tcp 171 | # FROM_PORT = 443 172 | # TO_PORT = 443 173 | 174 | # open port 80 on the cluster to an ip range using CIDR_IP 175 | # [permission http] 176 | # PROTOCOL = tcp 177 | # FROM_PORT = 80 178 | # TO_PORT = 80 179 | # CIDR_IP = 18.0.0.0/8 180 | 181 | # restrict ssh access to a single ip address () 182 | # [permission ssh] 183 | # PROTOCOL = tcp 184 | # FROM_PORT = 22 185 | # TO_PORT = 22 186 | # CIDR_IP = /32 187 | 188 | 189 | ##################################### 190 | ## Configuring StarCluster Plugins ## 191 | ##################################### 192 | # Sections starting with "plugin" define a custom python class which perform 193 | # additional configurations to StarCluster's default routines. These plugins 194 | # can be assigned to a cluster template to customize the setup procedure when 195 | # starting a cluster from this template (see the commented PLUGINS setting in 196 | # the 'smallcluster' template above). Below is an example of defining a user 197 | # plugin called 'myplugin': 198 | 199 | # [plugin myplugin] 200 | # NOTE: myplugin module must either live in ~/.starcluster/plugins or be 201 | # on your PYTHONPATH 202 | # SETUP_CLASS = myplugin.SetupClass 203 | # extra settings are passed as __init__ arguments to your plugin: 204 | # SOME_PARAM_FOR_MY_PLUGIN = 1 205 | # SOME_OTHER_PARAM = 2 206 | 207 | ###################### 208 | ## Built-in Plugins ## 209 | ###################### 210 | # The following plugins ship with StarCluster and should work out-of-the-box. 211 | # Uncomment as needed. Don't forget to update your PLUGINS list! 212 | # See http://web.mit.edu/star/cluster/docs/latest/plugins for plugin details. 213 | # 214 | # Use this plugin to install one or more packages on all nodes 215 | # [plugin pkginstaller] 216 | # SETUP_CLASS = starcluster.plugins.pkginstaller.PackageInstaller 217 | # # list of apt-get installable packages 218 | # PACKAGES = mongodb, python-pymongo 219 | # 220 | # Use this plugin to create one or more cluster users and download all user ssh 221 | # keys to $HOME/.starcluster/user_keys/-.tar.gz 222 | # [plugin createusers] 223 | # SETUP_CLASS = starcluster.plugins.users.CreateUsers 224 | # NUM_USERS = 30 225 | # # you can also comment out NUM_USERS and specify exact usernames, e.g. 226 | # # usernames = linus, tux, larry 227 | # DOWNLOAD_KEYS = True 228 | # 229 | # Use this plugin to configure the Condor queueing system 230 | # [plugin condor] 231 | # SETUP_CLASS = starcluster.plugins.condor.CondorPlugin 232 | # 233 | # The SGE plugin is enabled by default and not strictly required. Only use this 234 | # if you want to tweak advanced settings in which case you should also set 235 | # DISABLE_QUEUE=TRUE in your cluster template. See the plugin doc for more 236 | # details. 237 | # [plugin sge] 238 | # SETUP_CLASS = starcluster.plugins.sge.SGEPlugin 239 | # MASTER_IS_EXEC_HOST = False 240 | # 241 | # The IPCluster plugin configures a parallel IPython cluster with optional 242 | # web notebook support. This allows you to run Python code in parallel with low 243 | # latency message passing via ZeroMQ. 244 | # [plugin ipcluster] 245 | # SETUP_CLASS = starcluster.plugins.ipcluster.IPCluster 246 | # ENABLE_NOTEBOOK = True 247 | # #set a password for the notebook for increased security 248 | # NOTEBOOK_PASSWD = a-secret-password 249 | # 250 | # Use this plugin to create a cluster SSH "dashboard" using tmux. The plugin 251 | # creates a tmux session on the master node that automatically connects to all 252 | # the worker nodes over SSH. Attaching to the session shows a separate window 253 | # for each node and each window is logged into the node via SSH. 254 | # [plugin tmux] 255 | # SETUP_CLASS = starcluster.plugins.tmux.TmuxControlCenter 256 | # 257 | # Use this plugin to change the default MPI implementation on the 258 | # cluster from OpenMPI to MPICH2. 259 | # [plugin mpich2] 260 | # SETUP_CLASS = starcluster.plugins.mpich2.MPICH2Setup 261 | # 262 | # Configure a hadoop cluster. (includes dumbo setup) 263 | # [plugin hadoop] 264 | # SETUP_CLASS = starcluster.plugins.hadoop.Hadoop 265 | # 266 | # Configure a distributed MySQL Cluster 267 | # [plugin mysqlcluster] 268 | # SETUP_CLASS = starcluster.plugins.mysql.MysqlCluster 269 | # NUM_REPLICAS = 2 270 | # DATA_MEMORY = 80M 271 | # INDEX_MEMORY = 18M 272 | # DUMP_FILE = test.sql 273 | # DUMP_INTERVAL = 60 274 | # DEDICATED_QUERY = True 275 | # NUM_DATA_NODES = 2 276 | # 277 | # Install and setup an Xvfb server on each cluster node 278 | # [plugin xvfb] 279 | # SETUP_CLASS = starcluster.plugins.xvfb.XvfbSetup 280 | -------------------------------------------------------------------------------- /provisioning/.gitignore: -------------------------------------------------------------------------------- 1 | build 2 | packer_cache 3 | packer.log 4 | packer-vbox.log 5 | -------------------------------------------------------------------------------- /provisioning/BCE-14.10-amd64.json: -------------------------------------------------------------------------------- 1 | { 2 | "variables": { 3 | "bce_host_audio": "alsa", 4 | "bce_user": "oski", 5 | "use_saved_pkg_src": "False", 6 | "pkg_src_file": "/dev/null" 7 | }, 8 | 9 | "builders": [ 10 | { 11 | "type": "amazon-ebs", 12 | "ami_name": "BCE-2015-spring", 13 | "instance_type": "m3.medium", 14 | "region": "us-west-1", 15 | "ami_regions": "us-west-2", 16 | "source_ami": "ami-01717d44", 17 | "ssh_username": "ubuntu", 18 | "tags": { 19 | "OS_Version": "Ubuntu", 20 | "Release": "Latest" 21 | } 22 | }, 23 | { 24 | "type": "azure", 25 | "publish_settings_path": "Free_Trial-2-9-2015-credentials.publishsettings", 26 | "subscription_name": "Free Trial", 27 | "storage_account": "berkeleyscf", 28 | "storage_account_container": "images", 29 | "os_type": "Linux", 30 | "os_image_label": "Ubuntu Server 14.10", 31 | "location": "West US", 32 | "instance_size": "Small", 33 | "user_image_label": "BCE-2015-spring-{{timestamp}}" 34 | }, 35 | { 36 | "vm_name": "BCE-2015-spring", 37 | "disk_size": 16000, 38 | "output_directory": "build", 39 | "type": "virtualbox-iso", 40 | "headless": "true", 41 | "format": "ova", 42 | "boot_command": [ 43 | "", 44 | "", 45 | "", 46 | "/install/vmlinuz", 47 | " auto", 48 | " console-setup/ask_detect=false", 49 | " console-setup/layoutcode=us", 50 | " console-setup/modelcode=pc105", 51 | " debconf/frontend=noninteractive", 52 | " debian-installer=en_US", 53 | " fb=false", 54 | " initrd=/install/initrd.gz", 55 | " kbd-chooser/method=us", 56 | " keyboard-configuration/layout=USA", 57 | " keyboard-configuration/variant=USA", 58 | " locale=en_US", 59 | " netcfg/get_domain=vm", 60 | " netcfg/get_hostname=BCE", 61 | " noapic", 62 | " preseed/url=http://{{ .HTTPIP }}:{{ .HTTPPort }}/ubuntu-14.10/preseed.cfg", 63 | " --", 64 | "" 65 | ], 66 | "http_directory": "http", 67 | "guest_additions_mode": "attach", 68 | "vboxmanage": [ 69 | [ 70 | "modifyvm", "{{.Name}}", 71 | "--memory", "1024", 72 | "--cpus", "1", 73 | "--clipboard", "bidirectional", 74 | "--draganddrop", "bidirectional", 75 | "--vram", "128", 76 | "--accelerate3d", "on", 77 | "--audio", "{{user `bce_host_audio`}}", 78 | "--audiocontroller", "ac97" 79 | ], 80 | [ 81 | "setextradata", "{{.Name}}", 82 | "GUI/SuppressMessages", 83 | "remindAboutAutoCapture,remindAboutWrongColorDepth,remindAboutMouseIntegrationOn,remindAboutMouseIntegrationOff,confirmInputCapture,confirmGoingFullscreen" 84 | ] 85 | ], 86 | "guest_os_type": "Ubuntu_64", 87 | "iso_checksum": "0c1ebea31c3523cfe9a4ffed8bcf6c7d23dfb97b", 88 | "iso_checksum_type": "sha1", 89 | "iso_url": "http://releases.ubuntu.com/14.10/ubuntu-14.10-server-amd64.iso", 90 | "ssh_username": "{{user `bce_user`}}", 91 | "ssh_password": "{{user `bce_user`}}", 92 | "ssh_wait_timeout": "3000s", 93 | "shutdown_command": "echo '{{user `bce_user`}}' | sudo -S shutdown -P now" 94 | } 95 | ], 96 | "provisioners": [ 97 | { 98 | "type": "file", 99 | "source": "dot-config", 100 | "destination": "/home/{{user `bce_user`}}/.config" 101 | }, 102 | { 103 | "type": "file", 104 | "source": "dot-local", 105 | "destination": "/home/{{user `bce_user`}}/.local" 106 | }, 107 | { 108 | "type": "file", 109 | "source": "plymouth-theme", 110 | "destination": "/tmp/bce" 111 | }, 112 | { 113 | "type": "file", 114 | "source": "guest-scripts/setup_ipython_notebook.sh", 115 | "destination": "/home/{{user `bce_user`}}/setup_ipython_notebook.sh" 116 | }, 117 | { 118 | "type": "file", 119 | "source": "guest-scripts/update-bce-docs", 120 | "destination": "/tmp/update-bce-docs" 121 | }, 122 | { 123 | "type": "file", 124 | "source": "packages", 125 | "destination": "/tmp/packages" 126 | }, 127 | { 128 | "type": "file", 129 | "source": "bootstrap.d", 130 | "destination": "/tmp/bootstrap.d" 131 | }, 132 | { 133 | "type": "file", 134 | "source": "{{user `pkg_src_file`}}", 135 | "destination": "/tmp/pkgs.zip" 136 | }, 137 | { 138 | "type": "shell", 139 | "script": "bootstrap-bce.sh", 140 | "environment_vars": ["DEBIAN_PRIORITY=high", 141 | "DEBIAN_FRONTEND=noninteractive", 142 | "USE_SAVED_PKG_SRC={{user `use_saved_pkg_src`}}"], 143 | "execute_command": "echo '{{user `bce_user`}}' | {{ .Vars }} sudo -E -S bash '{{ .Path }}'" 144 | }, 145 | { 146 | "type": "file", 147 | "source": "packer-vbox.log", 148 | "destination": "/var/tmp/packer-vbox.log" 149 | } 150 | ] 151 | } 152 | -------------------------------------------------------------------------------- /provisioning/BCE-2015-fall.json: -------------------------------------------------------------------------------- 1 | { 2 | "variables": { 3 | "bce_host_audio": "alsa", 4 | "bce_user": "ubuntu", 5 | "bce_version": "2015-fall" 6 | }, 7 | 8 | "builders": [ 9 | { 10 | "type": "amazon-ebs", 11 | "ami_name": "BCE-{{user `bce_version`}}", 12 | "instance_type": "m3.2xlarge", 13 | "region": "us-west-2", 14 | "ami_regions": "us-west-1", 15 | "source_ami": "ami-414c4c71", 16 | "ssh_username": "ubuntu", 17 | "tags": { 18 | "OS_Version": "Ubuntu", 19 | "Release": "Latest" 20 | } 21 | }, 22 | { 23 | "type": "azure", 24 | "publish_settings_path": "Free_Trial-2-9-2015-credentials.publishsettings", 25 | "subscription_name": "Free Trial", 26 | "storage_account": "berkeleyscf", 27 | "storage_account_container": "images", 28 | "os_type": "Linux", 29 | "os_image_label": "Ubuntu Server 15.10", 30 | "location": "West US", 31 | "instance_size": "Small", 32 | "user_image_label": "BCE-{{user `bce_version`}}-{{timestamp}}" 33 | }, 34 | { 35 | "vm_name": "BCE-{{user `bce_version`}}", 36 | "disk_size": 16000, 37 | "output_directory": "build", 38 | "type": "virtualbox-iso", 39 | "headless": "true", 40 | "format": "ova", 41 | "boot_command": [ 42 | "", 43 | "", 44 | "", 45 | "/install/vmlinuz", 46 | " auto", 47 | " console-setup/ask_detect=false", 48 | " console-setup/layoutcode=us", 49 | " console-setup/modelcode=pc105", 50 | " debconf/frontend=noninteractive", 51 | " debian-installer=en_US", 52 | " fb=false", 53 | " initrd=/install/initrd.gz", 54 | " kbd-chooser/method=us", 55 | " keyboard-configuration/layout=USA", 56 | " keyboard-configuration/variant=USA", 57 | " locale=en_US", 58 | " netcfg/get_domain=vm", 59 | " netcfg/get_hostname=BCE", 60 | " noapic", 61 | " preseed/url=http://{{ .HTTPIP }}:{{ .HTTPPort }}/ubuntu-15.10/preseed.cfg", 62 | " --", 63 | "" 64 | ], 65 | "http_directory": "http", 66 | "guest_additions_mode": "attach", 67 | "vboxmanage": [ 68 | [ 69 | "modifyvm", "{{.Name}}", 70 | "--memory", "1024", 71 | "--cpus", "1", 72 | "--clipboard", "bidirectional", 73 | "--draganddrop", "bidirectional", 74 | "--vram", "128", 75 | "--accelerate3d", "on", 76 | "--audio", "{{user `bce_host_audio`}}", 77 | "--audiocontroller", "ac97", 78 | "--vrde", "on", 79 | "--vrdeport", "8389", 80 | "--vrdeaddress", "127.0.0.1", 81 | "--nictype1", "virtio" 82 | ], 83 | [ 84 | "setextradata", "{{.Name}}", 85 | "GUI/SuppressMessages", 86 | "remindAboutAutoCapture,remindAboutWrongColorDepth,remindAboutMouseIntegrationOn,remindAboutMouseIntegrationOff,confirmInputCapture,confirmGoingFullscreen" 87 | ] 88 | ], 89 | "guest_os_type": "Ubuntu_64", 90 | "iso_url": "http://releases.ubuntu.com/15.04/ubuntu-15.04-server-amd64.iso", 91 | "iso_checksum": "d10248965c2c749df6bcce9f2f90f16a2e75e843", 92 | "iso_checksum_type": "sha1", 93 | "ssh_username": "{{user `bce_user`}}", 94 | "ssh_password": "{{user `bce_user`}}", 95 | "ssh_wait_timeout": "6000s", 96 | "shutdown_command": "echo '{{user `bce_user`}}' | sudo -S shutdown -P now" 97 | } 98 | ], 99 | "provisioners": [ 100 | { 101 | "type": "file", 102 | "source": "dot-config", 103 | "destination": "/home/{{user `bce_user`}}/.config" 104 | }, 105 | { 106 | "type": "file", 107 | "source": "dot-local", 108 | "destination": "/home/{{user `bce_user`}}/.local" 109 | }, 110 | { 111 | "type": "file", 112 | "source": "plymouth-theme", 113 | "destination": "/tmp/bce" 114 | }, 115 | { 116 | "type": "file", 117 | "source": "guest-scripts/setup_ipython_notebook.sh", 118 | "destination": "/home/{{user `bce_user`}}/setup_ipython_notebook.sh" 119 | }, 120 | { 121 | "type": "file", 122 | "source": "guest-scripts/update-bce-docs", 123 | "destination": "/tmp/update-bce-docs" 124 | }, 125 | { 126 | "type": "file", 127 | "source": "packages", 128 | "destination": "/tmp/packages" 129 | }, 130 | { 131 | "type": "file", 132 | "source": "bootstrap.d", 133 | "destination": "/tmp/bootstrap.d" 134 | }, 135 | { 136 | "type": "shell", 137 | "script": "bootstrap-bce.sh", 138 | "environment_vars": ["DEBIAN_PRIORITY=high", 139 | "DEBIAN_FRONTEND=noninteractive", 140 | "BCE_USER={{user `bce_user`}}", 141 | "BCE_VERSION={{user `bce_version`}}"], 142 | "execute_command": "echo '{{user `bce_user`}}' | {{ .Vars }} sudo -E -S bash '{{ .Path }}'" 143 | }, 144 | { 145 | "type": "file", 146 | "source": "packer-vbox.log", 147 | "destination": "/var/tmp/packer-vbox.log", 148 | "only": ["virtualbox-iso"] 149 | } 150 | ] 151 | } 152 | -------------------------------------------------------------------------------- /provisioning/BCE-2015-summer.json: -------------------------------------------------------------------------------- 1 | { 2 | "variables": { 3 | "bce_host_audio": "alsa", 4 | "bce_user": "ubuntu" 5 | }, 6 | 7 | "builders": [ 8 | { 9 | "type": "amazon-ebs", 10 | "ami_name": "BCE-2015-summer", 11 | "instance_type": "m3.2xlarge", 12 | "region": "us-west-2", 13 | "ami_regions": "us-west-1", 14 | "source_ami": "ami-414c4c71", 15 | "ssh_username": "ubuntu", 16 | "tags": { 17 | "OS_Version": "Ubuntu", 18 | "Release": "Latest" 19 | } 20 | }, 21 | { 22 | "type": "azure", 23 | "publish_settings_path": "Free_Trial-2-9-2015-credentials.publishsettings", 24 | "subscription_name": "Free Trial", 25 | "storage_account": "berkeleyscf", 26 | "storage_account_container": "images", 27 | "os_type": "Linux", 28 | "os_image_label": "Ubuntu Server 15.04", 29 | "location": "West US", 30 | "instance_size": "Small", 31 | "user_image_label": "BCE-2015-summer-{{timestamp}}" 32 | }, 33 | { 34 | "vm_name": "BCE-2015-summer", 35 | "disk_size": 16000, 36 | "output_directory": "build", 37 | "type": "virtualbox-iso", 38 | "headless": "true", 39 | "format": "ova", 40 | "boot_command": [ 41 | "", 42 | "", 43 | "", 44 | "/install/vmlinuz", 45 | " auto", 46 | " console-setup/ask_detect=false", 47 | " console-setup/layoutcode=us", 48 | " console-setup/modelcode=pc105", 49 | " debconf/frontend=noninteractive", 50 | " debian-installer=en_US", 51 | " fb=false", 52 | " initrd=/install/initrd.gz", 53 | " kbd-chooser/method=us", 54 | " keyboard-configuration/layout=USA", 55 | " keyboard-configuration/variant=USA", 56 | " locale=en_US", 57 | " netcfg/get_domain=vm", 58 | " netcfg/get_hostname=BCE", 59 | " noapic", 60 | " preseed/url=http://{{ .HTTPIP }}:{{ .HTTPPort }}/ubuntu-15.04/preseed.cfg", 61 | " --", 62 | "" 63 | ], 64 | "http_directory": "http", 65 | "guest_additions_mode": "attach", 66 | "vboxmanage": [ 67 | [ 68 | "modifyvm", "{{.Name}}", 69 | "--memory", "1024", 70 | "--cpus", "1", 71 | "--clipboard", "bidirectional", 72 | "--draganddrop", "bidirectional", 73 | "--vram", "128", 74 | "--accelerate3d", "on", 75 | "--audio", "{{user `bce_host_audio`}}", 76 | "--audiocontroller", "ac97" 77 | ], 78 | [ 79 | "setextradata", "{{.Name}}", 80 | "GUI/SuppressMessages", 81 | "remindAboutAutoCapture,remindAboutWrongColorDepth,remindAboutMouseIntegrationOn,remindAboutMouseIntegrationOff,confirmInputCapture,confirmGoingFullscreen" 82 | ] 83 | ], 84 | "guest_os_type": "Ubuntu_64", 85 | "iso_checksum": "d10248965c2c749df6bcce9f2f90f16a2e75e843", 86 | "iso_checksum_type": "sha1", 87 | "iso_url": "http://releases.ubuntu.com/15.04/ubuntu-15.04-server-amd64.iso", 88 | "ssh_username": "{{user `bce_user`}}", 89 | "ssh_password": "{{user `bce_user`}}", 90 | "ssh_wait_timeout": "3000s", 91 | "shutdown_command": "echo '{{user `bce_user`}}' | sudo -S shutdown -P now" 92 | } 93 | ], 94 | "provisioners": [ 95 | { 96 | "type": "file", 97 | "source": "dot-config", 98 | "destination": "/home/{{user `bce_user`}}/.config" 99 | }, 100 | { 101 | "type": "file", 102 | "source": "dot-local", 103 | "destination": "/home/{{user `bce_user`}}/.local" 104 | }, 105 | { 106 | "type": "file", 107 | "source": "plymouth-theme", 108 | "destination": "/tmp/bce" 109 | }, 110 | { 111 | "type": "file", 112 | "source": "guest-scripts/setup_ipython_notebook.sh", 113 | "destination": "/home/{{user `bce_user`}}/setup_ipython_notebook.sh" 114 | }, 115 | { 116 | "type": "file", 117 | "source": "guest-scripts/update-bce-docs", 118 | "destination": "/tmp/update-bce-docs" 119 | }, 120 | { 121 | "type": "file", 122 | "source": "packages", 123 | "destination": "/tmp/packages" 124 | }, 125 | { 126 | "type": "file", 127 | "source": "bootstrap.d", 128 | "destination": "/tmp/bootstrap.d" 129 | }, 130 | { 131 | "type": "shell", 132 | "script": "bootstrap-bce.sh", 133 | "environment_vars": ["DEBIAN_PRIORITY=high", 134 | "DEBIAN_FRONTEND=noninteractive"], 135 | "execute_command": "echo '{{user `bce_user`}}' | {{ .Vars }} sudo -E -S bash '{{ .Path }}'" 136 | }, 137 | { 138 | "type": "file", 139 | "source": "packer-vbox.log", 140 | "destination": "/var/tmp/packer-vbox.log", 141 | "only": ["virtualbox-iso"] 142 | } 143 | ] 144 | } 145 | -------------------------------------------------------------------------------- /provisioning/BCE-2016-spring.json: -------------------------------------------------------------------------------- 1 | { 2 | "variables": { 3 | "bce_host_audio": "alsa", 4 | "bce_user": "ubuntu", 5 | "bce_version": "2016-spring" 6 | }, 7 | 8 | "builders": [ 9 | { 10 | "type": "amazon-ebs", 11 | "name": "amazon-cfn", 12 | "ami_name": "BCE-{{user `bce_version`}}-cfncluster", 13 | "instance_type": "m3.2xlarge", 14 | "region": "us-west-2", 15 | "source_ami": "ami-f2bf5492", 16 | "ssh_username": "ubuntu", 17 | "launch_block_device_mappings": [ 18 | { 19 | "device_name": "/dev/sda1", 20 | "volume_size": 15, 21 | "delete_on_termination": true 22 | } 23 | ], 24 | "ami_block_device_mappings": [ 25 | { 26 | "device_name": "/dev/sda1", 27 | "volume_size": 15, 28 | "delete_on_termination": true 29 | } 30 | ], 31 | "tags": { 32 | "OS_Version": "Ubuntu", 33 | "Release": "14.04" 34 | } 35 | }, 36 | { 37 | "type": "amazon-ebs", 38 | "name": "amazon-base", 39 | "ami_name": "BCE-{{user `bce_version`}}", 40 | "instance_type": "m3.2xlarge", 41 | "region": "us-west-2", 42 | "ami_regions": "us-west-1", 43 | "source_ami": "ami-414c4c71", 44 | "ssh_username": "ubuntu", 45 | "tags": { 46 | "OS_Version": "Ubuntu", 47 | "Release": "Latest" 48 | } 49 | }, 50 | { 51 | "type": "azure", 52 | "publish_settings_path": "Free_Trial-2-9-2015-credentials.publishsettings", 53 | "subscription_name": "Free Trial", 54 | "storage_account": "berkeleyscf", 55 | "storage_account_container": "images", 56 | "os_type": "Linux", 57 | "os_image_label": "Ubuntu Server 15.10", 58 | "location": "West US", 59 | "instance_size": "Small", 60 | "user_image_label": "BCE-{{user `bce_version`}}-{{timestamp}}" 61 | }, 62 | { 63 | "vm_name": "BCE-{{user `bce_version`}}", 64 | "disk_size": 16000, 65 | "output_directory": "build", 66 | "type": "virtualbox-iso", 67 | "headless": "true", 68 | "format": "ova", 69 | "boot_command": [ 70 | "", 71 | "", 72 | "", 73 | "/install/vmlinuz", 74 | " auto", 75 | " console-setup/ask_detect=false", 76 | " console-setup/layoutcode=us", 77 | " console-setup/modelcode=pc105", 78 | " debconf/frontend=noninteractive", 79 | " debian-installer=en_US", 80 | " fb=false", 81 | " initrd=/install/initrd.gz", 82 | " kbd-chooser/method=us", 83 | " keyboard-configuration/layout=USA", 84 | " keyboard-configuration/variant=USA", 85 | " locale=en_US", 86 | " netcfg/get_domain=vm", 87 | " netcfg/get_hostname=BCE", 88 | " noapic", 89 | " preseed/url=http://{{ .HTTPIP }}:{{ .HTTPPort }}/ubuntu-15.10/preseed.cfg", 90 | " --", 91 | "" 92 | ], 93 | "http_directory": "http", 94 | "guest_additions_mode": "attach", 95 | "vboxmanage": [ 96 | [ 97 | "modifyvm", "{{.Name}}", 98 | "--memory", "1024", 99 | "--cpus", "1", 100 | "--clipboard", "bidirectional", 101 | "--draganddrop", "bidirectional", 102 | "--vram", "128", 103 | "--accelerate3d", "on", 104 | "--audio", "{{user `bce_host_audio`}}", 105 | "--audiocontroller", "ac97", 106 | "--vrde", "on", 107 | "--vrdeport", "8389", 108 | "--vrdeaddress", "127.0.0.1", 109 | "--nictype1", "virtio" 110 | ], 111 | [ 112 | "setextradata", "{{.Name}}", 113 | "GUI/SuppressMessages", 114 | "remindAboutAutoCapture,remindAboutWrongColorDepth,remindAboutMouseIntegrationOn,remindAboutMouseIntegrationOff,confirmInputCapture,confirmGoingFullscreen" 115 | ] 116 | ], 117 | "guest_os_type": "Ubuntu_64", 118 | "iso_url": "http://releases.ubuntu.com/15.04/ubuntu-15.04-server-amd64.iso", 119 | "iso_checksum": "d10248965c2c749df6bcce9f2f90f16a2e75e843", 120 | "iso_checksum_type": "sha1", 121 | "ssh_username": "{{user `bce_user`}}", 122 | "ssh_password": "{{user `bce_user`}}", 123 | "ssh_wait_timeout": "6000s", 124 | "shutdown_command": "echo '{{user `bce_user`}}' | sudo -S shutdown -P now" 125 | } 126 | ], 127 | "provisioners": [ 128 | { 129 | "type": "file", 130 | "source": "dot-config", 131 | "destination": "/home/{{user `bce_user`}}/.config" 132 | }, 133 | { 134 | "type": "file", 135 | "source": "dot-local", 136 | "destination": "/home/{{user `bce_user`}}/.local" 137 | }, 138 | { 139 | "type": "file", 140 | "source": "plymouth-theme", 141 | "destination": "/tmp/bce" 142 | }, 143 | { 144 | "type": "file", 145 | "source": "guest-scripts/setup_ipython_notebook.sh", 146 | "destination": "/home/{{user `bce_user`}}/setup_ipython_notebook.sh" 147 | }, 148 | { 149 | "type": "file", 150 | "source": "guest-scripts/update-bce-docs", 151 | "destination": "/tmp/update-bce-docs" 152 | }, 153 | { 154 | "type": "file", 155 | "source": "packages", 156 | "destination": "/tmp/packages" 157 | }, 158 | { 159 | "type": "file", 160 | "source": "bootstrap.d", 161 | "destination": "/tmp/bootstrap.d" 162 | }, 163 | { 164 | "type": "shell", 165 | "script": "bootstrap-bce.sh", 166 | "environment_vars": ["DEBIAN_PRIORITY=high", 167 | "DEBIAN_FRONTEND=noninteractive", 168 | "BCE_USER={{user `bce_user`}}", 169 | "BCE_VERSION={{user `bce_version`}}"], 170 | "execute_command": "echo '{{user `bce_user`}}' | {{ .Vars }} sudo -E -S bash '{{ .Path }}'" 171 | }, 172 | { 173 | "type": "file", 174 | "source": "packer-vbox.log", 175 | "destination": "/var/tmp/packer-vbox.log", 176 | "only": ["virtualbox-iso"] 177 | } 178 | ] 179 | } 180 | -------------------------------------------------------------------------------- /provisioning/BCE-2016-summer.json: -------------------------------------------------------------------------------- 1 | { 2 | "variables": { 3 | "bce_host_audio": "alsa", 4 | "bce_user": "ubuntu", 5 | "bce_version": "2016-summer" 6 | }, 7 | 8 | "builders": [ 9 | { 10 | "type": "amazon-ebs", 11 | "ami_name": "BCE-{{user `bce_version`}}", 12 | "instance_type": "m3.2xlarge", 13 | "region": "us-west-2", 14 | "ami_regions": "us-west-1", 15 | "source_ami": "ami-414c4c71", 16 | "ssh_username": "ubuntu", 17 | "tags": { 18 | "OS_Version": "Ubuntu", 19 | "Release": "Latest" 20 | } 21 | }, 22 | { 23 | "type": "azure", 24 | "publish_settings_path": "Free_Trial-2-9-2015-credentials.publishsettings", 25 | "subscription_name": "Free Trial", 26 | "storage_account": "berkeleyscf", 27 | "storage_account_container": "images", 28 | "os_type": "Linux", 29 | "os_image_label": "Ubuntu Server 16.04", 30 | "location": "West US", 31 | "instance_size": "Small", 32 | "user_image_label": "BCE-{{user `bce_version`}}-{{timestamp}}" 33 | }, 34 | { 35 | "vm_name": "BCE-{{user `bce_version`}}", 36 | "disk_size": 16000, 37 | "output_directory": "build", 38 | "type": "virtualbox-iso", 39 | "headless": "true", 40 | "format": "ova", 41 | "http_directory": "http", 42 | "boot_command": [ 43 | "", 44 | "", 45 | "", 46 | "", 47 | "", 48 | "", 49 | "", 50 | "", 51 | "", 52 | "", 53 | "/install/vmlinuz", 54 | " initrd=/install/initrd.gz", 55 | " auto", 56 | " console-setup/ask_detect=false", 57 | " console-setup/layoutcode=us", 58 | " console-setup/modelcode=pc105", 59 | " debconf/frontend=noninteractive", 60 | " debian-installer=en_US", 61 | " fb=false", 62 | " kbd-chooser/method=us", 63 | " keyboard-configuration/layout=USA", 64 | " keyboard-configuration/variant=USA", 65 | " locale=en_US", 66 | " netcfg/get_domain=vm", 67 | " netcfg/get_hostname=BCE", 68 | " noapic", 69 | " preseed/url=http://{{ .HTTPIP }}:{{ .HTTPPort }}/preseed.cfg", 70 | " --", 71 | "" 72 | 73 | 74 | 75 | 76 | 77 | 78 | ], 79 | "guest_additions_mode": "attach", 80 | "vboxmanage": [ 81 | [ 82 | "modifyvm", "{{.Name}}", 83 | "--memory", "1024", 84 | "--cpus", "1", 85 | "--clipboard", "bidirectional", 86 | "--draganddrop", "bidirectional", 87 | "--vram", "128", 88 | "--accelerate3d", "on", 89 | "--audio", "{{user `bce_host_audio`}}", 90 | "--audiocontroller", "ac97", 91 | "--vrde", "on", 92 | "--vrdeport", "8389", 93 | "--vrdeaddress", "127.0.0.1", 94 | "--nictype1", "virtio" 95 | ], 96 | [ 97 | "setextradata", "{{.Name}}", 98 | "GUI/SuppressMessages", 99 | "remindAboutAutoCapture,remindAboutWrongColorDepth,remindAboutMouseIntegrationOn,remindAboutMouseIntegrationOff,confirmInputCapture,confirmGoingFullscreen" 100 | ] 101 | ], 102 | "guest_os_type": "Ubuntu_64", 103 | "iso_url": "http://releases.ubuntu.com/16.04/ubuntu-16.04-server-amd64.iso", 104 | "iso_checksum": "70db69379816b91eb01559212ae474a36ecec9ef", 105 | "iso_checksum_type": "sha1", 106 | "ssh_username": "{{user `bce_user`}}", 107 | "ssh_password": "{{user `bce_user`}}", 108 | "ssh_wait_timeout": "6000s", 109 | "shutdown_command": "echo '{{user `bce_user`}}' | sudo -S shutdown -P now" 110 | } 111 | ], 112 | "provisioners": [ 113 | { 114 | "type": "file", 115 | "source": "dot-config", 116 | "destination": "/home/{{user `bce_user`}}/.config" 117 | }, 118 | { 119 | "type": "file", 120 | "source": "dot-local", 121 | "destination": "/home/{{user `bce_user`}}/.local" 122 | }, 123 | { 124 | "type": "file", 125 | "source": "plymouth-theme", 126 | "destination": "/tmp/bce" 127 | }, 128 | { 129 | "type": "file", 130 | "source": "guest-scripts/setup_ipython_notebook.sh", 131 | "destination": "/home/{{user `bce_user`}}/setup_ipython_notebook.sh" 132 | }, 133 | { 134 | "type": "file", 135 | "source": "guest-scripts/update-bce-docs", 136 | "destination": "/tmp/update-bce-docs" 137 | }, 138 | { 139 | "type": "file", 140 | "source": "packages", 141 | "destination": "/tmp/packages" 142 | }, 143 | { 144 | "type": "file", 145 | "source": "bootstrap.d", 146 | "destination": "/tmp/bootstrap.d" 147 | }, 148 | { 149 | "type": "shell", 150 | "script": "bootstrap-bce.sh", 151 | "environment_vars": ["DEBIAN_PRIORITY=high", 152 | "DEBIAN_FRONTEND=noninteractive", 153 | "BCE_USER={{user `bce_user`}}", 154 | "BCE_VERSION={{user `bce_version`}}"], 155 | "execute_command": "echo '{{user `bce_user`}}' | {{ .Vars }} sudo -E -S bash '{{ .Path }}'" 156 | }, 157 | { 158 | "type": "file", 159 | "source": "packer-vbox.log", 160 | "destination": "/var/tmp/packer-vbox.log", 161 | "only": ["virtualbox-iso"] 162 | } 163 | ] 164 | } 165 | -------------------------------------------------------------------------------- /provisioning/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:15.04 2 | MAINTAINER Carl Boettiger 3 | 4 | ## Set environment 5 | ENV TERM xterm 6 | ENV BCE_USER ubuntu 7 | ENV BCE_VERSION 2015-fall 8 | 9 | ## Set Locales 10 | RUN locale-gen en_US.UTF-8 11 | ENV LANG en_US.UTF-8 12 | ENV LANGUAGE en_US:en 13 | ENV LC_ALL en_US.UTF-8 14 | 15 | ## Copy over files to the locations expected by the BCE provisioning scripts 16 | COPY . /tmp 17 | RUN useradd $BCE_USER && \ 18 | mkdir /home/$BCE_USER && \ 19 | mv /tmp/dot-config /home/$BCE_USER/.config && \ 20 | mv /tmp/dot-local /home/$BCE_USER/.local && \ 21 | mv /tmp/plymouth-theme /tmp/bce && \ 22 | mv /tmp/guest-scripts/setup_ipython_notebook.sh /home/$BCE_USER/ && \ 23 | mv /tmp/guest-scripts/update-bce-docs /tmp/ && \ 24 | chown -R $BCE_USER:$BCE_USER /home/$BCE_USER 25 | 26 | ## Install missing packages, configure debconf.selections and the run provisioner 27 | RUN cd /tmp && \ 28 | DEBIAN_FRONTEND=noninteractive && DEBIAN_PRIORITY=high \ 29 | apt-get update -qq && apt-get install -yq --no-install-recommends \ 30 | apt-transport-https \ 31 | ca-certificates \ 32 | debconf-utils \ 33 | dnsutils \ 34 | etckeeper \ 35 | lsb-release \ 36 | nano \ 37 | sudo && \ 38 | bzr whoami "BCE Release Team " && \ 39 | debconf-set-selections < debconf.selections && \ 40 | bash /tmp/bootstrap-bce.sh 41 | 42 | 43 | ## Consider: adding jupyter and rstudio-server to path 44 | ## Extending with more R packages 45 | EXPOSE 9999 46 | EXPOSE 8787 47 | 48 | -------------------------------------------------------------------------------- /provisioning/HOWTO.md: -------------------------------------------------------------------------------- 1 | Overview 2 | ============================= 3 | 4 | Both approaches outlined below will retrieve a minimal Ubuntu box and provision it utilizing the bootstrap-bce.sh script. The BCE\_PROVISION environment variable serves as a hint to the bootstrap script so that different authors can create different VMs using the same build framework. 5 | 6 | Note that to create a VM for VirtualBox, you'll need a recent version of VirtualBox (in particular the default version on Ubuntu 12.04 is too old - you'll need to install the Ubuntu virtualbox-4.3 package). 7 | 8 | Requirements 9 | ============================= 10 | * Packer - installation instructions are at https://www.packer.io/intro/getting-started/setup.html 11 | 12 | * Caches of python, R, and other packages are maintained in the BCE box.com account. These may be needed if the online sources are removed. 13 | 14 | - [2015-spring](https://berkeley.box.com/s/da93os20nee71hscbf5x6vtl6oprajbt) 15 | 16 | Creating BCE VMs with Packer 17 | ============================= 18 | 19 | For a Virtualbox VM, run: 20 | 21 | $ make vbox 22 | 23 | This creates a virtual machine in the OVA format that can be imported into Virtualbox on Windows, Mac, or UNIX. 24 | 25 | To create an Amazon EC2 AMI, set your Amazon security credentials and then run: 26 | 27 | $ make ec2 28 | 29 | or for an AMI that will work with cfncluster: 30 | 31 | $ make ec2-cfn 32 | 33 | Note that the CFN build requests a volume size of 15 Gb or it runs out of disk building the AMI; this 15 Gb then gets baked in as the default when using the AMI to start an instance. 34 | 35 | Amazon credentials can be set on the command line or by editing the BCE json file. To set on the command line run: 36 | 37 | $ export AWS_ACCESS_KEY_ID=YYY 38 | $ export AWS_SECRET_ACCESS_KEY=ZZZ 39 | 40 | More information on building to ec2 is available on the [packer ec2 help page](https://www.packer.io/docs/builders/amazon-ebs.html) 41 | 42 | Notes on provisioning 43 | ===================== 44 | 45 | Regarding guest additions, it should be possible to attach the bundled ISO 46 | using something like the following in the JSON "vboxmanage" section: 47 | 48 | ```json 49 | [ 50 | "storageattach", "{{.Name}}", 51 | "--storagectl", "IDE Controller", 52 | "--port", "1", 53 | "--device", "0", 54 | "--type", "dvddrive", 55 | "--medium", "additions" 56 | ] 57 | ``` 58 | 59 | For which you should also switch "guest_additions_mode" to "disable." 60 | 61 | However Dav reported the error: 62 | 63 | VBoxManage: error: Invalid UUID or filename "additions" 64 | 65 | Strangely, this does work if he executes it during provisioning: 66 | 67 | vboxmanage storageattach "BCE-xubuntu-14.04-amd64" --storagectl "IDE Controller" --port 1 --device 0 --type dvddrive --medium additions 68 | 69 | Go figure 70 | -------------------------------------------------------------------------------- /provisioning/Makefile: -------------------------------------------------------------------------------- 1 | JSON=BCE-2016-fall.json 2 | 3 | # Detect host operating system 4 | UNAME := $(shell uname) 5 | 6 | # Set virtualbox host audio support 7 | BCE_HOST_AUDIO=none 8 | ifeq ($(UNAME),Linux) 9 | BCE_HOST_AUDIO=alsa 10 | endif 11 | ifeq ($(UNAME),Darwin) 12 | BCE_HOST_AUDIO=coreaudio 13 | endif 14 | 15 | # not sure how to do an 'if' in the json so 16 | # this allows us to copy an empty file if not 17 | # using local copies of source packages 18 | ifeq ($(USE_SAVED_PKG_SRC),False) 19 | PKG_SRC_FILE=/dev/null 20 | endif 21 | 22 | 23 | all: vbox ec2 24 | 25 | validate: 26 | packer validate $(JSON) 27 | 28 | # https://www.packer.io/docs/builders/amazon.html 29 | # Set AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY environment variables or 30 | # enter creds in ~/.aws/credentials. 31 | ec2: 32 | PACKER_LOG=100 PACKER_LOG_PATH=packer.log PACKER_NO_COLOR=1 \ 33 | packer build -only=amazon-base \ 34 | -var bce_host_audio=none \ 35 | -var bce_user=ubuntu \ 36 | $(JSON) 2>&1 | tee packer-$@.log 37 | 38 | ec2-cfn: 39 | PACKER_LOG=100 PACKER_LOG_PATH=packer.log PACKER_NO_COLOR=1 \ 40 | packer build -only=amazon-cfn \ 41 | -var bce_host_audio=none \ 42 | -var bce_user=ubuntu \ 43 | $(JSON) 2>&1 | tee packer-$@.log 44 | 45 | azure: 46 | PACKER_LOG=100 PACKER_LOG_PATH=packer.log PACKER_NO_COLOR=1 \ 47 | packer build -only=azure \ 48 | -var bce_host_audio=none \ 49 | -var bce_user=packer \ 50 | $(JSON) 2>&1 | tee packer-$@.log 51 | 52 | vbox: 53 | PACKER_LOG=100 PACKER_LOG_PATH=packer.log PACKER_NO_COLOR=1 \ 54 | packer build -only=virtualbox-iso \ 55 | -var bce_host_audio=$(BCE_HOST_AUDIO) \ 56 | -var bce_user=ubuntu \ 57 | $(JSON) 2>&1 | tee packer-$@.log 58 | 59 | clean: 60 | rm -rf build packer-*.log packer.log 61 | 62 | distclean: clean 63 | rm -rf packer_cache 64 | -------------------------------------------------------------------------------- /provisioning/azureNotes.txt: -------------------------------------------------------------------------------- 1 | # Notes for building Azure image on a Linux Ubuntu 14.04 build machine 2 | # - Chris Paciorek 2/11/15 3 | # this is more or less shell code 4 | 5 | 6 | git clone https://github.com/MSOpenTech/packer-azure 7 | 8 | # credentials file following instructions in packer-azure README.md 9 | # http://go.microsoft.com/fwlink/?LinkId=254432 10 | # this gives me Free_Trial-2-9-2015-credentials.publishsettings 11 | 12 | #apt-get install golang # too old 13 | apt-get install mercurial meld 14 | 15 | wget -P $HOME/downloads https://storage.googleapis.com/golang/go1.3.1.linux-amd64.tar.gz 16 | sudo tar -C /opt -xzf $HOME/downloads/go1.3.1.linux-amd64.tar.gz 17 | 18 | mkdir $HOME/go 19 | export PATH=$PATH:/opt/go/bin 20 | export GOROOT=/opt/go 21 | export GOPATH=$HOME/go 22 | export PATH=$PATH:$GOPATH/bin 23 | 24 | go get github.com/MSOpenTech/packer-azure/packer/builder/azure/driver_restapi 25 | go get github.com/hashicorp/yamux 26 | go get github.com/hashicorp/go-msgpack/codec 27 | 28 | go install -tags 'restapi' github.com/MSOpenTech/packer-azure/packer/plugin/packer-builder-azure 29 | 30 | cp $GOPATH/bin/packer-builder-azure . 31 | 32 | # not clear how the management certificate that I think I generated at https://manage.windowsazure.com/publishsettings/index?client=xplat (packer-azure instructions provided the link) got loaded into the Azure account but it seems to be there now 33 | 34 | # now build the azure image 35 | make azure 36 | 37 | # need to publish the image from the Azure storage container to VM Depot 38 | # https://vmdepot.msopentech.com/List/Index 39 | # click on "Publish"; login (I happened to use my personal yahoo account) 40 | # provide URL (e.g., https://berkeleyscf.blob.core.windows.net/images/BCE-2015-spring-test-1423620126_2015-February-10_18-2-os-2015-02-11.vhd) 41 | # having trouble with it accepting the URL 42 | -------------------------------------------------------------------------------- /provisioning/bootstrap-bce.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # This requires that bootstrap.d be entered as a file provisioner in 4 | # the packer json file. 5 | 6 | for s in /tmp/bootstrap.d/[0-9][0-9]-* ; do 7 | echo "BCE: Sourcing bootstrap.d script '${s}'." 8 | . $s 9 | done 10 | -------------------------------------------------------------------------------- /provisioning/bootstrap.d/00-init: -------------------------------------------------------------------------------- 1 | START_TIME=$(date '+%s') 2 | 3 | # apt in general is probably too verbose for our useage - it's hard to detect 4 | # where actual failures may have occurred. Maybe we can reduce verbosity? 5 | export APT_GET="apt-get -q -y" 6 | 7 | # Make the BCE version available to downstream 8 | echo "BCE_VERSION=${BCE_VERSION}" >> /etc/environment 9 | 10 | export DESKTOP_DIR="/home/${BCE_USER}/.local/share/applications" 11 | 12 | echo "Environment:" 13 | env 14 | -------------------------------------------------------------------------------- /provisioning/bootstrap.d/10-ami-wait-cloud-init: -------------------------------------------------------------------------------- 1 | if [ "${PACKER_BUILDER_TYPE}" != "amazon-ebs" ] && [ "${PACKER_BUILDER_TYPE}" != "azure" ]; then return ; fi 2 | 3 | echo "BCE: waiting for cloud-init to finish..." 4 | while [ ! -f /var/lib/cloud/instance/boot-finished ]; do sleep 1; done 5 | echo " DONE" 6 | -------------------------------------------------------------------------------- /provisioning/bootstrap.d/10-apt-get-update: -------------------------------------------------------------------------------- 1 | APT_MIRROR=mirror.us.leaseweb.net 2 | 3 | echo "BCE: Change to a (usually) faster apt mirror..." 4 | sed -i -e "s/us.archive.ubuntu.com/${APT_MIRROR}/" \ 5 | /etc/apt/sources.list && \ 6 | echo " DONE" || echo " FAIL" 7 | 8 | echo "BCE: Updating apt cache..." 9 | $APT_GET update > /dev/null && \ 10 | echo " DONE" || echo " FAIL" 11 | -------------------------------------------------------------------------------- /provisioning/bootstrap.d/15-etckeeper: -------------------------------------------------------------------------------- 1 | # Track system changes 2 | echo "BCE: configure etckeeper with git..." 3 | $APT_GET install git && \ 4 | $APT_GET install etckeeper && \ 5 | sed -i -e '/^VCS/s/^/#/' -e '/="git"/s/^#//' /etc/etckeeper/etckeeper.conf && \ 6 | ( 7 | # We disable this in the last boostrap step, after we're done being the BCE 8 | # provisioner. 9 | cd /etc && \ 10 | etckeeper init && \ 11 | git config --global user.name "BCE provisioner" && \ 12 | git config --global user.email "bce@lists.berkeley.edu" 13 | ) && \ 14 | echo " DONE" || echo " FAIL" 15 | -------------------------------------------------------------------------------- /provisioning/bootstrap.d/20-guest-additions: -------------------------------------------------------------------------------- 1 | echo "BCE: Installing build utilities..." 2 | # This is more robust - redundancy is not a problem! 3 | $APT_GET install build-essential dkms xserver-xorg dmidecode curl \ 4 | software-properties-common && \ 5 | echo " DONE" || echo " FAIL" 6 | 7 | # An alternative method would be to manually share the directory on the host 8 | # which actually contains VBoxGuestAdditions.iso. On a Mac that is 9 | # /Applications/VirtualBox.app/Contents/MacOS/. Just like with the host user's 10 | # home directory however, there's no convenient variable representing this 11 | # location within the Shared Folders configuration. 12 | 13 | # There's also a `vboxmanage guestcontrol updateadditions` command, 14 | # but that doesn't seem to work from within Packer. 15 | 16 | if [ "${PACKER_BUILDER_TYPE}" == "virtualbox-iso" ]; then 17 | msg="BCE: Installing Guest Additions..." 18 | echo "$msg" 19 | # Currently, we attach the Guest additions iso when using Packer. 20 | # The guest extensions end up as a second CD/DVD drive 21 | # (/dev/cdrom (aka /dev/sr0) is the Ubuntu ISO) 22 | mount /dev/sr1 /mnt && \ 23 | /mnt/VBoxLinuxAdditions.run -- --force 24 | # XXX We break logical chaining here, because it's never working! 25 | eject /mnt && \ 26 | ( echo " DONE" ; etckeeper commit "$msg" ) || echo " FAIL" 27 | fi 28 | -------------------------------------------------------------------------------- /provisioning/bootstrap.d/30-bash: -------------------------------------------------------------------------------- 1 | msg="BCE: Configure bash history" 2 | echo "$msg" 3 | ( 4 | cat << 'EOF' >> /home/${BCE_USER}/.bashrc 5 | # Not bash or zsh? 6 | [ -n "$BASH_VERSION" -o -n "$ZSH_VERSION" ] || return 0 7 | 8 | # Not an interactive shell? 9 | [[ $- == *i* ]] || return 0 10 | 11 | # BCE: Preserve shell history 12 | export HISTTIMEFORMAT="%F %T " 13 | export HISTIGNORE="function prompt_command:history" 14 | 15 | if [ ! -d $HOME/.bash_history.d ]; then mkdir $HOME/.bash_history.d ; fi 16 | _tty="$(tty)" 17 | if [ $? -eq 0 -a -n "${_tty}" ]; then _tty="$(basename $_tty)" ; fi 18 | export HISTFILE=${HOME}/.bash_history.d/${_tty} 19 | EOF 20 | ) && \ 21 | echo " DONE" || echo " FAIL" 22 | -------------------------------------------------------------------------------- /provisioning/bootstrap.d/30-editors: -------------------------------------------------------------------------------- 1 | # XXX - we should also set sensible defaults for gedit 2 | msg="BCE: Set a 4-space tabstop for nano" 3 | echo "$msg" 4 | sed -i -e '/# set tabsize 8/s/.*/set tabsize 4/' /etc/nanorc && \ 5 | ( echo " DONE" ; etckeeper commit "$msg" ) || echo " FAIL" 6 | -------------------------------------------------------------------------------- /provisioning/bootstrap.d/30-sudo: -------------------------------------------------------------------------------- 1 | msg="BCE: Disable sudo password for those in the sudo group" 2 | echo "$msg" 3 | printf "%%sudo\tALL=(ALL:ALL) NOPASSWD: ALL\n" > /etc/sudoers.d/nopasswd && \ 4 | ( echo " DONE" ; etckeeper commit "$msg" ) || echo " FAIL" 5 | -------------------------------------------------------------------------------- /provisioning/bootstrap.d/40-ubuntu-packages: -------------------------------------------------------------------------------- 1 | echo "BCE: Installing Ubuntu packages..." 2 | # This ensures we get security updates, etc. 3 | # Note that this is ALSO done currently by the debian-installer step... 4 | echo "BCE: dist-upgrade..." 5 | $APT_GET dist-upgrade && \ 6 | # The grep bit allows us to have comments in the packages file 7 | # We install no-recommends first, to avoid them getting pulled in by the other 8 | # installs 9 | echo "BCE: installing no-recommends..." 10 | $APT_GET install --fix-missing --no-install-recommends \ 11 | $(grep '^[^#]' /tmp/packages/ubuntu-packages-norecommends.txt) && \ 12 | echo "BCE: installing additional packages..." 13 | $APT_GET install --fix-missing \ 14 | $(grep '^[^#]' /tmp/packages/ubuntu-packages.txt) && \ 15 | # help avoid running out of disk space 16 | $APT_GET clean && \ 17 | echo " DONE" || echo " FAIL" 18 | -------------------------------------------------------------------------------- /provisioning/bootstrap.d/42-azure: -------------------------------------------------------------------------------- 1 | if [ "${PACKER_BUILDER_TYPE}" != "azure" ]; then 2 | echo " SKIP" 3 | return 4 | fi 5 | 6 | echo "BCE: Uninstalling network-manager..." 7 | ${APT_GET} remove network-manager && \ 8 | echo " DONE" || echo " FAIL" 9 | 10 | echo "BCE: Installing waagent..." 11 | ${APT_GET} install waagent && \ 12 | echo " DONE" || echo " FAIL" 13 | -------------------------------------------------------------------------------- /provisioning/bootstrap.d/45-grub: -------------------------------------------------------------------------------- 1 | # The grub video mode increases the boot resolution from 640x480. 2 | 3 | if [ "${PACKER_BUILDER_TYPE}" == "amazon-ebs" ]; then return ; fi 4 | 5 | # Hide the grub boot menu 6 | # Enable plymouth splash screen (disabled due to plymouth/drm issue) 7 | # -e '/^GRUB_CMDLINE_LINUX_DEFAULT=/ s/"$/ splash"/' \ 8 | # Configure plymouth's video mode 9 | # -e '/^#GRUB_GFXMODE=/ a GRUB_GFX_PAYLOAD_LINUX=800x600-32' \ 10 | msg="BCE: Configure grub" 11 | echo "$msg" 12 | sed -i \ 13 | -e '/GRUB_HIDDEN_TIMEOUT=/ s/^#//' \ 14 | /etc/default/grub && \ 15 | /usr/sbin/update-grub && \ 16 | ( echo " DONE" ; etckeeper commit "$msg" ) || echo " FAIL" 17 | -------------------------------------------------------------------------------- /provisioning/bootstrap.d/46-plymouth: -------------------------------------------------------------------------------- 1 | # This doesn't work on recent Debian/Ubuntu 2 | # https://www.virtualbox.org/ticket/14503#comment:1 3 | # https://forums.virtualbox.org/viewtopic.php?f=3&t=69765 4 | return 5 | 6 | if [ "${PACKER_BUILDER_TYPE}" == "amazon-ebs" ]; then return ; fi 7 | 8 | msg="BCE: Configure plymouth" 9 | echo "$msg" 10 | cp -a /tmp/bce /usr/share/plymouth/themes/ && \ 11 | echo "FRAMEBUFFER=y" > /etc/initramfs-tools/conf.d/splash && \ 12 | update-alternatives --install \ 13 | /usr/share/plymouth/themes/default.plymouth default.plymouth \ 14 | /usr/share/plymouth/themes/bce/bce.plymouth 200 && \ 15 | update-alternatives --set default.plymouth \ 16 | /usr/share/plymouth/themes/bce/bce.plymouth && \ 17 | /usr/sbin/update-initramfs -u && \ 18 | ( echo " DONE" ; etckeeper commit "$msg" ) || echo " FAIL" 19 | -------------------------------------------------------------------------------- /provisioning/bootstrap.d/48-ibus-fix: -------------------------------------------------------------------------------- 1 | # https://bugs.launchpad.net/ubuntu/+source/ibus/+bug/1611523 2 | echo "BCE: Fixing ibus-setup bug" 3 | sed -e '/python3/s# # /usr/bin/#' /usr/bin/ibus-setup 4 | echo " DONE" || echo " FAIL" 5 | -------------------------------------------------------------------------------- /provisioning/bootstrap.d/50-user: -------------------------------------------------------------------------------- 1 | echo "BCE: Configure ${BCE_USER} (and other) desktops" 2 | chmod 755 /home/${BCE_USER}/setup_ipython_notebook.sh && \ 3 | echo " DONE" || echo " FAIL" 4 | 5 | # Enable our user to login without a password 6 | addgroup --system nopasswdlogin && \ 7 | adduser ${BCE_USER} nopasswdlogin && \ 8 | ( echo " DONE" ; etckeeper commit "$msg" ) || echo " FAIL" 9 | 10 | msg="BCE: Configure ${BCE_USER} user" 11 | echo "$msg" 12 | 13 | if [ "${PACKER_BUILDER_TYPE}" != "virtualbox-iso" ]; then 14 | return 15 | fi 16 | 17 | # Our user is created in the debian-installer phase 18 | adduser ${BCE_USER} vboxsf 19 | 20 | # Create a convenient place on the desktop for people to mount and access 21 | # their shared directories. This may also be appropriate for VMware. 22 | echo "BCE: Configure shared directory for ${PACKER_BUILDER_TYPE}" 23 | sudo -u ${BCE_USER} mkdir /home/${BCE_USER}/Desktop && \ 24 | sudo -u ${BCE_USER} ln -s /media /home/${BCE_USER}/Desktop/Shared && \ 25 | echo " DONE" || echo " FAIL" 26 | 27 | # Automatically login at boot 28 | msg="BCE: Automatically login ${BCE_USER} at boot" 29 | ( cat < /etc/lightdm/lightdm.conf 30 | [SeatDefaults] 31 | autologin-user=${BCE_USER} 32 | autologin-user-timeout=0 33 | EOF 34 | ) && \ 35 | ( echo " DONE" ; etckeeper commit "$msg" ) || echo " FAIL" 36 | -------------------------------------------------------------------------------- /provisioning/bootstrap.d/52-ebs-nfs: -------------------------------------------------------------------------------- 1 | if [ "${PACKER_BUILDER_TYPE}" != "amazon-ebs" ]; then 2 | echo " SKIP" 3 | return 4 | fi 5 | 6 | msg="BCE: Symlinking /etc/init.d/nfs to /etc/init.d/nfs-kernel-server..." 7 | echo $msg 8 | $APT_GET install nfs-kernel-server && \ 9 | ln -s /etc/init.d/nfs-kernel-server /etc/init.d/nfs && \ 10 | ln -s /lib/init/upstart-job /etc/init.d/portmap && \ 11 | echo " DONE" || echo " FAIL" 12 | -------------------------------------------------------------------------------- /provisioning/bootstrap.d/55-desktop-help: -------------------------------------------------------------------------------- 1 | DOC_SCRIPT="/usr/local/bin/update-bce-docs" 2 | DOC_CACHE_DIR="/var/cache/bce.berkeley.edu" 3 | 4 | echo "BCE: Creating BCE desktop help icon..." 5 | DESKTOP_FILE=/home/${BCE_USER}/Desktop/bce-help.desktop 6 | # /home/${BCE_USER}/Desktop may not exist if not on VBox 7 | if [ ! -e /home/${BCE_USER}/Desktop/ ]; then 8 | mkdir /home/${BCE_USER}/Desktop 9 | chown -R ${BCE_USER}:${BCE_USER} /home/${BCE_USER}/Desktop 10 | fi 11 | ( sudo -u ${BCE_USER} cat < ${DESKTOP_FILE} 12 | [Desktop Entry] 13 | Name=Help with BCE 14 | GenericName=Help with BCE 15 | Comment=Off-line BCE documentation 16 | Exec=x-www-browser ${DOC_CACHE_DIR}/help.html 17 | Terminal=false 18 | Type=Application 19 | StartupNotify=true 20 | Icon=gnome-help 21 | Categories=X-XFCE;X-Xfce-Toplevel; 22 | NoDisplay=false 23 | Path=${DOC_CACHE_DIR} 24 | EOF 25 | ) && \ 26 | chmod +x ${DESKTOP_FILE} && \ 27 | echo " DONE" || echo " FAIL" 28 | 29 | msg="BCE: Creating BCE desktop help icon..." 30 | echo $msg 31 | ( cat < /etc/cron.d/update-bce-docs 32 | # Retrieve and cache a valid copy of BCE documentation for off-line access. 33 | 34 | @reboot root ${DOC_SCRIPT} 35 | EOF 36 | ) && \ 37 | ( echo " DONE" ; etckeeper commit "$msg" ) || echo " FAIL" 38 | 39 | echo "BCE: Installing update-bce-docs..." 40 | mv /tmp/update-bce-docs ${DOC_SCRIPT} && \ 41 | chmod +x ${DOC_SCRIPT} && \ 42 | echo "BCE: Running update-bce-docs..." 43 | ${DOC_SCRIPT} 44 | 45 | case $? in 46 | # wget returns 8 even if it is successful on "nothing to do". 47 | 0|8) echo " DONE" ;; 48 | *) echo " FAIL" ;; 49 | esac 50 | -------------------------------------------------------------------------------- /provisioning/bootstrap.d/58-alsa: -------------------------------------------------------------------------------- 1 | if [ "${PACKER_BUILDER_TYPE}" == "virtualbox-iso" ]; then 2 | for c in Master "Master Mono" PCM ; do 3 | echo "BCE: Getting ALSA mixer volumes '$c'..." && \ 4 | amixer get $c && \ 5 | echo "BCE: Setting ALSA mixer volumes '$c'..." && \ 6 | ( amixer set "$c" unmute; amixer set "$c" 100% ) > /dev/null 7 | echo "BCE: Getting ALSA mixer volumes '$c'..." && \ 8 | amixer get $c 9 | done && \ 10 | echo " DONE" || echo " FAIL" 11 | fi 12 | -------------------------------------------------------------------------------- /provisioning/bootstrap.d/60-globus: -------------------------------------------------------------------------------- 1 | # 2 | echo "BCE: Downloading globusonline..." 3 | GLOBUS_FILE=globusconnectpersonal-latest.tgz 4 | curl -L -o /tmp/${GLOBUS_FILE} \ 5 | https://s3.amazonaws.com/connect.globusonline.org/linux/stable/${GLOBUS_FILE} && \ 6 | echo "BCE: Extracting globusonline..." 7 | tar xz -C /opt -f /tmp/${GLOBUS_FILE} && \ 8 | DIST_NAME=$(tar tzf /tmp/${GLOBUS_FILE} | head -n 1) && \ 9 | ( cd /opt ; ln -s ${DIST_NAME} globusconnectpersonal ) && \ 10 | ( cd /usr/local/bin ; ln -s /opt/globusconnectpersonal/globusconnect ) && \ 11 | echo " DONE" || echo " FAIL" 12 | 13 | echo "BCE: Creating Globus Connect launcher in panel menu..." 14 | install -d -o ${BCE_USER} -g ${BCE_USER} ${DESKTOP_DIR} && \ 15 | ( 16 | sudo -H -u ${BCE_USER} cat < ${DESKTOP_DIR}/globusconnect.desktop 17 | [Desktop Entry] 18 | Name=Globus Connect 19 | Comment=Globus Connect Personal 20 | Exec=/usr/local/bin/globusconnect 21 | Icon=/opt/globusconnectpersonal/gonew.gif 22 | Terminal=false 23 | Type=Application 24 | Categories=Network;Internet; 25 | StartupNotify=true 26 | NoDisplay=false 27 | EOF 28 | ) && \ 29 | echo " DONE" || echo " FAIL" 30 | -------------------------------------------------------------------------------- /provisioning/bootstrap.d/60-google-chrome: -------------------------------------------------------------------------------- 1 | # Google Chrome 2 | msg="BCE: Installing google chrome..." 3 | echo "$msg" 4 | echo "deb http://dl.google.com/linux/chrome/deb/ stable main" > \ 5 | /etc/apt/sources.list.d/google-chrome.list && \ 6 | curl -L https://dl-ssl.google.com/linux/linux_signing_key.pub | \ 7 | apt-key add - && \ 8 | $APT_GET update > /dev/null && \ 9 | $APT_GET install google-chrome-stable && \ 10 | echo " DONE" || echo " FAIL" 11 | -------------------------------------------------------------------------------- /provisioning/bootstrap.d/70-r: -------------------------------------------------------------------------------- 1 | R_REPO="https://mran.revolutionanalytics.com/snapshot/2016-06-22" 2 | R_PKGS="/tmp/packages/R-packages.txt" 3 | R_MPI_PKGS="/tmp/packages/R-mpi-packages.txt" 4 | 5 | #U_CODE="utopic" 6 | U_CODE=$(lsb_release -c -s) 7 | 8 | msg="BCE: Configure apt repository for R packages." 9 | echo "$msg" 10 | echo "deb ${R_REPO}/bin/linux/ubuntu ${U_CODE}/" >> \ 11 | /etc/apt/sources.list.d/mran.list && \ 12 | gpg --keyserver keyserver.ubuntu.com --recv-key E084DAB9 && \ 13 | gpg -a --export E084DAB9 | sudo apt-key add - && \ 14 | echo -n | openssl s_client -connect mran.revolutionanalytics.com:443 | \ 15 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | \ 16 | tee '/usr/local/share/ca-certificates/mran.revolutionanalytics.com.crt' && \ 17 | update-ca-certificates && \ 18 | ( echo " DONE" ; etckeeper commit "$msg" ) || echo " FAIL" 19 | 20 | msg="BCE: Install R." 21 | echo "$msg" 22 | $APT_GET update > /dev/null && \ 23 | $APT_GET install r-base r-recommended && \ 24 | echo " DONE" || echo " FAIL" 25 | 26 | msg="BCE: Define our R repository." 27 | echo "$msg" 28 | 29 | # Use HTTPS for RProfile to prevent an error message in RStudio. 30 | R_REPO_HTTPS=${R_REPO//http:/https:} 31 | 32 | echo "options(repos = list(CRAN = '${R_REPO_HTTPS}'))" >> /etc/R/Rprofile.site && \ 33 | ( echo " DONE" ; etckeeper commit "$msg" ) || echo " FAIL" 34 | 35 | msg="BCE: Install R packages." 36 | echo "$msg" 37 | Rscript -e \ 38 | "install.packages(scan('${R_PKGS}', what='char'), repos='${R_REPO}')" && \ 39 | echo " DONE" || echo " FAIL" 40 | 41 | #if [ "${PACKER_BUILDER_NAME}" == "amazon-cfn" ]; then # is PACKER_BUILDER_NAME not being set - my experiment suggested not - Chris 5/9/16 42 | if [ "${PACKER_BUILDER_TYPE}" == "amazon-ebs" ]; then 43 | msg="BCE: Install R MPI-related packages." 44 | echo "$msg" 45 | Rscript -e \ 46 | "install.packages(scan('${R_MPI_PKGS}', what='char'), repos='${R_REPO}')" && \ 47 | echo " DONE" || echo " FAIL" 48 | fi 49 | 50 | 51 | echo "BCE: Add R to Development menu." 52 | sed -i \ 53 | -e '/^Categories=/s/Graphics;//' \ 54 | -e '/^Categories=/s/=/=Development;/' \ 55 | /usr/share/applications/R.desktop && \ 56 | echo " DONE" || echo " FAIL" 57 | -------------------------------------------------------------------------------- /provisioning/bootstrap.d/75-rstudio: -------------------------------------------------------------------------------- 1 | echo "BCE: Installing RStudio and RStudio Server..." 2 | RS_V=0.99.902 3 | 4 | for URL in \ 5 | "http://download1.rstudio.org/rstudio-${RS_V}-amd64.deb" \ 6 | "http://download2.rstudio.org/rstudio-server-${RS_V}-amd64.deb" ; do 7 | DEB=$(basename ${URL}) && \ 8 | curl -L -O ${URL} && \ 9 | gdebi -n ${DEB} && \ 10 | rm -f ${DEB} && \ 11 | ( echo " DONE" ; etckeeper commit "$msg" ) || echo " FAIL" 12 | done 13 | 14 | echo "BCE: Creating rstudio-server client launcher in panel menu..." 15 | ( 16 | sudo -H -u ${BCE_USER} cat < ${DESKTOP_DIR}/rstudio-server.desktop 17 | [Desktop Entry] 18 | Name=RStudio Server 19 | Comment=RStudio Server 20 | Exec=x-www-browser http://localhost:8787 21 | Icon=rstudio 22 | Terminal=false 23 | Type=Application 24 | Categories=Development; 25 | StartupNotify=true 26 | NoDisplay=false 27 | EOF 28 | ) && \ 29 | echo " DONE" || echo " FAIL" 30 | 31 | echo "BCE: Appending rstudio-server to PATH..." 32 | ( 33 | echo 34 | echo '# BCE: Added by bootstrap' 35 | echo 'export PATH=${PATH}:/usr/lib/rstudio-server/bin' 36 | ) | tee -a /home/${BCE_USER}/.bashrc /home/${BCE_USER}/.profile 37 | -------------------------------------------------------------------------------- /provisioning/bootstrap.d/80-anaconda: -------------------------------------------------------------------------------- 1 | # We run this bootstrap script as $BCE_USER. Otherwise if we were to run 2 | # separate conda invocations within separate sudos, the "activate" will only 3 | # exist as long as sudo's subshell. 4 | 5 | sudo -i -u ${BCE_USER} /bin/bash /tmp/bootstrap.d/_80-anaconda-user 6 | -------------------------------------------------------------------------------- /provisioning/bootstrap.d/81-python-launchers: -------------------------------------------------------------------------------- 1 | MINICONDA="/home/${BCE_USER}/miniconda3" 2 | 3 | IPYTHON_ICO="/usr/local/share/pixmaps/ipython.ico" 4 | 5 | echo "BCE: Downloading IPython icon..." 6 | mkdir /usr/local/share/pixmaps/ 7 | curl -o ${IPYTHON_ICO} \ 8 | https://raw.githubusercontent.com/ipython/ipython-website/master/_static/favicon.ico 9 | 10 | echo "BCE: Creating python launchers in panel menu..." 11 | ( 12 | sudo -H -u ${BCE_USER} cat < ${DESKTOP_DIR}/ipython.desktop 13 | [Desktop Entry] 14 | Name=IPython 2.7 15 | Comment=IPython 2.7 Interpreter 16 | Exec=${MINICONDA}/envs/py27/bin/ipython 17 | Icon=${IPYTHON_ICO} 18 | Terminal=true 19 | Type=Application 20 | Categories=Development; 21 | StartupNotify=true 22 | NoDisplay=false 23 | EOF 24 | ) && \ 25 | ( 26 | sudo -H -u ${BCE_USER} cat < ${DESKTOP_DIR}/ipython3.5.desktop 27 | [Desktop Entry] 28 | Name=IPython 3.5 29 | Comment=IPython 3.5 Interpreter 30 | Exec=${MINICONDA}/bin/ipython 31 | Icon=${IPYTHON_ICO} 32 | Terminal=true 33 | Type=Application 34 | Categories=Development; 35 | StartupNotify=true 36 | NoDisplay=false 37 | EOF 38 | ) && \ 39 | ( 40 | sudo -H -u ${BCE_USER} cat < ${DESKTOP_DIR}/ipython-notebook.desktop 41 | [Desktop Entry] 42 | Name=Jupyter Notebook 43 | Comment=Jupyter Notebook 44 | Exec=${MINICONDA}/bin/jupyter notebook 45 | Icon=${MINICONDA}/lib/python3.5/site-packages/notebook/static/base/images/favicon.ico 46 | Terminal=false 47 | Type=Application 48 | Categories=Development; 49 | StartupNotify=true 50 | NoDisplay=false 51 | EOF 52 | ) && \ 53 | ( 54 | sudo -H -u ${BCE_USER} cat < ${DESKTOP_DIR}/python2.7.desktop 55 | [Desktop Entry] 56 | Name=Python 2.7 57 | Comment=Python 2.7 58 | Exec=${MINICONDA}/bin/python 59 | Exec=${MINICONDA}/envs/py27/bin/python 60 | Icon=/usr/share/pixmaps/python2.7.xpm 61 | Terminal=true 62 | Type=Application 63 | Categories=Development; 64 | StartupNotify=true 65 | NoDisplay=false 66 | EOF 67 | ) && \ 68 | ( 69 | sudo -H -u ${BCE_USER} cat < ${DESKTOP_DIR}/python3.5.desktop 70 | [Desktop Entry] 71 | Name=Python 3.5 72 | Comment=Python 3.5 73 | Exec=${MINICONDA}/bin/python 74 | Icon=/usr/share/pixmaps/python3.5.xpm 75 | Terminal=true 76 | Type=Application 77 | Categories=Development; 78 | StartupNotify=true 79 | NoDisplay=false 80 | EOF 81 | ) && \ 82 | echo " DONE" || echo " FAIL" 83 | -------------------------------------------------------------------------------- /provisioning/bootstrap.d/82-ipython-r-kernel: -------------------------------------------------------------------------------- 1 | # https://github.com/IRkernel/IRkernel 2 | # 3 | # Depends on libzmq3-dev 4 | 5 | msg="BCE: Install IR packages." 6 | echo "$msg" 7 | Rscript -e \ 8 | "install.packages(c('rzmq', 'IRkernel', 'IRdisplay'), repos = c('http://irkernel.github.io/', getOption('repos')), type='source')" && \ 9 | echo " DONE" || echo " FAIL" 10 | 11 | msg="BCE: Install IR kernel spec." 12 | echo "$msg" 13 | sudo -H -u ${BCE_USER} env PATH=/home/${BCE_USER}/miniconda3/bin:${PATH} \ 14 | Rscript -e "IRkernel::installspec()" && \ 15 | echo " DONE" || echo " FAIL" 16 | -------------------------------------------------------------------------------- /provisioning/bootstrap.d/85-pycharm: -------------------------------------------------------------------------------- 1 | # Pycharm 2 | echo "BCE: Downloading PyCharm to /opt" 3 | PYCHARM_DIST=pycharm-edu-2.0.4 4 | PYCHARM_URL=http://download.jetbrains.com/python/${PYCHARM_DIST}.tar.gz 5 | curl -L -O ${PYCHARM_URL} 6 | tar -C /opt -xzf ${PYCHARM_DIST}.tar.gz && \ 7 | chown -R ${BCE_USER}:${BCE_USER} /opt/${PYCHARM_DIST} && \ 8 | rm ${PYCHARM_DIST}.tar.gz && \ 9 | ( cd /usr/local/bin && ln -s /opt/${PYCHARM_DIST}/bin/pycharm.sh ) && \ 10 | echo " DONE" || echo " FAIL" 11 | 12 | # This gets overwritten by itself if the user accepts the defaults when 13 | # prompted on first launch. 14 | echo "BCE: Create PyCharm launcher in panel menu..." 15 | ( 16 | cat < /usr/share/applications/jetbrains-pycharm-ce.desktop 17 | [Desktop Entry] 18 | Version=0.1 19 | Type=Application 20 | Name=PyCharm Educational Edition 21 | Icon=/opt/${PYCHARM_DIST}/bin/pycharm.png 22 | Exec="/opt/${PYCHARM_DIST}/bin/pycharm.sh" %f 23 | Comment=PyCharm Installation 24 | Categories=Development;IDE; 25 | Terminal=false 26 | StartupWMClass=jetbrains-pycharm-ce 27 | StartupNotify=true 28 | NoDisplay=false 29 | EOF 30 | ) && \ 31 | echo " DONE" || echo " FAIL" 32 | -------------------------------------------------------------------------------- /provisioning/bootstrap.d/89-docker: -------------------------------------------------------------------------------- 1 | URL="https://get.docker.com/" 2 | URL="https://raw.githubusercontent.com/docker/docker/v1.11.2/hack/install.sh" 3 | 4 | echo "BCE: Install Docker..." 5 | curl -sSL "${URL}" | sh 6 | unset URL 7 | 8 | echo "BCE: Add ${BCE_USER} to docker group... " 9 | /usr/sbin/adduser ${BCE_USER} docker && \ 10 | echo " DONE." || echo " FAIL." 11 | -------------------------------------------------------------------------------- /provisioning/bootstrap.d/90-clean: -------------------------------------------------------------------------------- 1 | echo "BCE: Removing unneeded X11 packages" 2 | $APT_GET --purge remove xscreensaver xscreensaver-data && \ 3 | echo " DONE" || echo " FAIL" 4 | 5 | ( 6 | echo "BCE: Unsetting BCE provisioner as etckeeper user..." 7 | cd /etc 8 | git config --global user.name "BCE" && \ 9 | git config --global user.email "bce@berkeley.edu" && \ 10 | echo " DONE" || echo " FAIL" 11 | ) 12 | 13 | # Clean up the image before we export it 14 | $APT_GET clean 15 | -------------------------------------------------------------------------------- /provisioning/bootstrap.d/99-finish: -------------------------------------------------------------------------------- 1 | END_TIME=$(date '+%s') 2 | 3 | ELAPSED_SECS=$((END_TIME-START_TIME)) 4 | printf "Elapsed time: %s minutes\n" $((ELAPSED_SECS/60)) 5 | -------------------------------------------------------------------------------- /provisioning/bootstrap.d/_65-r-ppas: -------------------------------------------------------------------------------- 1 | # CRAN repo 2 | # There was no 14.04 CRAN archive yet so it is commented out 3 | #apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E084DAB9 && \ 4 | #echo "#deb http://cran.cnr.berkeley.edu/bin/linux/ubuntu trusty/" > \ 5 | # /etc/apt/sources.list.d/cran.list && \ 6 | 7 | 8 | # XXX - we are not currently installing R packages with apt 9 | # # apt-add-repository is included in software-properties-common which is 10 | # # installed in the "Installing build utilities" step. 11 | # msg="BCE: Installing R PPAs..." echo "$msg" 12 | # # Prefer rrutter and c2d4u PPAs 13 | # apt-add-repository -y ppa:marutter/rrutter && \ 14 | # apt-add-repository -y ppa:marutter/c2d4u && \ 15 | # ( echo " DONE" ; etckeeper commit "$msg" ) || echo " FAIL" 16 | -------------------------------------------------------------------------------- /provisioning/bootstrap.d/_80-anaconda-user: -------------------------------------------------------------------------------- 1 | # We run this bootstrap script as $BCE_USER. Otherwise if we were to run 2 | # separate conda invocations within separate sudos, the "activate" will only 3 | # exist as long as sudo's subshell. 4 | 5 | # Main 6 | url="http://repo.continuum.io/miniconda/Miniconda3-4.0.5-Linux-x86_64.sh" 7 | install_script="$(basename ${url})" 8 | 9 | if [ ! -f /tmp/${install_script} ]; then 10 | echo "BCE: Download ${install_script}..." 11 | curl -o /tmp/${install_script} "${url}" && \ 12 | echo " DONE" || echo " FAIL" 13 | fi 14 | 15 | echo "BCE: Install ${install_script}..." 16 | bash /tmp/${install_script} -b && \ 17 | echo " DONE" || echo " FAIL" 18 | 19 | # We default to Anaconda. 20 | echo "BCE: Prepending miniconda3 to PATH..." 21 | ( 22 | echo 23 | echo '# BCE: Added by bootstrap' 24 | echo 'export PATH=${HOME}/miniconda3/bin:${PATH}' 25 | ) | tee -a ${HOME}/.bashrc ${HOME}/.profile 26 | 27 | source ${HOME}/miniconda3/bin/activate ${HOME}/miniconda3 28 | 29 | # These can only be in the root environment 30 | echo "BCE: Installing python3 packages with conda..." 31 | for p in $(cat /tmp/packages/conda-requirements-py35.txt); do 32 | conda install --yes ${p} 33 | done && \ 34 | echo " DONE" || echo " FAIL" 35 | 36 | for p in $(cat /tmp/packages/pip-requirements-py35.txt); do 37 | pip install ${p} 38 | done && \ 39 | echo " DONE" || echo " FAIL" 40 | 41 | echo "BCE: Installing python2 packages with conda..." 42 | conda create --yes -n py27 python=2.7 && \ 43 | source activate py27 44 | 45 | for p in $(cat /tmp/packages/conda-requirements-py27.txt); do 46 | conda install --yes ${p} 47 | done && \ 48 | echo " DONE" || echo " FAIL" 49 | 50 | echo "BCE: Installing python 2.7 packages with conda..." 51 | for p in $(cat /tmp/packages/pip-requirements-py27.txt); do 52 | pip install ${p} 53 | done && \ 54 | echo " DONE" || echo " FAIL" 55 | 56 | # All of these fail 57 | # conda install pp 58 | # conda pipbuild pp 59 | echo "BCE: Installing parallel python for python2..." 60 | PP_VERSION=1.6.5 61 | pip install --allow-external pp --allow-unverified pp pp==${PP_VERSION} && \ 62 | echo " DONE" || echo " FAIL" 63 | 64 | echo "BCE: Update IPython profile to include Python 2.7 kernel..." 65 | ipython kernelspec install-self --user && \ 66 | echo " DONE" || echo " FAIL" 67 | 68 | echo "BCE: Deleting binstar token..." 69 | rm -f "${HOME}/.config/binstar/https%3A%2F%2Fapi.binstar.org.token" && \ 70 | echo " DONE" || echo " FAIL" 71 | 72 | echo "BCE: Remove cached packages and tarballs..." 73 | conda clean --yes --tarballs --packages && \ 74 | echo " DONE" || echo " FAIL" 75 | -------------------------------------------------------------------------------- /provisioning/debconf.selections: -------------------------------------------------------------------------------- 1 | keyboard-configuration keyboard-configuration/layout select English (US) 2 | keyboard-configuration keyboard-configuration/variant select English (US) 3 | d-i console-setup/ask_detect boolean false 4 | d-i console-setup/layoutcode string us 5 | d-i console-setup/modelcode string pc105 6 | debconf debconf/frontend select noninteractive 7 | d-i debian-installer/locale string en_US 8 | kdb-chooser kbd-chooser/method select us 9 | d-i netcfg/get_domain string vm 10 | d-i netcfg/get_hostname string BCE 11 | d-i preseed/url string http://{{ .HTTPIP }}:{{ .HTTPPort }}/ubuntu-15.10/preseed.cfg 12 | 13 | -------------------------------------------------------------------------------- /provisioning/dinosaur.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | 10 | 11 | 12 | 13 | Gnome Symbolic Icon Theme 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /provisioning/dot-config/menus/xfce-applications.menu: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | Xfce 7 | /etc/xdg/xdg-xubuntu/menus/xfce-applications.menu 8 | 9 | xfhelp4.desktop 10 | 11 | /home/ubuntu/.local/share/applications 12 | 13 | Development 14 | 15 | ipython.desktop 16 | ipython-notebook.desktop 17 | python2.7.desktop 18 | python3.4.desktop 19 | 20 | /home/ubuntu/.local/share/applications 21 | 22 | 23 | Settings 24 | 25 | xfce-xfcalendar-settings.desktop 26 | 27 | /home/ubuntu/.local/share/applications 28 | 29 | xfce-settings-manager.desktop 30 | xfce4-accessibility-settings.desktop 31 | xfce-ui-settings.desktop 32 | xfce-workspaces-settings.desktop 33 | xfce-wmtweaks-settings.desktop 34 | xfce4-notifyd-config.desktop 35 | nm-connection-editor.desktop 36 | xfce-mouse-settings.desktop 37 | xfce4-mime-settings.desktop 38 | alacarte.desktop 39 | ibus-setup.desktop 40 | xfce-keyboard-settings.desktop 41 | im-config.desktop 42 | thunar-settings.desktop 43 | xfce-display-settings.desktop 44 | xfce-backdrop-settings.desktop 45 | openjdk-7-policytool.desktop 46 | credentials-preferences.desktop 47 | xfce4-settings-editor.desktop 48 | xfce-session-settings.desktop 49 | system-config-printer.desktop 50 | xfce-wm-settings.desktop 51 | exo-preferred-applications.desktop 52 | panel-preferences.desktop 53 | thunar-volman-settings.desktop 54 | 55 | 56 | 57 | System 58 | 59 | gigolo.desktop 60 | 61 | /home/ubuntu/.local/share/applications 62 | 63 | 64 | Office 65 | /home/ubuntu/.local/share/applications 66 | 67 | evince.desktop 68 | xfcalendar.desktop 69 | globaltime.desktop 70 | 71 | 72 | 73 | Accessories 74 | 75 | globaltime.desktop 76 | 77 | /home/ubuntu/.local/share/applications 78 | 79 | 80 | Graphics 81 | 82 | libreoffice-draw.desktop 83 | 84 | /home/ubuntu/.local/share/applications 85 | 86 | gv.desktop 87 | 88 | 89 | 90 | Education 91 | 92 | libreoffice-math.desktop 93 | 94 | /home/ubuntu/.local/share/applications 95 | 96 | 97 | exo-mail-reader.desktop 98 | xubuntu-website.desktop 99 | exo-web-browser.desktop 100 | xubuntu-contribute.desktop 101 | xfce4-about.desktop 102 | xfce4-session-logout.desktop 103 | 104 | 105 | 106 | Accessories 107 | Development 108 | Education 109 | Games 110 | Graphics 111 | Network 112 | Multimedia 113 | Office 114 | Other 115 | Settings 116 | System 117 | 118 | xfce-settings-manager.desktop 119 | xfhelp4.desktop 120 | xubuntu-website.desktop 121 | xubuntu-contribute.desktop 122 | xfce4-about.desktop 123 | xfce4-session-logout.desktop 124 | exo-mail-reader.desktop 125 | exo-web-browser.desktop 126 | 127 | 128 | 129 | -------------------------------------------------------------------------------- /provisioning/dot-config/xfce4/helpers.rc: -------------------------------------------------------------------------------- 1 | TerminalEmulator=xfce4-terminal 2 | 3 | WebBrowser=google-chrome 4 | -------------------------------------------------------------------------------- /provisioning/dot-config/xfce4/panel/launcher-10/13953449483.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=gedit 3 | GenericName=Text Editor 4 | Comment=Edit text files 5 | Exec=gedit %U 6 | Terminal=false 7 | Type=Application 8 | StartupNotify=true 9 | MimeType=text/plain; 10 | Icon=accessories-text-editor 11 | Categories=GNOME;GTK;Utility;TextEditor; 12 | X-GNOME-DocPath=gedit/gedit.xml 13 | X-GNOME-FullName=Text Editor 14 | X-GNOME-Bugzilla-Bugzilla=GNOME 15 | X-GNOME-Bugzilla-Product=gedit 16 | X-GNOME-Bugzilla-Component=general 17 | X-GNOME-Bugzilla-Version=3.10.4 18 | X-GNOME-Bugzilla-ExtraInfoScript=/usr/share/gedit/gedit-bugreport 19 | Actions=Window;Document; 20 | Keywords=Text;Editor;Plaintext;Write; 21 | X-Ubuntu-Gettext-Domain=gedit 22 | X-XFCE-Source=file:///usr/share/applications/gedit.desktop 23 | 24 | [Desktop Action Window] 25 | Name=Open a New Window 26 | Exec=gedit --new-window 27 | OnlyShowIn=Unity; 28 | 29 | [Desktop Action Document] 30 | Name=Open a New Document 31 | Exec=gedit --new-document 32 | OnlyShowIn=Unity; 33 | -------------------------------------------------------------------------------- /provisioning/dot-config/xfce4/panel/launcher-12/13953450035.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Version=1.0 3 | Name=Google Chrome 4 | GenericName=Web Browser 5 | Comment=Access the Internet 6 | Exec=/usr/bin/google-chrome-stable %U 7 | Terminal=false 8 | Icon=google-chrome 9 | Type=Application 10 | Categories=Network;WebBrowser; 11 | MimeType=text/html;text/xml;application/xhtml_xml;image/webp;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/ftp; 12 | X-Ayatana-Desktop-Shortcuts=NewWindow;NewIncognito 13 | X-XFCE-Source=file:///usr/share/applications/google-chrome.desktop 14 | 15 | [NewWindow Shortcut Group] 16 | Name=New Window 17 | Exec=/usr/bin/google-chrome-stable 18 | TargetEnvironment=Unity 19 | 20 | [NewIncognito Shortcut Group] 21 | Name=New Incognito Window 22 | Exec=/usr/bin/google-chrome-stable --incognito 23 | TargetEnvironment=Unity 24 | -------------------------------------------------------------------------------- /provisioning/dot-config/xfce4/panel/launcher-14/14212014661.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Version=1.0 3 | Type=Application 4 | Exec=xfce4-session-logout 5 | Icon=system-shutdown 6 | StartupNotify=true 7 | Terminal=false 8 | Categories=Utility;X-XFCE;X-Xfce-Toplevel; 9 | OnlyShowIn=XFCE; 10 | Name=Shut Down 11 | -------------------------------------------------------------------------------- /provisioning/dot-config/xfce4/panel/launcher-5/13953448551.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Version=1.0 3 | Type=Application 4 | Exec=exo-open --launch TerminalEmulator 5 | Icon=utilities-terminal 6 | StartupNotify=true 7 | Terminal=false 8 | Categories=Utility;X-XFCE;X-Xfce-Toplevel; 9 | OnlyShowIn=XFCE; 10 | Name=Terminal Emulator 11 | Comment=Use the command line 12 | X-XFCE-Source=file:///usr/share/applications/exo-terminal-emulator.desktop 13 | -------------------------------------------------------------------------------- /provisioning/dot-config/xfce4/panel/launcher-8/13953448682.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Version=1.0 3 | Type=Application 4 | Exec=exo-open --launch FileManager %u 5 | Icon=system-file-manager 6 | StartupNotify=true 7 | Terminal=false 8 | Categories=Utility;X-XFCE;X-Xfce-Toplevel; 9 | OnlyShowIn=XFCE; 10 | X-XFCE-MimeType=x-scheme-handler/file;x-scheme-handler/trash; 11 | Name=File Manager 12 | Comment=Browse the file system 13 | X-XFCE-Source=file:///usr/share/applications/exo-file-manager.desktop 14 | -------------------------------------------------------------------------------- /provisioning/dot-config/xfce4/panel/launcher-9/13953449624.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Version=1.0 3 | Name=Firefox Web Browser 4 | Comment=Browse the World Wide Web 5 | GenericName=Web Browser 6 | Keywords=Internet;WWW;Browser;Web;Explorer 7 | Exec=firefox %u 8 | Terminal=false 9 | X-MultipleArgs=false 10 | Type=Application 11 | Icon=firefox 12 | Categories=GNOME;GTK;Network;WebBrowser; 13 | MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/rss+xml;application/rdf+xml;image/gif;image/jpeg;image/png;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/ftp;x-scheme-handler/chrome;video/webm;application/x-xpinstall; 14 | StartupNotify=true 15 | Actions=NewWindow;NewPrivateWindow; 16 | X-XFCE-Source=file:///usr/share/applications/firefox.desktop 17 | 18 | [Desktop Action NewWindow] 19 | Name=Open a New Window 20 | Exec=firefox -new-window 21 | OnlyShowIn=Unity; 22 | 23 | [Desktop Action NewPrivateWindow] 24 | Name=Open a New Private Window 25 | Exec=firefox -private-window 26 | OnlyShowIn=Unity; 27 | -------------------------------------------------------------------------------- /provisioning/dot-config/xfce4/terminal/terminalrc: -------------------------------------------------------------------------------- 1 | [Configuration] 2 | ColorForeground=#000000000000 3 | ColorBackground=#ffffffffffff 4 | ColorCursor=#000000000000 5 | ColorSelection=#999999999999 6 | ColorSelectionUseDefault=FALSE 7 | ColorPalette=#000000000000;#ffff00000000;#0000ffff0000;#ffffffff0000;#00000000ffff;#ffff0000ffff;#0000ffffffff;#ffffffffffff;#000000000000;#ffff00000000;#0000ffff0000;#ffffffff0000;#00000000ffff;#ffff0000ffff;#0000ffffffff;#ffffffffffff 8 | FontName=DejaVu Sans Mono 9 9 | MiscAlwaysShowTabs=FALSE 10 | MiscBell=FALSE 11 | MiscBordersDefault=TRUE 12 | MiscCursorBlinks=FALSE 13 | MiscCursorShape=TERMINAL_CURSOR_SHAPE_BLOCK 14 | MiscDefaultGeometry=80x24 15 | MiscInheritGeometry=FALSE 16 | MiscMenubarDefault=TRUE 17 | MiscMouseAutohide=FALSE 18 | MiscToolbarDefault=FALSE 19 | MiscConfirmClose=TRUE 20 | MiscCycleTabs=TRUE 21 | MiscTabCloseButtons=TRUE 22 | MiscTabCloseMiddleClick=TRUE 23 | MiscTabPosition=GTK_POS_TOP 24 | MiscHighlightUrls=TRUE 25 | MiscScrollAlternateScreen=TRUE 26 | TabActivityColor=#262656568080 27 | 28 | -------------------------------------------------------------------------------- /provisioning/dot-config/xfce4/xfconf/xfce-perchannel-xml/thunar-volman.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /provisioning/dot-config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /provisioning/dot-config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | -------------------------------------------------------------------------------- /provisioning/dot-config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | -------------------------------------------------------------------------------- /provisioning/dot-config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | -------------------------------------------------------------------------------- /provisioning/dot-config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /provisioning/dot-config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | -------------------------------------------------------------------------------- /provisioning/dot-config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /provisioning/dot-local/share/desktop-directories/xfce-development.directory: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Version=1.0 3 | Type=Directory 4 | Icon=applications-development 5 | Name=Programming 6 | Name[ar]=تطوير 7 | Name[bg]=Разработка 8 | Name[ca]=Desenvolupament 9 | Name[cs]=Vývoj 10 | Name[da]=Udvikling 11 | Name[de]=Entwicklung 12 | Name[el]=Ανάπτυξη 13 | Name[en_AU]=Development 14 | Name[en_GB]=Development 15 | Name[eo]=Programado 16 | Name[es]=Desarrollo 17 | Name[et]=Arendus 18 | Name[eu]=Garapena 19 | Name[fi]=Ohjelmistokehitys 20 | Name[fr]=Développement 21 | Name[gl]=Desenvolvemento 22 | Name[he]=פיתוח 23 | Name[hr]=Razvoj 24 | Name[hu]=Fejlesztés 25 | Name[id]=Pengembangan 26 | Name[is]=Forritun 27 | Name[it]=Sviluppo 28 | Name[ja]=開発 29 | Name[kk]=Өндіру 30 | Name[ko]=개발 31 | Name[lt]=Kūrimas 32 | Name[ms]=Pembangunan 33 | Name[nb]=Utvikling 34 | Name[nl]=Ontwikkeling 35 | Name[nn]=Utvikling 36 | Name[oc]=Desvolopament 37 | Name[pl]=Programowanie 38 | Name[pt]=Desenvolvimento 39 | Name[pt_BR]=Desenvolvimento 40 | Name[ro]=Dezvoltare 41 | Name[ru]=Разработка 42 | Name[sk]=Vývoj 43 | Name[sl]=Razvoj 44 | Name[sq]=Zhvillim 45 | Name[sr]=Развој 46 | Name[sv]=Utveckling 47 | Name[te]=అభివృద్ధి 48 | Name[th]=พัฒนาโปรแกรม 49 | Name[tr]=Geliştirme 50 | Name[ug]=ئىجادىيەت 51 | Name[uk]=Розробка 52 | Name[uz]=Tuzish 53 | Name[uz@Latn]=Tuzish 54 | Name[zh_CN]=开发 55 | Name[zh_HK]=開發 56 | Name[zh_TW]=開發 57 | Comment=Software development tools 58 | Comment[ar]=أدوات تطوير البرامج 59 | Comment[bg]=Инструменти за разработка 60 | Comment[ca]=Eines de desenvolupament de programari 61 | Comment[cs]=Nástroje pro vývoj softwaru 62 | Comment[da]=Udviklingsværktøjer til programmer 63 | Comment[de]=Programme zur Softwareentwicklung 64 | Comment[el]=Εργαλεία ανάπτυξης λογισμικού 65 | Comment[en_AU]=Software development tools 66 | Comment[en_GB]=Software development tools 67 | Comment[eo]=Programadaj iloj 68 | Comment[es]=Herramientas software de desarrollo 69 | Comment[et]=Tarkvaraarenduse tööriistad 70 | Comment[eu]=Software garapen lanabesak 71 | Comment[fi]=Ohjelmointi- ja kehitystyökalut 72 | Comment[fr]=Outils de développement logiciels 73 | Comment[gl]=Ferramentas para o desenvolvemento de software 74 | Comment[he]=כלים לפיתוח תוכנה 75 | Comment[hr]=Alati za razvoj softwera 76 | Comment[hu]=Szoftverfejlesztési eszközök 77 | Comment[id]=Peralatan pengembangan perangkat lunak 78 | Comment[is]=Þróunar og forritunartól 79 | Comment[it]=Strumenti per lo sviluppo di programmi 80 | Comment[ja]=ソフトウェア開発ツールです 81 | Comment[kk]=Бағдарламалық қамтаны өндіру құралдары 82 | Comment[ko]=프로그램 개발 도구 83 | Comment[lt]=Programinės įrangos kūrimo įrankiai 84 | Comment[ms]=Alat pembangunan perisian 85 | Comment[nb]=Utviklingsverktøy 86 | Comment[nl]=Gereedschappen voor programma-ontwikkeling 87 | Comment[nn]=Program for å utvikla programvare 88 | Comment[oc]=Aisinas de desvolopament logicials 89 | Comment[pl]=Zawiera narzędzia programistyczne 90 | Comment[pt]=Ferramentas de desenvolvimento 91 | Comment[pt_BR]=Ferramentas de desenvolvimento de software 92 | Comment[ro]=Unelte pentru dezvoltare de software 93 | Comment[ru]=Средства разработки ПО 94 | Comment[sk]=Nástroje na vývoj softvéru 95 | Comment[sl]=Orodja za razvoj programske opreme 96 | Comment[sq]=Mjete për zhvillim programesh 97 | Comment[sr]=Алати за развој софтвера 98 | Comment[sv]=Verktyg för programutveckling 99 | Comment[te]=సాఫ్ట్‍వేర్ అభివృద్ధి సాధనాలు 100 | Comment[th]=เครื่องมือพัฒนาโปรแกรม 101 | Comment[tr]=Yazılım geliştirme araçları 102 | Comment[ug]=يۇمشاق دېتال ئىجادىيەت قوراللىرى 103 | Comment[uk]=Утиліти для розробки програмного забезпечення 104 | Comment[uz]=Dasturlar tuzish vositalari 105 | Comment[uz@Latn]=Dasturlar tuzish vositalari 106 | Comment[zh_CN]=软件开发工具 107 | Comment[zh_HK]=軟件開發工具 108 | Comment[zh_TW]=軟體開發工具 109 | -------------------------------------------------------------------------------- /provisioning/guest-scripts/setup_ipython_notebook.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/bash 2 | 3 | # Make it easy to set up password / encryption for IPython notebook 4 | 5 | echo " 6 | This script will update your default ipython notebook profile. 7 | It will be configured to use the SSL certificate it creates in the 8 | current directory. 9 | 10 | Please type a password to use for the notebook server:" 11 | sha_str=$(python3 -c \ 12 | 'from IPython.lib import passwd; print(passwd(input()))' ) 13 | # Just for the vertical space 14 | echo 15 | 16 | # Create the ipython profile_default 17 | ipython profile create 18 | 19 | # There's probably a slightly better way to get this filename 20 | cfile=~/.ipython/profile_default/ipython_notebook_config.py 21 | cat >> $cfile < = pulls in** 2 | # 3 | # - boilerpipe < default-jre default-jdk 4 | # - boilerpipe > JPype1 charade 5 | # - rpy2 < liblzma-dev 6 | # - pyyaml < libyaml-dev 7 | # - pandas > dateutil pytz numpy 8 | # - ipython > tornado pyparsing nose backports.ssl-match-hostname 9 | # - sphinx > Pygments docutils Jinja2 markupsafe 10 | # - scrapy > Twisted w3lib queuelib cssselect 11 | # - scrapy < libxslt1-dev libssl-dev 12 | # - flask > Werkzeug itsdangerous 13 | # - ipythonblocks < ez_setup 14 | # - seaborn < patsy 15 | # - seaborn > husl moss statsmodels 16 | # - ipython notebook < pyzmq libzmq3-dev 17 | 18 | # Note that for a number of packages below, we don't specify versions. These 19 | # are unlikely to be used in core examples, and generally the benefit of 20 | # having more recent code is high 21 | 22 | JPype1==0.5.7 23 | husl==4.0.1 24 | werkzeug==0.9.6 25 | cssselect==0.9.1 26 | queuelib==1.2.2 27 | six==1.8.0 28 | w3lib==1.10.0 29 | twisted==14.0.2 30 | markupsafe==0.23 31 | docutils==0.12 32 | pygments==2.0.1 33 | backports.ssl-match-hostname==3.4.0.2 34 | nose==1.3.4 35 | pyparsing==2.0.3 36 | tornado==4.0.2 37 | charade==1.0.3 38 | pytz==2014.10 39 | numpy==1.9.1 40 | scipy==0.14.0 41 | ipython[notebook]==2.3.1 42 | apiclient==1.0.2 43 | # BeautifulSoup does not install cleanly via pip and currently is not 44 | # requested by any BCE leader. 45 | # BeautifulSoup==3.2.1 46 | boilerpipe==1.2.0.0 47 | cluster==1.2.2 48 | Cython==0.21.1 49 | envoy==0.0.3 50 | ez-setup==0.9 51 | facebook==0.0 52 | feedparser==5.1.3 53 | flask==0.10.1 54 | geopy==1.6.1 55 | google-api-python-client==1.3.1 56 | ipythonblocks==1.6.1 57 | jinja2==2.7.3 58 | lxml==3.4.1 59 | markdown==2.5.2 60 | # A < 2.0 version of pyparsing is necessary for pydot to work in py2.7 61 | # But matplotlib requires 2+. So, we use the (not broken) apt package 62 | # for pydot BEFORE installing this: 63 | networkx==1.9.1 64 | nltk==3.0.0 65 | oauth==1.0.1 66 | oauth2==1.5.211 67 | pandas==0.15.2 68 | patsy==0.3.0 69 | # Pelican doesn't keep old versions on PyPI! 70 | pelican==3.5.0 71 | plotly==1.5.0 72 | prettytable==0.7.2 73 | PyGithub==1.25.2 74 | pymongo==2.7.2 75 | pytest==2.6.4 76 | PyYAML==3.11 77 | pyzmq==14.4.1 78 | readline==6.2.4.1 79 | # Requests 2.4.3 breaks Ubuntu's python-pip (2.3.0 was OK) 80 | # Another note, apt's python-pip installs requests 2.2.1 81 | # Going forwards, however, it's hard to prevent installation of newer versions 82 | # of requests. So, we'll install pip using the script: 83 | # https://bootstrap.pypa.io/get-pip.py 84 | requests==2.5.1 85 | rpy2==2.5.4 86 | scikit-learn==0.15.2 87 | scrapy==0.24.4 88 | seaborn==0.5.1 89 | sklearn-pandas==0.0.9 90 | sphinx==1.2.3 91 | twitter==1.15.0 92 | twitter-text-py==2.0.2 93 | virtualenv==12.0.4 94 | prettyplotlib==0.1.7 95 | Pillow==2.6.1 96 | matplotlib==1.4.2 97 | statsmodels==0.6.1 98 | -------------------------------------------------------------------------------- /provisioning/packages/python3-requirements-full.txt: -------------------------------------------------------------------------------- 1 | certifi==14.5.14 2 | Cython==0.21.1 3 | datascience==0.5.20 4 | decorator==3.4.0 5 | docutils==0.12 6 | ipython[notebook]==2.3.1 7 | Jinja2==2.7.3 8 | lxml==3.4.1 9 | Markdown==2.5.2 10 | MarkupSafe==0.23 11 | matplotlib==1.4.2 12 | networkx==1.9.1 13 | nltk==3.0.0 14 | nose==1.3.4 15 | numpy==1.9.1 16 | pandas==0.15.2 17 | Pillow==2.6.1 18 | pip==6.0.6 19 | py==1.4.26 20 | Pygments==2.0.1 21 | pyparsing==2.0.3 22 | pytest==2.6.4 23 | python_dateutil==2.4.0 24 | pytz==2014.10 25 | PyYAML==3.11 26 | pyzmq==14.4.1 27 | readline==6.2.4.1 28 | requests==2.5.1 29 | rpy2==2.5.4 30 | scikit_learn==0.15.2 31 | scipy==0.14.0 32 | seaborn==0.5.1 33 | setuptools==11.3.1 34 | six==1.9.0 35 | sklearn_pandas==0.0.9 36 | Sphinx==1.2.3 37 | tornado==4.0.2 38 | -------------------------------------------------------------------------------- /provisioning/packages/python3-requirements.txt: -------------------------------------------------------------------------------- 1 | Cython==0.21.1 2 | datascience==0.5.20 3 | ipython[notebook]==2.3.1 4 | jinja2==2.7.3 5 | lxml==3.4.1 6 | markdown==2.5.2 7 | matplotlib==1.4.2 8 | pyparsing==2.0.3 9 | networkx==1.9.1 10 | nltk==3.0.0 11 | nose==1.3.4 12 | numpy==1.9.1 13 | pandas==0.15.2 14 | pytest==2.6.4 15 | PyYAML==3.11 16 | pyzmq==14.4.1 17 | readline==6.2.4.1 18 | requests==2.5.1 19 | rpy2==2.5.4 20 | scikit-learn==0.15.2 21 | scipy==0.14.0 22 | seaborn==0.5.1 23 | sklearn-pandas==0.0.9 24 | sphinx==1.2.3 25 | tornado==4.0.2 26 | Pillow==2.6.1 27 | -------------------------------------------------------------------------------- /provisioning/packages/ubuntu-packages-norecommends.txt: -------------------------------------------------------------------------------- 1 | texlive-latex-extra 2 | texlive-pictures 3 | # This will also avoid installing beamer, xcolor, and prosper, OK? 4 | texlive-latex-recommended 5 | 6 | # This is auto-installed via texlive-latex-recommended 7 | # Uncomment here if we revert to installing recommends from that package 8 | # texlive-pstricks 9 | 10 | -------------------------------------------------------------------------------- /provisioning/packages/ubuntu-packages.txt: -------------------------------------------------------------------------------- 1 | # Mostly for networkx 2 | graphviz 3 | 4 | # Core java 5 | default-jre 6 | default-jdk 7 | 8 | # Utilities / libs 9 | curl 10 | sqlite3 11 | libcurl4-gnutls-dev 12 | 13 | # paciorek 14 | libopenblas-base 15 | libopenblas-dev 16 | 17 | # davclark, https://github.com/ucberkeley/bce/issues/16 18 | # culich, ph290 19 | git-annex 20 | 21 | # For more complete Pillow (the new PIL) support 22 | libtiff5-dev 23 | libwebp-dev 24 | 25 | # For rzmq, IRkernel 26 | libzmq3-dev 27 | 28 | libyaml-dev 29 | libssl-dev 30 | libxslt1-dev 31 | liblzma-dev 32 | 33 | # Document processing stuff 34 | fonts-mathjax 35 | texlive 36 | texlive-latex-base 37 | # This is half a gigabyte 38 | # texlive-fonts-extra 39 | texlive-fonts-recommended 40 | # This is to make nbconvert to HTML work fully 41 | nodejs 42 | 43 | # Viewing and editing the web, documents 44 | firefox 45 | libreoffice 46 | xpdf 47 | evince 48 | gv 49 | 50 | # General purpose, lightweight text editor. Some of these plugins are probably 51 | # not useful 52 | gedit 53 | gedit-plugins 54 | gedit-developer-plugins 55 | gedit-source-code-browser-plugin 56 | vim 57 | 58 | # Globus 59 | tk tcllib 60 | 61 | # Minimal XFCE4 environment 62 | thunar-vcs-plugin 63 | thunar-archive-plugin 64 | thunar-media-tags-plugin 65 | lightdm 66 | xfce4 67 | xfce4-terminal 68 | xubuntu-default-settings 69 | 70 | # The default theme has hot-pink highlights?! 71 | murrine-themes 72 | 73 | # Linguistics 74 | alsa-utils 75 | 76 | # System 77 | # gdebi makes installing .deb files easier 78 | gdebi-core 79 | 80 | # For vpn connections 81 | network-manager-openconnect 82 | network-manager-openconnect-gnome 83 | -------------------------------------------------------------------------------- /provisioning/plymouth-theme/.gitignore: -------------------------------------------------------------------------------- 1 | *.png 2 | *.ogv 3 | 4 | -------------------------------------------------------------------------------- /provisioning/plymouth-theme/README: -------------------------------------------------------------------------------- 1 | This theme is based on Space-Sunrise made by Andre "Osku" Schmidt: 2 | http://gnome-look.org/content/show.php?content=129678 3 | https://launchpad.net/~inameiname 4 | 5 | I modified the colors in some of the PNGs and created replacements for 6 | distro artwork. 7 | 8 | Ryan Lovett 9 | -------------------------------------------------------------------------------- /provisioning/plymouth-theme/bce.plymouth: -------------------------------------------------------------------------------- 1 | [Plymouth Theme] 2 | Name=BCE 3 | Description=Berkeley Common Environment 4 | ModuleName=script 5 | 6 | [script] 7 | ImageDir=/lib/plymouth/themes/bce 8 | ScriptFile=/lib/plymouth/themes/bce/bce.script 9 | 10 | -------------------------------------------------------------------------------- /provisioning/plymouth-theme/bce.script: -------------------------------------------------------------------------------- 1 | win_w = Window.GetWidth(); 2 | win_h = Window.GetHeight(); 3 | half_win_w = win_w / 2; 4 | half_win_h = win_h / 2; 5 | 6 | offset = 0; //win_h / -4; 7 | 8 | horizonGlow.image = Image ("space_glow.png"); 9 | size_ratio = horizonGlow.image.GetWidth() / win_w; // used later! todo: this is ugly 10 | new_height = horizonGlow.image.GetHeight() / size_ratio; 11 | nh_half = new_height / 2; 12 | horizonGlow.image = horizonGlow.image.Scale (win_w, new_height); 13 | horizonGlow.sprite = Sprite (horizonGlow.image); 14 | horizonGlow.sprite.SetY (half_win_h - nh_half + offset); 15 | horizonGlow.sprite.SetOpacity (0); 16 | horizonGlow.sprite.SetZ (-10); 17 | 18 | sourceImage = Image ("planet_black.png"); 19 | new_height = sourceImage.GetHeight() / size_ratio; 20 | scaledImage = sourceImage.Scale (win_w, new_height); 21 | planetBlack.sprite = Sprite (scaledImage); 22 | planetBlack.sprite.SetY (half_win_h + offset); 23 | planetBlack.sprite.SetOpacity (1); 24 | planetBlack.sprite.SetZ (-9); 25 | 26 | sourceImage = Image ("planet_glow.png"); 27 | new_height = sourceImage.GetHeight() / size_ratio; 28 | scaledImage = sourceImage.Scale (win_w, new_height); 29 | planetColor.sprite = Sprite (scaledImage); 30 | planetColor.sprite.SetY ((half_win_h + offset) - 2); 31 | planetColor.sprite.SetOpacity (0); 32 | planetColor.sprite.SetZ (2); 33 | 34 | sunGlow.image = Image ("sun_glow.png"); 35 | sunGlow.width = sunGlow.image.GetWidth() / size_ratio; 36 | sunGlow.height = sunGlow.image.GetHeight() / size_ratio; 37 | sunGlow.image = sunGlow.image.Scale (sunGlow.width, sunGlow.height); 38 | sunGlow.sprite = Sprite (sunGlow.image); 39 | sunGlow.sprite.SetX (half_win_w - (sunGlow.height / 2)); 40 | sunGlow.sprite.SetY (half_win_h + offset); 41 | sunGlow.sprite.SetOpacity (0); 42 | sunGlow.sprite.SetZ (-20); 43 | 44 | topLogo.image = Image ("bce_name.png"); 45 | topLogo.width = topLogo.image.GetWidth() / size_ratio; 46 | topLogo.height = topLogo.image.GetHeight() / size_ratio; 47 | topLogo.image = topLogo.image.Scale (topLogo.width, topLogo.height); 48 | topLogo.x = half_win_w - (topLogo.width / 2); 49 | topLogo.y = 3 * topLogo.height; 50 | topLogo.sprite = Sprite (topLogo.image); 51 | topLogo.sprite.SetX (topLogo.x); 52 | topLogo.sprite.SetY (topLogo.y); 53 | topLogo.sprite.SetOpacity (0); 54 | topLogo.sprite.SetY (20); 55 | 56 | bottomLogo.image = Image ("ucb_logo.png"); 57 | bottomLogo.width = bottomLogo.image.GetWidth() / size_ratio; 58 | bottomLogo.height = bottomLogo.image.GetHeight() / size_ratio; 59 | bottomLogo.image = bottomLogo.image.Scale (bottomLogo.width, bottomLogo.height); 60 | bottomLogo.x = half_win_w - (bottomLogo.width / 2); 61 | bottomLogo.y = win_h - (bottomLogo.height * 2); 62 | bottomLogo.sprite = Sprite (bottomLogo.image); 63 | bottomLogo.sprite.SetX (bottomLogo.x); 64 | bottomLogo.sprite.SetY (bottomLogo.y); 65 | bottomLogo.sprite.SetOpacity (0); 66 | 67 | planetColor.start = 0.1; 68 | horizonGlow.start = 0.1; 69 | bottomLogo.start = 0.2; 70 | topLogo.start = 0.1; 71 | sunGlow.start = 0.1; 72 | 73 | planetColor.end = 0.6; 74 | horizonGlow.end = 0.6; 75 | bottomLogo.end = 0.6; 76 | topLogo.end = 0.6; 77 | sunGlow.end = 0.4; 78 | 79 | horizonGlow.start = 0; 80 | planetColor.start = 0.2; 81 | sunGlow.start = 0.21; 82 | topLogo.start = 0.3; 83 | bottomLogo.start = 0.8; 84 | 85 | sunGlow.end = 0.4; 86 | planetColor.end = 0.6; 87 | horizonGlow.end = 0.6; 88 | bottomLogo.end = 1; 89 | topLogo.end = 1; 90 | 91 | sunGlow.animStart = 0.2; 92 | sunGlow.animEnd = 0.8; 93 | sunGlow.startPos = (half_win_h - (sunGlow.height / 4)) + offset; 94 | sunGlow.endPos = (half_win_h / 2) - (sunGlow.height / 4); 95 | 96 | fun remap (val, imin, imax, omin, omax) { 97 | return (((val - imin) / (imax - imin)) * (omax - omin)) + omin; 98 | } 99 | 100 | fun progress_callback (d, p) { 101 | 102 | p = (p * 100.0) / 5.0; 103 | 104 | //topLogo.sprite.SetOpacity (p); 105 | 106 | if (p >= sunGlow.start && p <= sunGlow.end) { 107 | a = remap (p, sunGlow.start, sunGlow.end, 0, 1); 108 | sunGlow.sprite.SetOpacity (a); 109 | } 110 | if (p >= sunGlow.animStart && p <= sunGlow.animEnd) { 111 | a = remap (p, sunGlow.animStart, sunGlow.animEnd, 0, 1); 112 | b = sunGlow.startPos - ((sunGlow.startPos - sunGlow.endPos) * a); 113 | sunGlow.sprite.SetY (b); 114 | } 115 | if (p >= horizonGlow.start && p <= horizonGlow.end) { 116 | a = remap (p, horizonGlow.start, horizonGlow.end, 0, 1); 117 | horizonGlow.sprite.SetOpacity (a); 118 | } 119 | if (p >= planetColor.start && p <= planetColor.end) { 120 | a = remap (p, planetColor.start, planetColor.end, 0, 1); 121 | planetColor.sprite.SetOpacity (a); 122 | } 123 | /* Berkeley logo */ /* GOOD */ 124 | if (p >= bottomLogo.start && p <= bottomLogo.end) { 125 | a = remap (p, bottomLogo.start, bottomLogo.end, 0, 1); 126 | bottomLogo.sprite.SetOpacity (a); 127 | } 128 | if (p >= topLogo.start && p <= topLogo.end) { 129 | a = remap (p, topLogo.start, topLogo.end, 0, 1); 130 | topLogo.sprite.SetOpacity (a); 131 | } 132 | } 133 | Plymouth.SetBootProgressFunction(progress_callback); 134 | -------------------------------------------------------------------------------- /provisioning/plymouth-theme/bce_name.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucberkeley/bce/b1d779a783bb0e360a34f386873743c77d46d371/provisioning/plymouth-theme/bce_name.png -------------------------------------------------------------------------------- /provisioning/plymouth-theme/planet_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucberkeley/bce/b1d779a783bb0e360a34f386873743c77d46d371/provisioning/plymouth-theme/planet_black.png -------------------------------------------------------------------------------- /provisioning/plymouth-theme/planet_glow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucberkeley/bce/b1d779a783bb0e360a34f386873743c77d46d371/provisioning/plymouth-theme/planet_glow.png -------------------------------------------------------------------------------- /provisioning/plymouth-theme/space_glow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucberkeley/bce/b1d779a783bb0e360a34f386873743c77d46d371/provisioning/plymouth-theme/space_glow.png -------------------------------------------------------------------------------- /provisioning/plymouth-theme/sun_glow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucberkeley/bce/b1d779a783bb0e360a34f386873743c77d46d371/provisioning/plymouth-theme/sun_glow.png -------------------------------------------------------------------------------- /provisioning/plymouth-theme/ucb_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucberkeley/bce/b1d779a783bb0e360a34f386873743c77d46d371/provisioning/plymouth-theme/ucb_logo.png --------------------------------------------------------------------------------