Skip to main content
Glama

MCP SysOperator

by tarnover
rds.yml9.16 kB
--- # RDS playbook # This playbook sets up the Aurora MySQL database cluster - name: Create Aurora MySQL database cluster hosts: localhost gather_facts: false tasks: - name: Include common variables include_vars: file: "{{ playbook_dir }}/../group_vars/all.yml" - name: Include environment-specific variables include_vars: file: "{{ playbook_dir }}/../group_vars/{{ lookup('env', 'ENVIRONMENT') | default('localstack', true) }}.yml" - name: Load VPC IDs include_vars: file: "{{ playbook_dir }}/../.vpc_ids.yml" - name: Load security group IDs include_vars: file: "{{ playbook_dir }}/../.security_ids.yml" - name: Create DB subnet group use_mcp_tool: server_name: ansible tool_name: aws_rds arguments: action: create_db_subnet_group region: "{{ aws_region }}" dbSubnetGroupName: "{{ project_name }}-db-subnet-group" dbSubnetGroupDescription: "Subnet group for {{ project_name }} database" subnetIds: - "{{ private_subnet_3_id }}" - "{{ private_subnet_4_id }}" tags: "{{ aws_tags | combine({'Name': project_name + '-db-subnet-group'}) }}" register: db_subnet_group_result - name: Create DB parameter group use_mcp_tool: server_name: ansible tool_name: aws_rds arguments: action: create_db_parameter_group region: "{{ aws_region }}" dbParameterGroupName: "{{ project_name }}-db-param-group" dbParameterGroupFamily: "aurora-mysql8.0" description: "Parameter group for {{ project_name }} database" parameters: - parameterName: "max_connections" parameterValue: "200" applyMethod: "pending-reboot" - parameterName: "character_set_server" parameterValue: "utf8mb4" applyMethod: "pending-reboot" - parameterName: "collation_server" parameterValue: "utf8mb4_unicode_ci" applyMethod: "pending-reboot" tags: "{{ aws_tags | combine({'Name': project_name + '-db-param-group'}) }}" register: db_param_group_result when: environment != 'localstack' or not localstack_skip_long_operations - name: Create DB cluster parameter group use_mcp_tool: server_name: ansible tool_name: aws_rds arguments: action: create_db_cluster_parameter_group region: "{{ aws_region }}" dbClusterParameterGroupName: "{{ project_name }}-db-cluster-param-group" dbParameterGroupFamily: "aurora-mysql8.0" description: "Cluster parameter group for {{ project_name }} database" parameters: - parameterName: "character_set_server" parameterValue: "utf8mb4" applyMethod: "pending-reboot" - parameterName: "collation_server" parameterValue: "utf8mb4_unicode_ci" applyMethod: "pending-reboot" tags: "{{ aws_tags | combine({'Name': project_name + '-db-cluster-param-group'}) }}" register: db_cluster_param_group_result when: environment != 'localstack' or not localstack_skip_long_operations - name: Generate random password for database if not provided set_fact: db_password: "{{ lookup('password', '/dev/null length=16 chars=ascii_letters,digits,punctuation') }}" when: db_password == 'ChangeMe123!' - name: Create Aurora MySQL cluster use_mcp_tool: server_name: ansible tool_name: aws_rds arguments: action: create_db_cluster region: "{{ aws_region }}" dbClusterIdentifier: "{{ project_name }}-db-cluster" engine: "{{ db_engine }}" engineVersion: "{{ db_engine_version }}" masterUsername: "{{ db_username }}" masterPassword: "{{ db_password }}" databaseName: "{{ db_name }}" dbSubnetGroupName: "{{ project_name }}-db-subnet-group" vpcSecurityGroupIds: - "{{ db_sg_id }}" dbClusterParameterGroupName: "{{ project_name }}-db-cluster-param-group" backupRetentionPeriod: "{{ db_backup_retention_period }}" port: "{{ db_port }}" storageEncrypted: true deletionProtection: "{{ environment == 'aws' }}" tags: "{{ aws_tags | combine({'Name': project_name + '-db-cluster'}) }}" register: db_cluster_result when: environment != 'localstack' or not localstack_skip_long_operations - name: Set DB cluster ID fact set_fact: db_cluster_id: "{{ db_cluster_result.result.dbClusterIdentifier | default(project_name + '-db-cluster') }}" db_cluster_endpoint: "{{ db_cluster_result.result.endpoint | default(project_name + '-db-cluster.cluster-' + 'dummy' + '.us-east-1.rds.amazonaws.com') }}" db_reader_endpoint: "{{ db_cluster_result.result.readerEndpoint | default(project_name + '-db-cluster.cluster-ro-' + 'dummy' + '.us-east-1.rds.amazonaws.com') }}" - name: Create first Aurora MySQL instance use_mcp_tool: server_name: ansible tool_name: aws_rds arguments: action: create_db_instance region: "{{ aws_region }}" dbInstanceIdentifier: "{{ project_name }}-db-instance-1" dbClusterIdentifier: "{{ db_cluster_id }}" engine: "{{ db_engine }}" dbInstanceClass: "{{ db_instance_class }}" dbParameterGroupName: "{{ project_name }}-db-param-group" availabilityZone: "{{ aws_region }}a" autoMinorVersionUpgrade: true tags: "{{ aws_tags | combine({'Name': project_name + '-db-instance-1'}) }}" register: db_instance_1_result when: environment != 'localstack' or not localstack_skip_long_operations - name: Set DB instance 1 ID fact set_fact: db1_instance_id: "{{ db_instance_1_result.result.dbInstanceIdentifier | default(project_name + '-db-instance-1') }}" db1_endpoint: "{{ db_instance_1_result.result.endpoint | default(project_name + '-db-instance-1.' + 'dummy' + '.us-east-1.rds.amazonaws.com') }}" - name: Create second Aurora MySQL instance use_mcp_tool: server_name: ansible tool_name: aws_rds arguments: action: create_db_instance region: "{{ aws_region }}" dbInstanceIdentifier: "{{ project_name }}-db-instance-2" dbClusterIdentifier: "{{ db_cluster_id }}" engine: "{{ db_engine }}" dbInstanceClass: "{{ db_instance_class }}" dbParameterGroupName: "{{ project_name }}-db-param-group" availabilityZone: "{{ aws_region }}b" autoMinorVersionUpgrade: true tags: "{{ aws_tags | combine({'Name': project_name + '-db-instance-2'}) }}" register: db_instance_2_result when: environment != 'localstack' or not localstack_skip_long_operations and db_multi_az - name: Set DB instance 2 ID fact set_fact: db2_instance_id: "{{ db_instance_2_result.result.dbInstanceIdentifier | default(project_name + '-db-instance-2') }}" db2_endpoint: "{{ db_instance_2_result.result.endpoint | default(project_name + '-db-instance-2.' + 'dummy' + '.us-east-1.rds.amazonaws.com') }}" when: environment != 'localstack' or not localstack_skip_long_operations and db_multi_az - name: Set DB instance 2 ID fact for LocalStack set_fact: db2_instance_id: "{{ project_name }}-db-instance-2" db2_endpoint: "{{ project_name }}-db-instance-2.dummy.us-east-1.rds.amazonaws.com" when: environment == 'localstack' and localstack_skip_long_operations or not db_multi_az - name: Wait for DB cluster to be available use_mcp_tool: server_name: ansible tool_name: aws_rds arguments: action: describe_db_clusters region: "{{ aws_region }}" dbClusterIdentifier: "{{ db_cluster_id }}" register: db_cluster_status until: (db_cluster_status.result.dbClusters | default([]) | length > 0 and db_cluster_status.result.dbClusters[0].status == 'available') or environment == 'localstack' retries: 60 delay: 30 when: environment != 'localstack' or not localstack_skip_long_operations ignore_errors: "{{ environment == 'localstack' }}" - name: Save DB information to file copy: content: | db_cluster_id: {{ db_cluster_id }} db_cluster_endpoint: {{ db_cluster_endpoint }} db_reader_endpoint: {{ db_reader_endpoint }} db1_instance_id: {{ db1_instance_id }} db1_endpoint: {{ db1_endpoint }} db2_instance_id: {{ db2_instance_id }} db2_endpoint: {{ db2_endpoint }} db_name: {{ db_name }} db_username: {{ db_username }} db_password: {{ db_password }} dest: "{{ playbook_dir }}/../.db_info.yml" mode: '0600'

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/tarnover/mcp-sysoperator'

If you have feedback or need assistance with the MCP directory API, please join our Discord server