Deploy to AWS VMs
This tutorial helps you get started with Harness Continuous Delivery (CD). We will guide you through creating a CD pipeline with deployment types Secure Shell (SSH) and WinRM to deploy applications to remote Linux and Windows servers.
- Secure Shell (SSH)
- WinRM
Before you begin
Verify the following:
- One or more Linux Instances on AWS. Make sure port 22 is open on the security group.
- SSH private key (*.pem file) to authenticate with the remote instance(s). To understand how SSH password-less authentication works, go to Passwordless SSH using public-private key pairs.
- Docker to set up and start the Harness Docker delegate.
- For more information, go to Delegate system and network requirements.
Getting started with Harness CD
-
Log into Harness.
-
Select Projects, and then select Default Project.
warningFor the pipeline to run successfully, please follow all of the following steps as they are, including the naming conventions.
Delegate
What is the Harness Delegate?
The Harness Delegate is a service that runs in your local network or VPC to establish connections between the Harness Manager and various providers such as artifacts registries, cloud platforms, etc. The delegate is installed in the target infrastructure, for example, a Kubernetes cluster, and performs operations including deployment and integration. Learn more about the delegate in the Delegate Overview.
-
In Project Setup, select Delegates.
-
Select Delegates.
-
Select Install delegate. For this tutorial, let's explore how to install the Docker Delegate.
-
In the command provided,
ACCOUNT_ID
,MANAGER_ENDPOINT
andDELEGATE_TOKEN
are auto-populated values that you can obtain from the delegate installation wizard.docker run --cpus=1 --memory=2g \
-e DELEGATE_NAME=docker-delegate \
-e NEXT_GEN="true" \
-e DELEGATE_TYPE="DOCKER" \
-e ACCOUNT_ID=ACCOUNT_ID \
-e DELEGATE_TOKEN=DELEGATE_TOKEN \
-e LOG_STREAMING_SERVICE_URL=https://app.harness.io/gratis/log-service/ \
-e MANAGER_HOST_AND_PORT=MANAGER_ENDPOINT harness/delegate:23.05.79310
-
-
Verify that the delegate is installed successfully and can connect to the Harness Manager.
-
You can also follow the Install Harness Delegate on Kubernetes or Docker steps to install the Kubernetes Delegate using Helm, the Terraform Helm Provider, or a Kubernetes manifest.
Secrets
What are Harness secrets?
Harness offers built-in secret management for encrypted storage of sensitive information. Secrets are decrypted when needed, and only the private network-connected Harness Delegate has access to the key management system. You can also integrate your own secret manager. To learn more about secrets in Harness, go to Harness Secret Manager Overview.
- Create a secret of type SSH Credential.
- In Project Setup, select Secrets.
- Select New Secret, and then select SSH Credential.
- Enter the secret name
harness_sshprivatekey
and select Continue. - With SSH Key as the auth scheme, select Username/SSH Key as the authentication method.
- In Username, enter the username for the user account on the remote server. For example,
ubuntu
. - Next, select Create or Select a Secret and select New Secret File.
- Enter the secret name
ssh-private-key
and select Browse to upload the SSH private key to the Harness Secret Manager. - Select Save and, if needed, modify the SSH port number.
- Finally, select Save and Continue and verify the connection to remote server is successful.
- Create a secret to store the AWS secrete key.
- In Project Setup, select Secrets.
- Click New Secret, and then select Text.
- Enter the secret name
harness_awssecretkey
. - For the secret value, paste in the AWS Secret Key.
- Select Save.
Connectors
What are connectors?
Connectors in Harness enable integration with 3rd party tools, providing authentication and operations during pipeline runtime. For instance, a GitHub connector facilitates authentication and fetching files from a GitHub repository within pipeline stages. Explore connector how-tos here.
- Create an AWS connector.
- Copy the contents of aws-connector.yml.
- In Harness, in Project Setup, select Connectors.
- Select Create via YAML Builder and paste the copied YAML.
- In the YAML, replace AWS_ACCESS_KEY_ID with the AWS Access Key ID value.
- Select Save Changes and verify that the new connector named harness_awsconnector is successfully created.
- Finally, select Test under Connectivity Status to ensure the connection is successful.
- Create a Artifactory Connector. For this tutorial, we'll use a publicly available ToDo List app artifact, todolist.war, available in a public Harness Artifactory repo.
- Copy the contents of artifactory-connector.yml.
- In Harness, in Project Setup, select Connectors.
- Select Create via YAML Builder and paste the copied YAML.
- Select Save Changes and verify that the new connector named harness_artifactrepo is successfully created.
- Finally, select Test under Connectivity Status to ensure the connection is successful.