Install Using GitHub Actions In AWS
This guide provides step-by-step instructions for installing iFIX using GitHub Actions in an AWS environment.
Pre-requisites
Github account - signup
Kubectl installed in the system - installation guide
AWS account - signup
Install AWS CLI locally - installation guide
Postman - installation guide and import data guide
A domain host - (example: GoDaddy to configure your server to a domain)
Install
Prepare AWS IAM User
Create an IAM User in your AWS account - official document
Generate ACCESS_KEY and SECRET_KEY for the IAM user - AWS document
Assign administrator access to the IAM user for necessary permissions.
Set up the AWS profile locally by running the following commands:
aws configure --profile {profilename}
fill in the key values as they are prompted
AWS_ACCESS_KEY_ID: <GENERATED_ACCESS_KEY>
AWS_SECRET_ACCESS_KEY: <GENERATED_SECRET_KEY>
AWS_DEFAULT_REGION: ap-south-1
export AWS_PROFILE={profilename}
Note: AWS Account should have S3 Bucket access to make Filestore service work
Fork GitHub Repositories
Fork the following repositories with all the branches into your organisation account on GitHub:
Master-Data (We do not need the master data repo since we are using the MDMS-v2 by default with data seeded)
Add AWS Keys To Repository
Go to the forked DIGIT-DevOps repository:
Navigate to the repository settings.
Go to Secrets and Variables.
Click on the actions options below secrets and variables.
On the new page, choose the new repository secret option in repository secrets and add the following keys mentioned below:
AWS_ACCESS_KEY_ID: <GENERATED_ACCESS_KEY>
AWS_SECRET_ACCESS_KEY: <GENERATED_SECRET_KEY>
AWS_DEFAULT_REGION: ap-south-1
AWS_REGION: ap-south-1
Repository Changes
Navigate to the release-githubactions branch in the forked DevOps repository.
Enable GitHub Actions.
Click on Actions, then click on "I understand my workflows, go ahead and enable them":
Edit GitHub Files - Steps
The following steps can be done directly in the browser or the local system if you are familiar with Git usage.
Before following any of the steps switch to the release-githubactions branch.
Steps to edit the git repository in the browser - Git guide
Steps to edit in the local system if you are familiar with Git basics:
Git clone {forked DevOps repolink}
Follow the below steps and make changes
Then commit and push to the release-githubactions branch
Note: Complete all changes at once then commit and push the code to remote to trigger the installation.
Replace Master & Configuration Repositories
Note: Make these repository/branch changes before installation; making changes to the configuration repository link in the DevOps repository after installation without understanding what impact they may have will lead to failure in the application functionality.
Navigate to egov-demo.yaml (config-as-code/environments/egov-demo.yaml).
Under the egov-persister: change the gitsync link of the configs repository to the forked config repository and the branch to UNIFIED-DEV.
Under the egov-indexer: change the gitsync link of the configs repository to the forked config repository and the branch to UNIFIED-DEV.
Configure Infrastructure-as-code
Navigate to infra-as-code/terraform/sample-aws.
Open input.yaml and enter details such as domain_name, cluster_name, bucket_name, and db_name.
Configure iFIX Chart Version
Navigate to file
deploy-as-code/deployer/digit_installer.go
Search for
ifix-demo
in the file and check for health-demo-vX.XChange the version to v1.1->
ifix-demo-v1.1
Configure Application Secrets
Generate SSH key pair.
How to Generate SSH Key Pair - choose one of the following methods to generate an SSH key pair:
Method a: Use an online website. (Note: This is not recommended for production setups, only for demo purposes): https://8gwifi.org/sshfunctions.jsp
Method b: Use OpenSSL commands:
openssl genpkey -algorithm RSA -out private_key.pem
ssh-keygen -y -f private_key.pem > ssh_public_key
To view the key run the commands or use any text editor to open the files
vi private_key.pem
vi ssh_public_key
Once generated Navigate to config-as-code/environments
Open egov-demo-secrets.yaml
Search for
PRIVATE KEY
and replace from-----BEGIN RSA PRIVATE KEY-----
to-----BEGIN RSA PRIVATE KEY-----
with private_key generated (note: please make sure the private key is indented as given)Add the public_key to your GitHub account - Git guide
Finalise Installation
Once all details are entered, push these changes to the remote GitHub repository. Open the Actions tab in your GitHub account to view the workflow. You should see that the workflow has started, and the pipelines are completed successfully.
Configure Domain Name
Connect to the Kubernetes cluster, from your local machine by using the following command:
Get the CNAME of the nginx-ingress-controller
The output of this will be something like this:
ae210873da6ff4c03bde2ad22e18fe04-233d3411.ap-south-1.elb.amazonaws.com
Add the displayed CNAME to your domain provider against your domain name. e.g. GoDaddy domain provider - https://www.godaddy.com/en-in/help/add-a-cname-record-19236
Enable Filestore Service
After connecting to the Kubernetes cluster, edit the deployment of the FileStore service using the following command:
The deployment.yaml for Filestore Service will open in VS Code, add the aws key and secret key provided to you in the way shown below:
Close the deployment.yaml file opened in your VS Code editor and the deployment will be updated.
Last updated
Was this helpful?