Skip to content

Instantly share code, notes, and snippets.

@nvpnathan
Last active April 30, 2018 06:23
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nvpnathan/639c69257e69edf53c1df0e9465a0fcc to your computer and use it in GitHub Desktop.
Save nvpnathan/639c69257e69edf53c1df0e9465a0fcc to your computer and use it in GitHub Desktop.

Using docker-machine with Photon Platform

The purpose of this repository is to help automate the initial configuration of Tenants, Projects, Quota's, Networks, Images, Clusters (Harbor and Kubernetes). You can modify any of the variables to fit your deployment and environment.

Environment requirements:

Workstation Software Requirements:

  • photon cli binary Download
    • NOTE: You will need to rename the binary from photon-linux64-1.x.x-xxxxxxx to photon
  • Git (optional: if you want to clone the repository)
  • Docker machine driver plugin for Photon Controller Download

Workstation instructions

  • export these variables from your Photon Controller deployment

photon target show

photon project list

photon flavor list

photon image list

Access token is retrieved by photon target login user@tenant and then

cat ~/.photon-cli/.photon-config

{"CloudTarget":"https://192.168.64.85:443" "Token":"eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJBZG1pbmlzdHJhdG9yQHZiYWxsaW4uY29tIiwiYXVkIjpbIkFkbWluaXN0cmF0b3JAdmJhbGxpbi5jb20iLCJyc19lc3hjbG91ZCJdLCJzY29wZSI6InJzX2VzeGNsb3VkIGF0X2dyb3VwcyBvcGVuaWQgb2ZmbGluZV9hY2Nlc3MiLCJpc3MiOiJodHRwczpcL1wvMTkyLjE2OC42NC4xMDFcL29wZW5pZGNvbm5lY3RcL3ZiYWxsaW4uY29tIiwiZ3JvdXBzIjpbInZiYWxsaW4uY29tXFxVc2VycyIsInZiYWxsaW4uY29tXFxBZG1pbmlzdHJhdG9ycyIsInZiYWxsaW4uY29tXFxDQUFkbWlucyIsInZiYWxsaW4uY29tXFxFdmVyeW9uZSJdLCJ0b2tlbl9jbGFzcyI6ImFjY2Vzc190b2tlbiIsInRva2VuX3R5cGUiOiJCZWFyZXIiLCJleHAiOjE0ODkyODQ2NjcsImlhdCI6MTQ4ODk4NDY2NywianRpIjoidmtSNGtHd0lUVExXTmxfQ0NMSTlqZTlsVXFoOUswNFhTX21UaVgwZTZDVSIsInRlbmFudCI6InZiYWxsaW4uY29tIn0.lC3W4yVFyJ7hvTe0fMqJDl10pExUkY99tqaCxBZWX2t29prHH7QVK6h4ZtA2Vd3iisF_H4jauxIFnW1rlg3uogZ8a14ZD8DeNUlqj4IWbbgp7v7KqxJ7gwcmulspVKoZNlBJWzY_VueR9msrJWxnx7DxyYQvmqAX_rNq2QGrcC4NFeOkQDq7FtOvtaQkHRUFJEiWIIJCMp9802gPV4UasCD_Yn1efbNAz8fXVoHD5HcSpWC2oIAfcOUUTjzj9mZyLDrUYMLJ2Tg_tbEmPx0CLDnnblj235MgUrIh2roFkyyaDSLpf2b3Pv6ZOhiiaZIBMKIosC25vUzKI4jBFi1WvtpnE5n8JhQo3Epuhb_QmZD_K0Su8-8qWaHf4uEBlVd4FSbhVpk5PuvSYXje21uOMTGLcu1vcezd6oiIJh0xXo63IfsclJN9AxskQaOxM8VzzI3TUa2zK07g30N9UIS89566IhtDXe1iJdjwX64pzagg7jcqDdaHTMsmDsHklk_kPtnIQEUSfQb92xg6m_H2kikH7J_j9JHDirgLdeufMhPre9dn9g4xdxeRQNgSbYBckXC0DTZtYJotXNoiaBsRP2VnikeYfEJpNt8Fd-o_1ASVimI3vlE1g16kPRpb1wLTr79fuWuxptAlra5Qvjfp638z_fTzeJePR4HQDfWAgAY","RefreshToken":"eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJBZG1pbmlzdHJhdG9yQHZiYWxsaW4uY29tIiwiYXVkIjoiQWRtaW5pc3RyYXRvckB2YmFsbGluLmNvbSIsInNjb3BlIjoicnNfZXN4Y2xvdWQgYXRfZ3JvdXBzIG9wZW5pZCBvZmZsaW5lX2FjY2VzcyIsImlzcyI6Imh0dHBzOlwvXC8xOTIuMTY4LjY0LjEwMVwvb3BlbmlkY29ubmVjdFwvdmJhbGxpbi5jb20iLCJ0b2tlbl9jbGFzcyI6InJlZnJlc2hfdG9rZW4iLCJ0b2tlbl90eXBlIjoiQmVhcmVyIiwiZXhwIjoxNTEwNTg0NjY3LCJpYXQiOjE0ODg5ODQ2NjcsImp0aSI6IlhGYms1ZVNQTVYtLWpBNzdQN0hQeDJYSFhBWUlCaTJlM044Si1zN25OQnMiLCJ0ZW5hbnQiOiJ2YmFsbGluLmNvbSJ9.LXAU17M2SUcjBlO9gkvP07-Px4xIajkEa3UvvSI0NJKKOdGefC1olNhg8fR5mymcC3sRNGvUcpyoWGaFbVQQMV3KU40giBgWMcsdrs9Nbbr7h1MPowKEqnpe3TTLQE5M8VKC9AwHekjN7xNT6xs7u-4kVupk2mJd2pAyVsgIya76_eyYz3V6Ftbqfj3K8-9hNp2QDCb30INHDv9ad9YzoTG3q0PmhPSLBhAnTIcK5RzgbuIDdRdgjH9HgKBHlhMsG2omMWy1FiuLN7ay5F0LNLdQHpfXy6vEl-_oQsnjsgeW5d6x-etQRIsHXN1PzKHmMwbyayCUGuEv9LwwhEcliDMgIvyB01pH63yV4bvWIDktTLiNtf384rFhVKhsrrJXA0JTeNLmMBZbUxoTJ3Thfeaj97k4Ok7jTfMLX2BLmRaJqz335GM-cgxFqEcXq-7CyDPqh33zV2rqm9BPPtGntbfGAdjkYcikDjF_8ZmlN2x7j7CWky_zotqsIXTMMDjPbZ4IjVcGyTis-UmSbbUcKMb-G8Zl1jBnxniURlyNs6U1h22jmfK-1UwbKlutbakqRUyZflc66uUhvyFwAy1Rct9Cd8xSwaCr-axCsw6NaGDoctxkPwwOgUY6jwh8LR_i4GdYnROlAG-D1H2QCLBdwgjD-soA2o797MxF-yBIZ40","IgnoreCertificate":true,"Tenant":{"Name":"orgADevs","ID":"4c205d67-8db6-484f-ba4c-96f6d1024b21"},"Project":{"Name":"docker-project","ID":"e6187f3a-496c-4065-b50e-9ef70cbc35d0"}}

export PHOTON_ENDPOINT=https://192.168.64.85:443      
export PHOTON_PROJECT=e6187f3a-496c-4065-b50e-9ef70cbc35d0
export PHOTON_DISK_FLAVOR=vm-disk
export PHOTON_IMAGE=7b9168d8-4259-4805-97b4-c151cab6287c
export PHOTON_VM_FLAVOR=medium-vm
export PHOTON_ISO_PATH=/home/vagrant/photonplatform/images/cloud-init.iso
export PHOTON_SSH_KEYPATH=/home/vagrant/.ssh/id_rsa
export PHOTON_ACCESS_TOKEN='eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJBZG1pbmlzdHJhdG9yQHZiYWxsaW4uY29tIiwiYXVkIjpbIkFkbWluaXN0cmF0b3JAdmJhbGxpbi5jb20iLCJyc19lc3hjbG91ZCJdLCJzY29wZSI6InJzX2VzeGNsb3VkIGF0X2dyb3VwcyBvcGVuaWQgb2ZmbGluZV9hY2Nlc3MiLCJpc3MiOiJodHRwczpcL1wvMTkyLjE2OC42NC4xMDFcL29wZW5pZGNvbm5lY3RcL3ZiYWxsaW4uY29tIiwiZ3JvdXBzIjpbInZiYWxsaW4uY29tXFxVc2VycyIsInZiYWxsaW4uY29tXFxBZG1pbmlzdHJhdG9ycyIsInZiYWxsaW4uY29tXFxDQUFkbWlucyIsInZiYWxsaW4uY29tXFxFdmVyeW9uZSJdLCJ0b2tlbl9jbGFzcyI6ImFjY2Vzc190b2tlbiIsInRva2VuX3R5cGUiOiJCZWFyZXIiLCJleHAiOjE0ODkyODQ2NjcsImlhdCI6MTQ4ODk4NDY2NywianRpIjoidmtSNGtHd0lUVExXTmxfQ0NMSTlqZTlsVXFoOUswNFhTX21UaVgwZTZDVSIsInRlbmFudCI6InZiYWxsaW4uY29tIn0.lC3W4yVFyJ7hvTe0fMqJDl10pExUkY99tqaCxBZWX2t29prHH7QVK6h4ZtA2Vd3iisF_H4jauxIFnW1rlg3uogZ8a14ZD8DeNUlqj4IWbbgp7v7KqxJ7gwcmulspVKoZNlBJWzY_VueR9msrJWxnx7DxyYQvmqAX_rNq2QGrcC4NFeOkQDq7FtOvtaQkHRUFJEiWIIJCMp9802gPV4UasCD_Yn1efbNAz8fXVoHD5HcSpWC2oIAfcOUUTjzj9mZyLDrUYMLJ2Tg_tbEmPx0CLDnnblj235MgUrIh2roFkyyaDSLpf2b3Pv6ZOhiiaZIBMKIosC25vUzKI4jBFi1WvtpnE5n8JhQo3Epuhb_QmZD_K0Su8-8qWaHf4uEBlVd4FSbhVpk5PuvSYXje21uOMTGLcu1vcezd6oiIJh0xXo63IfsclJN9AxskQaOxM8VzzI3TUa2zK07g30N9UIS89566IhtDXe1iJdjwX64pzagg7jcqDdaHTMsmDsHklk_kPtnIQEUSfQb92xg6m_H2kikH7J_j9JHDirgLdeufMhPre9dn9g4xdxeRQNgSbYBckXC0DTZtYJotXNoiaBsRP2VnikeYfEJpNt8Fd-o_1ASVimI3vlE1g16kPRpb1wLTr79fuWuxptAlra5Qvjfp638z_fTzeJePR4HQDfWAgAY'

generate the swarm token

docker run swarm create
Unable to find image 'swarm:latest' locally
latest: Pulling from library/swarm
ebe0176dcf9a: Pull complete
19f771faa982: Pull complete
902eeedf931a: Pull complete
Digest: sha256:815fc8fd4617d866e1256999c2c0a55cc8f377f3dade26c3edde3f0543a70c04
Status: Downloaded newer image for swarm:latest
68ac2ec4986cb1e533b6f7d3de5b35dd

create swarm manager with the generated token

docker-machine create \
-d photon \
--swarm \
--swarm-master \
--swarm-discovery token://815fc8fd4617d866e1256999c2c0a55cc8f377f3dade26c3edde3f0543a70c04 \
swarm-manager

create swarm-manager worker swarm-nodes

docker-machine create \
-d photon \
--swarm \
--swarm-discovery token://**815fc8fd4617d866e1256999c2c0a55cc8f377f3dade26c3edde3f0543a70c04** \
swarm-node01

docker-machine create \
-d photon \
--swarm \
--swarm-discovery token://815fc8fd4617d866e1256999c2c0a55cc8f377f3dade26c3edde3f0543a70c04 \
swarm-node02

docker-machine create \
-d photon \
--swarm \
--swarm-discovery token://815fc8fd4617d866e1256999c2c0a55cc8f377f3dade26c3edde3f0543a70c04 \
swarm-node03

After that's done it should look something like this

docker-machine ls

NAME            ACTIVE   DRIVER   STATE     URL                         SWARM                    DOCKER        ERRORS
swarm-manager   -        photon   Running   tcp://192.168.72.106:2376   swarm-manager (master)   v17.03.0-ce
swarm-node01     -        photon   Running   tcp://192.168.72.107:2376   swarm-manager            v17.03.0-ce
swarm-node02     -        photon   Running   tcp://192.168.72.108:2376   swarm-manager            v17.03.0-ce
swarm-node03     -        photon   Running   tcp://192.168.72.109:2376   swarm-manager            v17.03.0-ce

To connect to swarm manager or nodes you can set your shell

eval "$(docker-machine env swarm-manager)" or eval "$(docker-machine env swarm-node01)"

docker info

Creating a service

docker service create --replicas 1 --name vmwarecna vmwarecna/nginx

Scaling the service

docker service scale vmwarecna=3

Inspect the service

docker service inspect --pretty vmwarecna

Look at the service

docker service ps vmwarecna

Publish the service

docker service update --publish-add "80:80" vmwarecna

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment