Deploy a Cluster through the API¶
On this page
-
Prerequisites
-
Examples
-
Variables for Cluster Creation API Resources
-
Prerequisites
-
Procedures
-
Next Steps
This tutorial manipulates the
Cloud Manager Administration API’s
automation configuration to deploy a
sharded cluster
that is
owned by another user. The tutorial first creates a new project, then a
new user as owner of the project, and then a sharded cluster owned by
the new user. You can create a script to automate these procedures for
use in routine operations.
To perform these steps, you must have sufficient access to Cloud Manager. A
user with the
Project
Owner
role has sufficient access.
The procedures install a cluster with two
shards
. Each
shard comprises a three-member
replica set
. The tutorial
installs one
mongos
and three
config servers
.
Each component of the cluster resides on its own server, requiring a
total of 10 hosts.
The tutorial installs the
MongoDB Agent
on each
host.
Prerequisites¶
Provision ten hosts to serve the components of the
sharded cluster
. For host requirements, see the
Production Notes in the
MongoDB manual.
Each host must provide its
MongoDB Agent
with full
networking access to the hostnames and ports of the MongoDB Agents on
all the other hosts. Each agent runs the command
hostname
-f
to self-identify its hostname and port and report them to Cloud Manager.
Tip
To ensure agents can reach each other,
provision the hosts using Automation
.
This installs the MongoDB Agents with correct network access. Use
this tutorial to reinstall the Automations on those machines.
Examples¶
As you work with the
API
, you can view examples on the
GitHub example page.
Variables for Cluster Creation API Resources¶
The API resources use one or more of these variables. Replace these variables with your desired values before calling these API resources.
Name
|
Type
|
Description
|
PUBLIC-KEY
|
string
|
Your public API Key for your
API
credentials.
|
PRIVATE-KEY
|
string
|
Your
private API Key
for your
API
credentials.
|
cloud.mongodb.com
|
string
|
URL
of your Cloud Manager instance.
|
GROUP-ID
|
string
|
Unique identifier of your project from your
Project Settings
.
|
Prerequisites¶
-
Configure API Access
to enable you to use the
API.
-
Complete the
MongoDB Agent Prerequisites
.
Procedures¶
Create the Group and the User through the API¶
Use the API to create a project.¶
Use the Cloud Manager Administration API to send a
projects
document to create the new project.
The
API
returns a document that includes the project’s
agentApiKey
and
id
.
Record the values of
agentApiKey
and
id
in the returned document.¶
Record these values for use in this procedure and in other procedures
in this tutorial.
Use the API to create a user in the new project.¶
Use the
/users
endpoint to add a user to the new project.
The body of the request should contain a
users
JSON
document with the user’s
information.
Set the user’s
roles.roleName
to
GROUP_OWNER
and the user’s
roles.groupId
set to the new group’s‘
id
.
Install the MongoDB Agent on each Provisioned Host¶
Complete the MongoDB Agent installation procedure on each host.¶
To learn how to install the MongoDB Agent, follow the
procedure for the appropriate platform
.
Confirm the initial state of the automation configuration.¶
When the MongoDB Agent first runs, it downloads the
mms-cluster-config-backup.json
file, which describes the desired
state of the
automation configuration
.
On one of the hosts, navigate to
/var/lib/mongodb-mms-automation/
and open
mms-cluster-config-backup.json
. Confirm that the file’s
version
field is set to
1
. Cloud Manager automatically increments
this field as changes occur.
Deploy the New Cluster¶
To add or update a deployment, retrieve the
configuration
, make
changes as needed, and send the updated configuration though the
API
to Cloud Manager.
The following procedure deploys an updated automation configuration
through the
API
:
Retrieve the automation configuration from Cloud Manager.¶
-
Use the
automationConfig
resource to retrieve the configuration. Issue the following
command, replacing the placeholders with the Variables for Cluster Creation API Resources.
-
Validate the downloaded Automation Configuration file.
Compare the
version
field of the
currentAutomationConfig.json
with that of the Automation
Configuration backup file,
mms-cluster-config-backup.json
. The
version
value is the last element in both
JSON
documents.
You can find this file on any host running the MongoDB Agent at:
-
Linux and macOS:
/var/lib/mongodb-mms-automation/mms-cluster-config-backup.json
-
Windows:
%SystemDrive%\MMSAutomation\versions\mms-cluster-config-backup.json
If the
version
values match, you are working with the current
version of the Automation Configuration file.
Create the top level of the new automation configuration.¶
Create a document with the following fields. As you build the
configuration document, refer the
description of an automation configuration
for detailed explanations
of the settings. For examples, see the MongoDB Labs page.
Add the Monitoring to the automation configuration.¶
In the
monitoringVersions.hostname
field, enter the hostname of
the server where Cloud Manager should install the Monitoring. Use the fully
qualified domain name that running
hostname
-f
on the server
returns, as in the following:
This configuration example also includes the
logPath
field, which
specifies the log location, and
logRotate
, which specifies the
log thresholds.
Add the servers to the automation configuration.¶
This sharded cluster has 10 MongoDB instances, as described in the
Deploy a Cluster through the API
, each running on its own
server. Thus, the automation configuration’s
processes
array will
have 10 documents, one for each MongoDB instance.
The following example adds the first document to the
processes
array. Replace
<process_name_1>
with any name you choose, and
replace
<server1.example.com>
with the
FQDN
of the host.
Add 9 documents: one for each MongoDB instance in your sharded
cluster.
Specify the
args2_6
syntax for the
processes.<args>
field.
See
MongoDB Settings that Automation Supports
for more
information.
Add the sharded cluster topology to the automation configuration.¶
Add two replica set documents to the
replicaSets
array. Add
three members to each document.
Example
This section adds one replica set member to the first replica set
document:
Important
You must include
"protocolVersion":
1
in the root document
for each replica set.
In the
sharding
array, add the replica sets to the shards, and
add the config server replica set name, as in the following:
Send the updated automation configuration.¶
Use the
automationConfig
resource to send the updated automation configuration.
Issue the following command with path to the updated configuration
document and replace the placeholders with the Variables for Cluster Creation API Resources.
Upon successful update of the configuration, the API returns the HTTP
200
OK
status code to indicate the request has succeeded.
Confirm successful update of the automation configuration.¶
Retrieve the automation configuration from Cloud Manager and confirm it
contains the changes. To retrieve the configuration, issue the
following command, replacing the placeholders with the
Variables for Cluster Creation API Resources.
Verify that the configuration update is deployed.¶
Use the
automationStatus
resource to verify the configuration update is fully deployed. Issue
the following command, replacing the value placeholders given in
Variables for Cluster Creation API Resources:
The
curl
command returns a
JSON
object containing the
processes
array and the
goalVersion
key and value. The
processes
array contains a document for each server that hosts a
MongoDB instance. The new configuration is successfully deployed when
all
lastGoalVersionAchieved
fields in the
processes
array
equal the value specified for
goalVersion
.
Example
In this response,
processes[2].lastGoalVersionAchieved
is
behind
goalVersion
. This indicates that the MongoDB instance
at
server3.example.com
is running one version behind the
goalVersion
. Wait several seconds and issue the
curl
command again.
To view the new configuration in the Cloud Manager console, click
Deployment
.
Next Steps¶
To make an additional version of MongoDB available in the cluster,
see
Update the MongoDB Version of a Deployment
.