Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

The block diagram below represents how the 'terraform' template uses the join token to create a multi-node cluster.  Once the terraform process is over, the test.sh script is run to validate the cluster set-up. If the setup was successful, the script must return the list of nodes. 


                                                                        

CI/CD process :

The Jenkins freestyle job waits for events from the Gerrit-Event trigger plugin and initializes the terraform process. Once the process is done, a post-build task is used to push the build log to the nexus server. The following are the steps to set up the CI/CD job. 

  1. Add Gerrit credentials under Manage Jenkins > Manage credentials > Add new cred using credentials.  Enter your Gerrit user name and password. 
  2. Install Gerrit trigger plugin & post-build task plugin from > Manage Jenkins > Manage plugins > Available plugins.
  3. Create a new free style freestyle job and add your Gerrit account with the credentials you added in the Source Code Management section. Enter the repository URL and select the credentials that were added in step 1. 
  4. Add the following to the build script  shell script under the 'Build' section.  The following scripts are used to install terraform, exports TF_VAR for terraform purposes, installs LFtools, and initializes the terraform init, plan and apply processes.   
    wget https://releases.hashicorp.com/terraform/0.14.9/terraform_0.14.9_linux_amd64.zip
    unzip terraform_0.14.9_linux_amd64.zip
    sudo mv terraform /usr/local/bin/
    terraform --help
    export TF_VAR_aws_region="us-east-2"
    export TF_VAR_aws_ami="ami-026141f3d5c6d2d0c"
    export TF_VAR_aws_instance="t4g.medium"
    export TF_VAR_vpc_id=""
    export TF_VAR_aws_subnet_id=""
    export TF_VAR_access_key=""
    export TF_VAR_secret_key=""
    export TF_LOG="TRACE"
    export TF_LOG_PATH="./tf.log"
    sudo apt-get update
    sudo apt-get -y install pip3python3-pip curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh export CRYPTOGRAPHY_DONT_BUILD_RUST=1 apt-get install build-essential libssl-dev libffi-dev pip3 install lftools cd /var/jenkins_home/workspace/gerrit-akraino/src/foundation/microk8s terraform init terraform plan terraform apply -auto-approve 

  5. Add the following to the post-build task. The post build task -build script is for pushing the build's log to the nexus server. Configure the SILO, JENKINS_HOSTNAME, JOB_NAME etc. 
    echo "post build tasks"
    cat /var/jenkins_home/workspace/gerrit-akraino/src/foundation/microk8s/tf.log
    echo $BUILD_NUMBER
    NEXUS_URL=https://nexus.akraino.org
    SILO=gopaddle
    JENKINS_HOSTNAME=35.239.217.210:30016<hostName/IP>
    JOB_NAME=gerrit-akraino
    BUILD_URL="${JENKINS_HOSTNAME}/job/${JOB_NAME}/${BUILD_NUMBER}/"
    NEXUS_PATH="${SILO}/job/${JOB_NAME}/${BUILD_NUMBER}"
    lftools deploy logs $NEXUS_URL $NEXUS_PATH $BUILD_URL
    echo "Logs uploaded to $NEXUS_URL/content/sites/logs/$NEXUS_PATH" 
  6. To The following steps are to configure the  Gerrit trigger 
    create -trigger plugin. 


    Create a folder ~/.ssh
    generate Generate ssh key using ssh-keygen -m PEM 
    Register the ssh key with your Gerrit account 
    check connectivity using ssh -p 29418 ashvin301@gerrit.akraino.org
    Add the userName/email/ssh_key/hostName/port to the Gerrit trigger 

    Build the job. Look under /var/jenkins_home/workspace/gerrit-akraino for code 

    id_rsa.pud key in the Gerrit account under settings > ssh keys > add new keys
    Once the key is registered with the Gerrit account, test the connectivity with the following command.
             ssh -p 29418 <UserName>@<HostName>