Repository - https://github.com/project-sunbird/sunbird-devops
Cloud specific ansible role
We will need to create an OCI a CSP specific ansible role which can perform tasks such as upload / download / delete of files and folders etc.
Take a look at one of the existing cloud provider role such as AWS / GCP to understand what all operations are required as part of the role.
Cloud specific Elasticsearch plugin
We will need to create an OCI a CSP specific ansible role which can perform elasticsearch snapshot
Take a look at one of the existing cloud provider role such as AWS / GCP to understand the snapshot approach
Under the hood, we are using the cloud provider plugin for elasticsearch snapshot - https://www.elastic.co/guide/en/elasticsearch/plugins/6.8/repository.html
The plugin gets installed and configured using the ansible role
Ansible tasks related to storage buckets
Below is a sample block which uploads to AWS S3 bucket (https://github.com/project-sunbird/sunbird-devops/blob/release-5.1.0/ansible/artifacts-upload.yml#L30-L41 )
Code Block |
---|
- name: upload artifact to aws s3 include_role: name: aws-cloud-storage tasks_from: upload.yml vars: local_file_or_folder_path: "{{ artifact_path }}" s3_bucket_name: "{{ cloud_storage_artifacts_bucketname }}" s3_path: "{{ artifact }}" aws_default_region: "{{ cloud_public_storage_region }}" aws_access_key_id: "{{ cloud_artifact_storage_accountname }}" aws_secret_access_key: "{{ cloud_artifact_storage_secret }}" when: cloud_service_provider == "aws" |
In order to support OCIa new CSP, we will need to add a similar block which can invoke the OCI CSP specific roles and upload to OCI CSP storage buckets
Below is the list of files that need to be modified to include the OCI CSP storage ansible role
Code Block |
---|
ansible/bootstrap.yml ansible/dial_upload-schema.yml ansible/uploadFAQs.yml ansible/deploy-plugins.yml ansible/desktop-faq-upload.yml ansible/artifacts-upload.yml ansible/es.yml ansible/kp_upload-schema.yml ansible/roles/prometheus-backup-v2/tasks/main.yml ansible/roles/postgresql-backup/tasks/main.yml ansible/roles/prometheus-restore/tasks/main.yml ansible/roles/cert-templates/tasks/main.yml ansible/roles/prometheus-backup/tasks/main.yml ansible/roles/cassandra-backup/tasks/main.yml ansible/roles/postgres-managed-service-restore/tasks/main.yml ansible/roles/desktop-deploy/tasks/main.yml ansible/roles/cassandra-restore/tasks/main.yml ansible/roles/jenkins-backup-upload/tasks/main.yml ansible/roles/mongodb-backup/tasks/main.yml ansible/roles/redis-backup/tasks/main.yml ansible/roles/postgresql-restore/tasks/main.yml ansible/roles/es6/tasks/main.yml ansible/roles/log-es6/tasks/main.yml ansible/roles/postgres-managed-service-backup/tasks/main.yml ansible/roles/grafana-backup/tasks/main.yml ansible/assets-upload.yml ansible/artifacts-download.yml ansible/plugins.yml |
Ansible Variables Private Repo Templates
All the cloud specific variables (for example, bucket name, access key, secret key etc.) are provided to adopters using ansible variable template files
The ansible variable template files need to be updated to include OCI CSP specific variables so that a user is aware on what variables need to be filled based on the cloud provider
The templates are located here - https://github.com/project-sunbird/sunbird-devops/tree/release-5.1.0/private_repo/ansible/inventory/dev
An adopter updates all the files mentioned in the above url which also includes the cloud specific variables
Repository - https://github.com/project-sunbird/sunbird-learning-platform/
The implementation is same as the previous section (no private repo template in this repo, its part of the previous section)
Below is the list of files that require the changes
Code Block |
---|
ansible/artifacts-upload.yml ansible/roles/cassandra-backup/tasks/main.yml ansible/roles/cassandra-restore/tasks/main.yml ansible/roles/redis-backup/tasks/main.yml ansible/roles/neo4j-backup/tasks/main.yml ansible/roles/neo4j-restore/tasks/main.yml ansible/roles/redis-restore/tasks/main.yml ansible/artifacts-download.yml ansible/es_backup.yml |
Repository - https://github.com/Sunbird-Obsrv/sunbird-data-pipeline
The implementation is same as the previous section (no private repo template in this repo, its part of the previous section)
Below is the list of files that require the changes
...