Cleaned up the README and added new information to Getting_Started.
Made client point to new location of docker-compose-executor release
This commit is contained in:
parent
4e818fdd30
commit
7aa6c07c66
4 changed files with 60 additions and 33 deletions
|
@ -3,7 +3,7 @@
|
||||||
Go library for communicating with Apache Aurora.
|
Go library for communicating with Apache Aurora.
|
||||||
Named after the northern lights (Aurora Borealis).
|
Named after the northern lights (Aurora Borealis).
|
||||||
|
|
||||||
### Aurora compatible version
|
### Aurora version compatibility
|
||||||
Please see [AURORA.VER](./AURORA.VER) to see the latest Aurora version against which this
|
Please see [AURORA.VER](./AURORA.VER) to see the latest Aurora version against which this
|
||||||
library has been tested. Vendoring a working version of this library is highly recommended.
|
library has been tested. Vendoring a working version of this library is highly recommended.
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,13 @@
|
||||||
# Running custom executors on Aurora
|
# Running custom executors on Aurora
|
||||||
|
|
||||||
In this instance we will be using the docker-compose executor to demonstrate
|
In this document, we will be using the docker-compose executor to demonstrate
|
||||||
how Aurora can use multiple executors on a single Scheduler.
|
how Aurora can use multiple executors on a single Scheduler. For this guide,
|
||||||
|
we will be using a vagrant instance to demonstrate the setup process. Many of the same
|
||||||
|
steps also apply to an Aurora installation made via a package manager. Differences in how to configure
|
||||||
|
the cluster between the vagrant image and the package manager will be clarified when necessary.
|
||||||
|
|
||||||
|
## Spinning up an Aurora instance with Vagrant
|
||||||
|
Follow the [guide](https://github.com/apache/aurora/blob/master/docs/operations/configuration.md) at the Aurora repository in order to spin up a local cluster.
|
||||||
|
|
||||||
## Configuring Scheduler to use Docker-Compose executor
|
## Configuring Scheduler to use Docker-Compose executor
|
||||||
In order use the docker compose executor with Aurora, we must first give the scheduler
|
In order use the docker compose executor with Aurora, we must first give the scheduler
|
||||||
|
@ -10,20 +16,23 @@ a configuration file that contains information on how to run the executor.
|
||||||
### Configuration file
|
### Configuration file
|
||||||
The configuration is a JSON file that contains where to find the executor and how to run it.
|
The configuration is a JSON file that contains where to find the executor and how to run it.
|
||||||
|
|
||||||
|
More information about how an executor may be configured for consumption by Aurora can be found [here](https://github.com/apache/aurora/blob/master/docs/operations/configuration.md)
|
||||||
|
under the custom executors section.
|
||||||
|
|
||||||
A sample config file for the docker-compose executor looks like this:
|
A sample config file for the docker-compose executor looks like this:
|
||||||
```
|
```
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"executor":{
|
"executor":{
|
||||||
"command":{
|
"command":{
|
||||||
"value":"java -jar docker-compose-executor_0.0.1.jar",
|
"value":"java -jar docker-compose-executor_0.1.0.jar",
|
||||||
"shell":"true",
|
"shell":"true",
|
||||||
"uris":[
|
"uris":[
|
||||||
{
|
{
|
||||||
"cache":false,
|
"cache":false,
|
||||||
"executable":true,
|
"executable":true,
|
||||||
"extract":false,
|
"extract":false,
|
||||||
"value":"https://dl.bintray.com/rdelvalle/mesos-compose-executor/docker-compose-executor_0.0.1.jar"
|
"value":"https://github.com/mesos/docker-compose-executor/releases/download/0.1.0/docker-compose-executor_0.1.0.jar"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -39,20 +48,32 @@ A sample config file for the docker-compose executor looks like this:
|
||||||
|
|
||||||
### Configuring Scheduler to run custom executor
|
### Configuring Scheduler to run custom executor
|
||||||
#### Setting the proper flags `-custom_executor_config` flag and enabling mesos fetcher on jobs
|
#### Setting the proper flags `-custom_executor_config` flag and enabling mesos fetcher on jobs
|
||||||
|
Some flags need to be set on the Aurora scheduler in order for custom executors to work properly.
|
||||||
|
|
||||||
The `--custom_executor_config` flag must point to the location of the JSON blob.
|
The `--custom_executor_config` flag must point to the location of the JSON blob.
|
||||||
|
|
||||||
The `--enable_mesos_fetcher` flag must be set to true in order to allow jobs to fetch resources.
|
The `--enable_mesos_fetcher` flag must be set to true in order to allow jobs to fetch resources.
|
||||||
|
|
||||||
#### On vagrant
|
#### On vagrant
|
||||||
Modify the file `/etc/init/aurora-scheduler.conf` to include:
|
* Log into the vagrant image by going to the folder at which the Aurora repository
|
||||||
|
was cloned and running:
|
||||||
|
```
|
||||||
|
$ vagrant ssh
|
||||||
|
```
|
||||||
|
|
||||||
|
* Write the sample JSON blob provided above to a file inside the vagrant image.
|
||||||
|
|
||||||
|
|
||||||
|
* Inside the vagrant image, modify the file `/etc/init/aurora-scheduler.conf` to include:
|
||||||
```
|
```
|
||||||
--custom_executor_config=<Location of JSON blob> \
|
--custom_executor_config=<Location of JSON blob> \
|
||||||
--enable_mesos_fetcher=true
|
--enable_mesos_fetcher=true
|
||||||
```
|
```
|
||||||
|
|
||||||
#### On a scheduler installed via package manager
|
#### On a scheduler installed via package manager
|
||||||
Modify the file `/etc/default/aurora-scheduler.conf` to include:
|
* Write the sample JSON blob provided above to a file on the same machine where the scheduler is running.
|
||||||
|
|
||||||
|
* Modify the file `/etc/default/aurora-scheduler.conf` to include:
|
||||||
```
|
```
|
||||||
AURORA_EXTRA_ARGS="--custom_executor_config=<Location of JSON blob> \
|
AURORA_EXTRA_ARGS="--custom_executor_config=<Location of JSON blob> \
|
||||||
--enable_mesos_fetcher=true"
|
--enable_mesos_fetcher=true"
|
||||||
|
@ -72,42 +93,47 @@ the compose executor on Aurora.
|
||||||
|
|
||||||
#### Ubuntu
|
#### Ubuntu
|
||||||
|
|
||||||
##### Add PPA and install via apt-get
|
##### Adding a PPA and install via apt-get
|
||||||
```
|
```
|
||||||
$ sudo add-apt-repository ppa:ubuntu-lxc/lxd-stable
|
$ sudo add-apt-repository ppa:ubuntu-lxc/lxd-stable
|
||||||
$ sudo apt-get update
|
$ sudo apt-get update
|
||||||
$ sudo apt-get install golang
|
$ sudo apt-get install golang
|
||||||
```
|
```
|
||||||
|
|
||||||
##### Set GOPATH
|
##### Setting the GOPATH
|
||||||
|
|
||||||
Configure the environment to be able to compile and run Go code.
|
Configure the environment to be able to compile and run Go code.
|
||||||
|
|
||||||
```
|
```
|
||||||
$ mkdir $HOME/go
|
$ mkdir $HOME/go
|
||||||
$ echo export GOPATH=$HOME/go >> $HOME/.profile
|
$ echo export GOPATH=$HOME/go >> $HOME/.bashrc
|
||||||
$ echo export PATH=$PATH:$GOPATH/bin >> $HOME/.profile
|
$ echo export PATH=$PATH:$GOPATH/bin >> $HOME/.bashrc
|
||||||
$ echo export PATH=$PATH:$GOROOT/bin >> $HOME/.profile
|
$ echo export PATH=$PATH:$GOROOT/bin >> $HOME/.bashrc
|
||||||
|
```
|
||||||
|
|
||||||
|
Finally we must reload the .bashrc configuration:
|
||||||
|
```
|
||||||
|
$ source $HOME/.bashrc
|
||||||
```
|
```
|
||||||
|
|
||||||
### OS X
|
### OS X
|
||||||
|
|
||||||
One way to install go on OS X is by using [Homebrew](http://brew.sh/)
|
One way to install go on OS X is by using [Homebrew](http://brew.sh/)
|
||||||
|
|
||||||
#### Install Homebrew
|
#### Installing Homebrew
|
||||||
Run the following command from the terminal to install Hombrew:
|
Run the following command from the terminal to install Hombrew:
|
||||||
```
|
```
|
||||||
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
|
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Install Go using Hombrew
|
#### Installing Go using Hombrew
|
||||||
|
|
||||||
Run the following command from the terminal to install Go:
|
Run the following command from the terminal to install Go:
|
||||||
```
|
```
|
||||||
$ brew install go
|
$ brew install go
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Set the GOPATH
|
#### Setting the GOPATH
|
||||||
|
|
||||||
Configure the environment to be able to compile and run Go code.
|
Configure the environment to be able to compile and run Go code.
|
||||||
|
|
||||||
|
@ -124,9 +150,10 @@ $ echo export PATH=$PATH:$GOROOT/bin >> $HOME/.profile
|
||||||
Download and run the msi installer from https://golang.org/dl/
|
Download and run the msi installer from https://golang.org/dl/
|
||||||
|
|
||||||
## Installing Docker Compose
|
## Installing Docker Compose
|
||||||
|
To show Aurora's new multi executor feature, we need to use at least one custom executor.
|
||||||
|
In this case we will be using the [docker-compose-executor](https://github.com/mesos/docker-compose-executor).
|
||||||
|
|
||||||
In order to run the docker-compose executor, each agent must have docker-compose
|
In order to run the docker-compose executor, each agent must have docker-compose installed on it.
|
||||||
installed on it.
|
|
||||||
|
|
||||||
This can be done using pip:
|
This can be done using pip:
|
||||||
```
|
```
|
||||||
|
@ -178,7 +205,7 @@ aurora job create devcluster/www-data/prod/hello hello_world.aurora
|
||||||
Now that we have a thermos job running, it's time to launch a docker-compose job.
|
Now that we have a thermos job running, it's time to launch a docker-compose job.
|
||||||
|
|
||||||
We'll be using the gorealis library sample client to send a create job request
|
We'll be using the gorealis library sample client to send a create job request
|
||||||
to the scheduler, specifiying that we would like to use the docker-compose executor.
|
to the scheduler, specifying that we would like to use the docker-compose executor.
|
||||||
|
|
||||||
Furthermore, we will be specifying what resources we need to download in order to
|
Furthermore, we will be specifying what resources we need to download in order to
|
||||||
successfully run a docker compose job.
|
successfully run a docker compose job.
|
||||||
|
@ -186,19 +213,19 @@ successfully run a docker compose job.
|
||||||
The job configuration in the sample client looks like this:
|
The job configuration in the sample client looks like this:
|
||||||
```
|
```
|
||||||
job = realis.NewJob().
|
job = realis.NewJob().
|
||||||
Environment("prod").
|
Environment("prod").
|
||||||
Role("vagrant").
|
Role("vagrant").
|
||||||
Name("docker-compose").
|
Name("docker-compose").
|
||||||
ExecutorName("docker-compose-executor").
|
ExecutorName("docker-compose-executor").
|
||||||
ExecutorData("{}").
|
ExecutorData("{}").
|
||||||
CPU(1).
|
CPU(1).
|
||||||
Ram(64).
|
RAM(64).
|
||||||
Disk(100).
|
Disk(100).
|
||||||
IsService(false).
|
IsService(false).
|
||||||
InstanceCount(1).
|
InstanceCount(1).
|
||||||
AddPorts(1).
|
AddPorts(1).
|
||||||
AddLabel("fileName", "sample-app/sample-app.yml").
|
AddLabel("fileName", "sample-app/docker-compose.yml").
|
||||||
AddURI("https://dl.bintray.com/rdelvalle/mesos-compose-executor/sample-app.tar.gz", true, true)
|
AddURI("https://dl.bintray.com/rdelvalle/mesos-compose-executor/sample-app.tar.gz", true, true)
|
||||||
```
|
```
|
||||||
|
|
||||||
Now we run the client sending the create job command to Aurora:
|
Now we run the client sending the create job command to Aurora:
|
||||||
|
|
|
@ -79,7 +79,7 @@ func main() {
|
||||||
IsService(false).
|
IsService(false).
|
||||||
InstanceCount(1).
|
InstanceCount(1).
|
||||||
AddPorts(1).
|
AddPorts(1).
|
||||||
AddLabel("fileName", "sample-app/sample-app.yml").
|
AddLabel("fileName", "sample-app/docker-compose.yml").
|
||||||
AddURI("https://dl.bintray.com/rdelvalle/mesos-compose-executor/sample-app.tar.gz", true, true)
|
AddURI("https://dl.bintray.com/rdelvalle/mesos-compose-executor/sample-app.tar.gz", true, true)
|
||||||
break
|
break
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
"ephemeral": false,
|
"ephemeral": false,
|
||||||
"max_failures": 1,
|
"max_failures": 1,
|
||||||
"min_duration": 5,
|
"min_duration": 5,
|
||||||
"cmdline": "\n while true; do\n echo hello world from GoRealis\n sleep 10\n done\n ",
|
"cmdline": "\n while true; do\n echo hello world from gorealis\n sleep 10\n done\n ",
|
||||||
"final": false
|
"final": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue