Use Pipelines to call any CLI or API during builds or deploys.
Before you begin the tutorial you must:
This tutorial is an exercise in implementing the Joyent triton implementation in this repository https://github.com/autopilotpattern/wordpress with Pipelines.
“This project uses the Autopilot Pattern to automate operations, including discovery and configuration, for scaling to any size. All component containers use ContainerPilot and Consul to configure themselves. This also allows each service to be scaled independently to handle incoming traffic and as more services are added, the containers that consume these services will reconfigure themselves accordingly.”
That is a quote from the repository Readme. There are a several advanced options described in the repository, that this tutorial does not cover, but can easily be extended to those advanced configurations.
Ultimately, this will create a Wordpress service accessible to the public.
To implement this tutorial, you must have an account in Joyent. You can create one here. You must have a paid account for the features in this tutorial.
You must first setup a Manta “directory” or “bucket” to store information. I recommend creating this “bucket” in the stor directory. See the Manta Docs for more information.
To complete this tutorial, you must next setup a Pipelines build server. You can follow the steps here.
On the build server you will have to install prerequisites. These should distinctly be installed under the distelli user account. One way to ensure the prerequisites are installed under the distelli account is to switch user to the distelli account like this:
sudo su - distelli bash
As the distelli user, on the build server, you must install Docker. Instructions for installing Docker can be found here.
The distelli user should have full access to the docker daemon. This can be accomplished by adding the distelli user to the docker group. Note, you must restart the distelli supervise process after adding it to the docker group.
sudo distelli supervise stop sudo distelli supervise start
This example uses Joyent triton. To install triton, you must first install nodejs. The following exemplifies installing nodeJS on Ubuntu 16.04.
sudo apt install -y nodejs npm sudo ln -s /uar/bin/nodejs /usr/bin/node
sudo npm install -g triton sudo npm install -g smartdc sudo npm install -g json
Next you will have to create an SSH key, on the build server, and add it to Joyent. Use the
ssh-keygen command. You can add your ssh key to Joyent here.
Remember, this must be done for the distelli user.
When adding the key to Joyent, ensure the key has access to Manta.
You will have to create a triton profile on the build server. You can begin this process with
triton profile create. I would recommend the following values:
Remember, this must be done as the distelli user.
Note, SSH_KEY_FINGERPRINT is typically
You can validate your install by creating an instance in Joyent with the CLI. Here is an example CLI command.
triton instance create -w --name=distelliexample ubuntu-certified-14.04 k4-general-kvm-3.75G
Don’t forget to terminate this to ensure you are not billed.
You may need to run the following first.
eval $(triton env --docker)
This exercise requires that you have enabled Container Name Server (CNS) in Joyent. Note, this may also be referred to as consul server in this document and the repository referenced above.
By default, this tutorial distinctly expects the CNS server to be named “consul”. Here is an example CLI command to create the server. Note, you must first enable CNS on your Joyent account.
triton instance create -w --name=consul -t triton.cns.services=consul ubuntu-certified-14.04 k4-general-kvm-3.75G
You must create a fork of the example repository</a> https://github.com/autopilotpattern/wordpress
Now we are ready to create an application in Pipelines for the forked repository. To create an application, please see Creating an Application.
This application will be connected to the repository you forked above.
You will need to add the following build environment variables:
The final setup is to add the appropriate steps to the Pipelines manifest.
You will add these steps in the AfterBuildSuccess section of the manifest. On a successful build, the steps will initiate the wordpress cluster in Joyent.
AfterBuildSuccess: - eval $(triton env) - ./setup.sh ~/.ssh/id_rsa.pub - sed -i "s|MANTA_BUCKET= # an existing Manta bucket|MANTA_BUCKET=$MANTA_BUCKET|g" _env - sed -i "s|MANTA_USER= # a user with access to that bucket|MANTA_USER=$MANTA_USER|g" _env - docker-compose up -d - echo "The Wordpress URL is:" - grep "WORDPRESS_URL=htt" _env
To break this down, here is what is occurring.
Once you have those steps configured, build your application! Note, the services take 10-20 minutes to come up.