Skip to content

Orchestrator Puppet configuration management #237

@akuzminsky

Description

@akuzminsky

Parent Epic

Part of #232 - Percona Server Puppet Integration

Migrated from infrahouse/terraform-aws-percona-server#32

Description

Puppet manifests for Orchestrator installation and configuration.

Responsibilities

  1. Install Orchestrator package
  2. Configure orchestrator.conf.json
  3. Configure Raft cluster settings
  4. Deploy post-failover hook scripts
  5. Start and manage Orchestrator service

Main Manifest Structure

class percona::orchestrator {
  include percona::orchestrator::install
  include percona::orchestrator::config
  include percona::orchestrator::hooks
  include percona::orchestrator::service
}

Configuration Template

file { '/etc/orchestrator.conf.json':
  ensure  => file,
  content => template('percona/orchestrator.conf.json.erb'),
  notify  => Service['orchestrator'],
}

Key Configuration

{
  "Debug": false,
  "ListenAddress": ":3000",
  "MySQLTopologyUser": "orchestrator",
  "MySQLTopologyPassword": "${orchestrator_password}",
  "RaftEnabled": true,
  "RaftDataDir": "/var/lib/orchestrator/raft",
  "RaftBind": "${private_ip}:10008",
  "RaftNodes": ${raft_nodes_json},
  "SQLite3DataFile": "/var/lib/orchestrator/orchestrator.sqlite3",
  "PostFailoverProcesses": [
    "/usr/local/bin/percona-failover-hook.sh"
  ]
}

Raft Node Discovery

Challenge: Nodes need to know each other's IPs for Raft
Options:

  1. Use DNS (Route53 private zone)
  2. Query ASG for instance IPs
  3. Use DynamoDB for node registration

Acceptance Criteria

  • Orchestrator installed
  • Raft cluster configured
  • Post-failover hooks deployed
  • Service running
  • Web UI accessible

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions