Commit 9f7f1e1030dabd8b2499c78dada9903c6219333d

Authored by Will Farrington

Merge pull request #17 from technicalpickles/agree-to-xcode-license-readme

Add note about agreeing to XCode license.

Showing 1 changed file Inline Diff

# Our Boxen 1 1 # Our Boxen
2 2
This is a template Boxen project designed for your organization to fork and 3 3 This is a template Boxen project designed for your organization to fork and
modify appropriately. 4 4 modify appropriately.
The Boxen rubygem and the Boxen puppet modules are only a framework for getting 5 5 The Boxen rubygem and the Boxen puppet modules are only a framework for getting
things done. 6 6 things done.
This repository template is just a basic example of _how_ to do things with them. 7 7 This repository template is just a basic example of _how_ to do things with them.
8 8
## Getting Started 9 9 ## Getting Started
10 10
1. Install XCode Command Line Tools and/or full XCode. 11 11 1. Install XCode Command Line Tools and/or full XCode.
12 * If using full XCode, you'll need to agree to the license by running: `xcodebuild -license`
1. Create a new repository on GitHub as your user for your Boxen. (eg. 12 13 1. Create a new repository on GitHub as your user for your Boxen. (eg.
`wfarr/my-boxen`). **Make sure it is a private repository!** 13 14 `wfarr/my-boxen`). **Make sure it is a private repository!**
1. Get running like so: 14 15 1. Get running like so:
``` 15 16 ```
mkdir -p ~/src/my-boxen 16 17 mkdir -p ~/src/my-boxen
cd ~/src/my-boxen 17 18 cd ~/src/my-boxen
git init 18 19 git init
git remote add upstream https://github.com/boxen/our-boxen 19 20 git remote add upstream https://github.com/boxen/our-boxen
git fetch upstream 20 21 git fetch upstream
git co -b master upstream/master 21 22 git co -b master upstream/master
git remote add origin https://github.com/wfarr/my-boxen 22 23 git remote add origin https://github.com/wfarr/my-boxen
git push origin master 23 24 git push origin master
24 25
script/boxen 25 26 script/boxen
``` 26 27 ```
1. Close and reopen your Terminal. If you have a shell config file 27 28 1. Close and reopen your Terminal. If you have a shell config file
(eg. `~/.bashrc`) you'll need to add this at the very end: 28 29 (eg. `~/.bashrc`) you'll need to add this at the very end:
`[ -f /opt/boxen/env.sh ] && source /opt/boxen/env.sh`, and reload 29 30 `[ -f /opt/boxen/env.sh ] && source /opt/boxen/env.sh`, and reload
your shell. 30 31 your shell.
1. Confirm the Boxen env has loaded: `boxen --env` 31 32 1. Confirm the Boxen env has loaded: `boxen --env`
32 33
Now you have your own my-boxen repo that you can hack on. 33 34 Now you have your own my-boxen repo that you can hack on.
You may have noticed we didn't ask you to fork the repo. 34 35 You may have noticed we didn't ask you to fork the repo.
This is because when our-boxen goes open source that'd have some 35 36 This is because when our-boxen goes open source that'd have some
implications about your fork also potentially being public. 36 37 implications about your fork also potentially being public.
That's obviously quite bad, so that's why we strongly suggest you 37 38 That's obviously quite bad, so that's why we strongly suggest you
create an entirely separate repo and simply pull the code in, as shown above. 38 39 create an entirely separate repo and simply pull the code in, as shown above.
39 40
## Getting your users started _after_ your "fork" exists 40 41 ## Getting your users started _after_ your "fork" exists
41 42
1. Install the XCode Command Line Tools (full XCode install optional). 42 43 1. Install the XCode Command Line Tools (full XCode install optional).
1. Run the following: 43 44 1. Run the following:
44 45
``` 45 46 ```
sudo mkdir -p /opt/boxen 46 47 sudo mkdir -p /opt/boxen
sudo chown $USER:admin /opt/boxen 47 48 sudo chown $USER:admin /opt/boxen
git clone https://github.com/yourorg/yourreponame.git /opt/boxen/repo 48 49 git clone https://github.com/yourorg/yourreponame.git /opt/boxen/repo
cd /opt/boxen/repo 49 50 cd /opt/boxen/repo
script/boxen 50 51 script/boxen
51 52
# add boxen to your shell config, at the end, eg. 52 53 # add boxen to your shell config, at the end, eg.
echo '[ -f /opt/boxen/env.sh ] && source /opt/boxen/env.sh' 53 54 echo '[ -f /opt/boxen/env.sh ] && source /opt/boxen/env.sh'
``` 54 55 ```
55 56
Open a new terminal, `boxen --env` to confirm. 56 57 Open a new terminal, `boxen --env` to confirm.
57 58
## What You Get 58 59 ## What You Get
59 60
This template project provides the following by default: 60 61 This template project provides the following by default:
61 62
* Homebrew 62 63 * Homebrew
* Git 63 64 * Git
* Hub 64 65 * Hub
* DNSMasq w/ .dev resolver for localhost 65 66 * DNSMasq w/ .dev resolver for localhost
* NVM 66 67 * NVM
* RBenv 67 68 * RBenv
* Full Disk Encryption requirement 68 69 * Full Disk Encryption requirement
* NodeJS 0.4 69 70 * NodeJS 0.4
* NodeJS 0.6 70 71 * NodeJS 0.6
* NodeJS 0.8 71 72 * NodeJS 0.8
* Ruby 1.8.7 72 73 * Ruby 1.8.7
* Ruby 1.9.2 73 74 * Ruby 1.9.2
* Ruby 1.9.3 74 75 * Ruby 1.9.3
* Ack 75 76 * Ack
* Findutils 76 77 * Findutils
* GNU-Tar 77 78 * GNU-Tar
78 79
## Customizing 79 80 ## Customizing
80 81
You can always check out the number of existing modules we already 81 82 You can always check out the number of existing modules we already
provide as optional installs under the 82 83 provide as optional installs under the
[boxen organization](https://github.com/boxen). These modules are all 83 84 [boxen organization](https://github.com/boxen). These modules are all
tested to be compatible with Boxen. Use the `Puppetfile` to pull them 84 85 tested to be compatible with Boxen. Use the `Puppetfile` to pull them
in dependencies automatically whenever `boxen` is run. 85 86 in dependencies automatically whenever `boxen` is run.
86 87
### Node definitions 87 88 ### Node definitions
88 89
Puppet has the concept of a 89 90 Puppet has the concept of a
['node'](http://docs.puppetlabs.com/references/glossary.html#agent), 90 91 ['node'](http://docs.puppetlabs.com/references/glossary.html#agent),
which is essentially the machine on which Puppet is running. Puppet looks for 91 92 which is essentially the machine on which Puppet is running. Puppet looks for
[node definitions](http://docs.puppetlabs.com/learning/agent_master_basic.html#node-definitions) 92 93 [node definitions](http://docs.puppetlabs.com/learning/agent_master_basic.html#node-definitions)
in the `manifests/site.pp` file in the Boxen repo. You'll see a default node 93 94 in the `manifests/site.pp` file in the Boxen repo. You'll see a default node
declaration that looks like the following: 94 95 declaration that looks like the following:
95 96
``` puppet 96 97 ``` puppet
node default { 97 98 node default {
# core modules, needed for most things 98 99 # core modules, needed for most things
include dnsmasq 99 100 include dnsmasq
100 101
# more... 101 102 # more...
} 102 103 }
``` 103 104 ```
104 105
### How Boxen interacts with Puppet 105 106 ### How Boxen interacts with Puppet
106 107
Boxen runs everything declared in `manifests/site.pp` by default. 107 108 Boxen runs everything declared in `manifests/site.pp` by default.
But just like any other source code, throwing all your work into one massive 108 109 But just like any other source code, throwing all your work into one massive
file is going to be difficult to work with. Instead, we recommend you 109 110 file is going to be difficult to work with. Instead, we recommend you
use modules via the `Puppetfile` when you can and making new modules 110 111 use modules via the `Puppetfile` when you can and making new modules
in the `modules/` directory when you can't. Then you just need to 111 112 in the `modules/` directory when you can't. Then you just need to
`include $modulename` those modules in `manifests/site.pp`. One pattern 112 113 `include $modulename` those modules in `manifests/site.pp`. One pattern
that's very common is to create a module for your organization 113 114 that's very common is to create a module for your organization
(eg. `modules/github`) and put an environment class in that module 114 115 (eg. `modules/github`) and put an environment class in that module
to include all of the modules your organization wants to install for 115 116 to include all of the modules your organization wants to install for
everyone by default. An example of this might look like so: 116 117 everyone by default. An example of this might look like so:
117 118
``` puppet 118 119 ``` puppet
# modules/github/manifests/environment.pp 119 120 # modules/github/manifests/environment.pp
120 121
class github::environment { 121 122 class github::environment {
include github::apps::mac 122 123 include github::apps::mac
123 124