Merge branch 'master' into docs
This commit is contained in:
commit
961b9de7e6
24
README.md
24
README.md
@ -8,7 +8,7 @@ Additionally, this script will automatically configure those tools for use with
|
||||
|
||||
This is designed and tested for Linux and MacOS X.
|
||||
|
||||
This code also requires [the Triton CLI tools](https://docs.joyent.com/public-cloud/api-access/cloudapi) and [a Triton account](https://docs.joyent.com/public-cloud/getting-started) on either the Triton Public Cloud (Joyent public cloud) or in a private cloud powered by Triton.
|
||||
This code also requires [the Triton CLI tools](https://docs.joyent.com/public-cloud/api-access/cloudapi) and [a Triton account](https://docs.joyent.com/public-cloud/getting-started) on either Triton public cloud (Joyent public cloud) or in a private cloud powered by Triton.
|
||||
|
||||
Use of this software also requires [a Triton profile configured in the Triton CLI tool](https://docs.joyent.com/public-cloud/api-access/cloudapi#configuration).
|
||||
|
||||
@ -17,7 +17,7 @@ Use of this software also requires [a Triton profile configured in the Triton CL
|
||||
In a terminal window, run the following command:
|
||||
|
||||
```bash
|
||||
sudo curl -o /usr/local/bin/triton-docker https://raw.githubusercontent.com/joyent/triton-docker-cli/master/triton-docker && chmod +x /usr/local/bin/triton-docker && ln -Fs /usr/local/bin/triton-docker /usr/local/bin/triton-compose && ln -Fs /usr/local/bin/triton-docker /usr/local/bin/triton-docker-install
|
||||
sudo bash -c 'curl -o /usr/local/bin/triton-docker https://raw.githubusercontent.com/joyent/triton-docker-cli/master/triton-docker && chmod +x /usr/local/bin/triton-docker && ln -Fs /usr/local/bin/triton-docker /usr/local/bin/triton-compose && ln -Fs /usr/local/bin/triton-docker /usr/local/bin/triton-docker-install'
|
||||
```
|
||||
|
||||
That command will copy the `triton-docker` shell script from this repo, and link it as `triton-compose` and `triton-docker-install`.
|
||||
@ -58,6 +58,26 @@ More about:
|
||||
- [Docker Compose on Triton](https://www.joyent.com/blog/using-docker-compose)
|
||||
- [Optimizing your Docker operations for Triton](https://www.joyent.com/blog/optimizing-docker-on-triton)
|
||||
|
||||
### Triton Container Name Service helpers
|
||||
|
||||
This will also set some helpful environment variables for using [Triton Container Name Service (CNS)](https://docs.joyent.com/public-cloud/network/cns):
|
||||
|
||||
- `TRITON_CNS_SEARCH_DOMAIN_PUBLIC`
|
||||
- `TRITON_CNS_SEARCH_DOMAIN_PRIVATE`
|
||||
|
||||
Those vars will be automatically set with values appropriate for use in Triton Public Cloud:
|
||||
|
||||
```
|
||||
TRITON_CNS_SEARCH_DOMAIN_PRIVATE=a42e7881-89d2-459e-bc0b-e9af0bca409a.us-east-3.cns.joyent.com
|
||||
TRITON_CNS_SEARCH_DOMAIN_PUBLIC=a42e7881-89d2-459e-bc0b-e9af0bca409a.us-east-3.triton.zone
|
||||
```
|
||||
|
||||
#### Notes and cautions about CNS env vars
|
||||
|
||||
- The mechanism that sets these environment vars only works for Triton Public Cloud. To use Triton Docker CLI with private cloud implementations of Triton, please set the `TRITON_CNS_SEARCH_DOMAIN_PUBLIC` and `TRITON_CNS_SEARCH_DOMAIN_PRIVATE` vars manually
|
||||
- These environment variables will be removed following the completion of [CNS-164](https://smartos.org/bugview/CNS-164) and [DOCKER-898](https://smartos.org/bugview/DOCKER-898), which will automatically set the DNS search domain to these values
|
||||
- [CNS-164](https://smartos.org/bugview/CNS-164) and [DOCKER-898](https://smartos.org/bugview/DOCKER-898) will also work on private cloud implementations of Triton, solving the problem for everybody
|
||||
|
||||
### Components
|
||||
|
||||
In addition to the shell script in this repo, this script will install:
|
||||
|
99
triton-docker
Normal file → Executable file
99
triton-docker
Normal file → Executable file
@ -1,5 +1,5 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
set -e -o pipefail
|
||||
|
||||
triton_docker_version=1.12.6
|
||||
triton_compose_version=1.9.0
|
||||
@ -14,28 +14,16 @@ function checkCurlInstalled () {
|
||||
command -v curl >/dev/null 2>&1 || { echo >&2 "curl is required to complete this installation. Please install before continuing."; exit 1; }
|
||||
}
|
||||
|
||||
# Emit the current Triton profile and time
|
||||
function currentProfile () {
|
||||
if [ -n "$TRITON_PROFILE" ]
|
||||
then
|
||||
local profile_source='via env var; use `eval "$(triton env <profile name>)"` to change'
|
||||
else
|
||||
local profile_source='default; use `triton profile set <profile name>` to change'
|
||||
fi
|
||||
|
||||
echo "Executing in '$(triton profile get | awk 'NR == 1 {print $2}')' (${profile_source}) at $(date +'%r')"
|
||||
}
|
||||
|
||||
# Check if the Docker binary (named triton-docker-helper)
|
||||
# and Docker Compose (named triton-compose-helper) are installed and executable
|
||||
function checkDockerInstalled () {
|
||||
if
|
||||
[ ! -f /usr/local/bin/triton-docker-helper ] ||
|
||||
[ ! -x /usr/local/bin/triton-docker-helper ] ||
|
||||
[ "${triton_docker_version}," != $(/usr/local/bin/triton-docker-helper -v | awk '{print $3}') ] ||
|
||||
[ "${triton_docker_version}," != "$(/usr/local/bin/triton-docker-helper -v | awk '{print $3}')" ] ||
|
||||
[ ! -f /usr/local/bin/triton-compose-helper ] ||
|
||||
[ ! -x /usr/local/bin/triton-compose-helper ] ||
|
||||
[ "${triton_compose_version}," != $(/usr/local/bin/triton-compose-helper -v | awk '{print $3}') ]
|
||||
[ "${triton_compose_version}," != "$(/usr/local/bin/triton-compose-helper -v | awk '{print $3}')" ]
|
||||
then
|
||||
echo 'Additional or updated components are required.'
|
||||
echo 'Please run `sudo triton-docker-install` to continue.'
|
||||
@ -55,7 +43,7 @@ function install () {
|
||||
# Install the specific version of Docker for Triton
|
||||
rm -Rf /tmp/triton-docker /usr/local/bin/triton-docker-helper
|
||||
mkdir -p /tmp/triton-docker
|
||||
curl https://get.docker.com/builds/$(uname -a | awk '{ print $1 }')/x86_64/docker-${triton_docker_version}.tgz | tar zxvf - -C /tmp/triton-docker
|
||||
curl https://get.docker.com/builds/"$(uname -a | awk '{ print $1 }')"/x86_64/docker-${triton_docker_version}.tgz | tar zxvf - -C /tmp/triton-docker
|
||||
mv /tmp/triton-docker/docker/docker /usr/local/bin/triton-docker-helper
|
||||
rm -Rf /tmp/triton-docker
|
||||
chmod +x /usr/local/bin/triton-docker-helper
|
||||
@ -64,30 +52,101 @@ function install () {
|
||||
echo
|
||||
|
||||
# Install the specific version of Docker Compose for Triton
|
||||
curl -Lo /usr/local/bin/triton-compose-helper https://github.com/docker/compose/releases/download/${triton_compose_version}/docker-compose-$(uname -a | awk '{ print $1 }')-x86_64
|
||||
curl -Lo /usr/local/bin/triton-compose-helper https://github.com/docker/compose/releases/download/${triton_compose_version}/docker-compose-"$(uname -a | awk '{ print $1 }')"-x86_64
|
||||
chmod +x /usr/local/bin/triton-compose-helper
|
||||
|
||||
echo "The triton-compose-helper is now installed."
|
||||
echo
|
||||
}
|
||||
|
||||
# Emit the current Triton profile and time
|
||||
function currentProfile () {
|
||||
if [ -n "$TRITON_PROFILE" ]
|
||||
then
|
||||
local profile_source='via env var; use `eval "$(triton env <profile name>)"` to change'
|
||||
else
|
||||
local profile_source='default; use `triton profile set <profile name>` to change'
|
||||
fi
|
||||
|
||||
# Get and the user's account information and CloudAPI URL for parsing later
|
||||
local triton_account="$(triton account get)"
|
||||
|
||||
echo "Executing in '$(echo "${triton_account}" | awk 'NR == 1 {print $2}')' (${profile_source})"
|
||||
|
||||
# Check if CNS is enabled, require it
|
||||
if [ ! "true" == "$(echo "${triton_account}" | awk -F": " '/^triton_cns_enabled:/{print $2}')" ]
|
||||
then
|
||||
echo
|
||||
tput rev # reverse
|
||||
tput bold # bold
|
||||
echo 'Warning! Triton CNS is not enabled.'
|
||||
tput sgr0 # clear
|
||||
echo
|
||||
echo 'Please run the following to activate:'
|
||||
echo ' triton account update triton_cns_enabled=true'
|
||||
echo
|
||||
fi
|
||||
}
|
||||
|
||||
# Set env vars to make using CNS easier
|
||||
function cnsEnvVars () {
|
||||
|
||||
# If the CNS env vars are already set, don't bother continuing
|
||||
if [ -n "$TRITON_CNS_SEARCH_DOMAIN_PUBLIC" ] && [ -n "$TRITON_CNS_SEARCH_DOMAIN_PRIVATE" ]
|
||||
then
|
||||
return
|
||||
fi
|
||||
|
||||
# Get and the user's account information and CloudAPI URL for parsing later
|
||||
local triton_account="$(triton account get)"
|
||||
local triton_url="$(triton profile get | awk -F"/" '/url:/{print $3}')"
|
||||
|
||||
# Do not continue if the target is not a Triton Public Cloud data center
|
||||
if [ ! ".api.joyent.com" == "${triton_url: -15}" ]
|
||||
then
|
||||
return
|
||||
fi
|
||||
|
||||
# Get the user's UUID
|
||||
local triton_account_uuid="$(echo "${triton_account}" | awk -F": " '/^id:/{print $2}')"
|
||||
|
||||
# Get current data center name
|
||||
# Note: this makes assumptions that work in our public cloud, but might not work elsewhere
|
||||
# Further note: set TRITON_CNS_SUFFIX_PUBLIC and TRITON_CNS_SUFFIX_PRIVATE to work around this
|
||||
local triton_dc="$(echo "${triton_url}" | awk -F'.' '{print $1}')"
|
||||
|
||||
# Set the CNS base for public and private names
|
||||
# Note, this also makes assumptions that only work in our public cloud
|
||||
export TRITON_CNS_SEARCH_DOMAIN_PUBLIC="${triton_account_uuid}.${triton_dc}.triton.zone"
|
||||
export TRITON_CNS_SEARCH_DOMAIN_PRIVATE="${triton_account_uuid}.${triton_dc}.cns.joyent.com"
|
||||
}
|
||||
|
||||
# Run all checks
|
||||
function checkAll () {
|
||||
checkTritonInstalled &&
|
||||
checkDockerInstalled &&
|
||||
currentProfile
|
||||
checkDockerInstalled
|
||||
}
|
||||
|
||||
case "`basename $0`" in
|
||||
# Special case handling if the sub-command is `profile`
|
||||
if [ "profile" == "$1" ]
|
||||
then
|
||||
currentProfile
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Change behavior based on the calling name of this executable
|
||||
case "$(basename $0)" in
|
||||
triton-docker)
|
||||
checkAll &&
|
||||
eval "$(triton env)" &&
|
||||
cnsEnvVars &&
|
||||
exec /usr/local/bin/triton-docker-helper $@
|
||||
;;
|
||||
triton-compose)
|
||||
checkAll &&
|
||||
eval "$(triton env)" &&
|
||||
export COMPOSE_HTTP_TIMEOUT=750 &&
|
||||
cnsEnvVars &&
|
||||
exec /usr/local/bin/triton-compose-helper $@
|
||||
;;
|
||||
triton-docker-install)
|
||||
|
Loading…
Reference in New Issue
Block a user