Set following ENV variables.
export OST_INFRA_AWS_ACCESS_KEY=' <AWS IAM access key>'
export OST_INFRA_AWS_KEY_SECRET=' <AWS IAM key secret>'
export OST_INFRA_AWS_REGION=' eu-west-1'
export OST_INFRA_AWS_ACCOUNT_ID=401473291306
export OST_INFRA_AWS_KMS_KEY_ID=' <AWS KMS key id>'
export OST_INFRA_MYSQL_HOST=' localhost'
export OST_INFRA_MYSQL_USER=' infra_user'
export OST_INFRA_MYSQL_PASSWORD=' <DB Password>'
export OST_INFRA_MYSQL_PORT=3308
export OST_INFRA_MYSQL_CONNECTION_POOL_SIZE=5
export OST_INFRA_WORKSPACE=' <Workspace directory path>'
Create SSH tunnel to connect to ost infra DB.
ssh -o ExitOnForwardFailure=yes -L 3308:< MySQL Host> :3306 99.80.111.137 -N -f
Create and update platform configuration data
Create platform configuration if not created. [p1]
cd " <app root directory >/ost-infra"
node executables/utils/platform.js --create --platform-id {platformId} --aws-account-id {accountId} --aws-region {region} --env {env} --sub-env {sub_env}
Get platform configuration data in a file (If your system responds to open
command, then the file will open in editor else you have to copy the file path and open it in respective editor). [p2]
cd " <app root directory >/ost-infra"
node executables/utils/platform.js --get --platform-id {platformId} --env {env} --sub-env {sub_env}
Update platform configuration data from the file. [p3]
cd " <app root directory >/ost-infra"
node executables/utils/platform.js --update --platform-id {platformId} --env {env} --sub-env {sub_env}
Create and update application configuration data
Create application configuration if not created yet. [ac1]
cd " <app root directory >/ost-infra"
node executables/utils/app_config.js --create --platform-id {platformId} --env {env} --sub-env {sub_env} --app {app_name}
Get application configuration data in a file (If your system responds to open
command, then the file will open in editor else you have to copy the file path and open it in respective editor). [ac2]
cd " <app root directory >/ost-infra"
node executables/utils/app_config.js --get --platform-id {platformId} --env {env} --sub-env {sub_env} --app {app_name}
Update application configuration data from the file. [ac3]
cd " <app root directory >/ost-infra"
node executables/utils/app_config.js --update --platform-id {platformId} --env {env} --sub-env {sub_env} --app {app_name}
EC2 instances for applications
Create application stack from template (defined in ost-infra/templates/app_setup/production/app_stack_template.json
) [as1]
cd " <app root directory >/ost-infra"
node executables/utils/app_setup.js --create-app-stack --platform-id {platformId} --env {env} --sub-env {sub_env} --app {app_name}
Create multiple instances of single app. [as2]
cd " <app root directory >/ost-infra"
node executables/utils/app_setup.js --create-app-stack --platform-id {platformId} --env {env} --sub-env {sub_env} --app {app_name} --app-name {app_name} --app-type {app/cron} --app-count {number_of_servers}
Run app Configuration changes from Ansible
Setup application server. [a1]
cd " <app root directory >/ost-infra"
node executables/utils/ansible.js --app-setup --platform-id {platformId} --env {env} --sub-env {sub_env} --app {app_name}
Create build for application [a2]
cd " <app root directory >/ost-infra"
node executables/utils/ansible.js --build --platform-id {platformId} --env {env} --sub-env {sub_env} --app {app_name} --branch-name {branch_name}
Deploy build on application servers. [a3]
cd " <app root directory >/ost-infra"
node executables/utils/ansible.js --deploy --platform-id {platformId} --env {env} --sub-env {sub_env} --app {app_name} --build-number {build_number}
Activate systemd services on servers. [a4]
cd " <app root directory >/ost-infra"
node executables/utils/ansible.js --activate-services --platform-id {platformId} --env {env} --sub-env {sub_env} --app {app_name}
Example: Steps to create new app from scratch.
Create platform config if not exists. Follow steps mentioned in p1, p2 and p3
.
Create application configuration first. Follow steps mentioned in ac1, ac2 and ac3
.
Add EC2 instance template for application in file ost-infra/templates/app_setup/production/app_stack_template.json
.
Add cron job configs (if any) to file ost-infra/config/ansible/inventory_configs.js
.
Create AWS config file for the application at the following location ost-infra/config/aws/${env}/${app_name}.json
.
Create application constant JS file at the following location config/aws/{app_name}.js
.
Create EC2 instances for application. Run Step as1
.
Setup EC2 instances for application. Run Step a1
.
Create build for application. Run Step a2
.
Activate systemd services on servers. Run Step a4
.
Deploy build to application servers. Run Step a3
.