associateNode method

Future<AssociateNodeResponse> associateNode({
  1. required List<EngineAttribute> engineAttributes,
  2. required String nodeName,
  3. required String serverName,
})

Associates a new node with the server. For more information about how to disassociate a node, see DisassociateNode.

On a Chef server: This command is an alternative to knife bootstrap.

Example (Chef): aws opsworks-cm associate-node --server-name MyServer --node-name MyManagedNode --engine-attributes "Name=CHEF_ORGANIZATION,Value=default" "Name=CHEF_NODE_PUBLIC_KEY,Value=public-key-pem"

On a Puppet server, this command is an alternative to the puppet cert sign command that signs a Puppet node CSR.

Example (Puppet): aws opsworks-cm associate-node --server-name MyServer --node-name MyManagedNode --engine-attributes "Name=PUPPET_NODE_CSR,Value=csr-pem"

A node can can only be associated with servers that are in a HEALTHY state. Otherwise, an InvalidStateException is thrown. A ResourceNotFoundException is thrown when the server does not exist. A ValidationException is raised when parameters of the request are not valid. The AssociateNode API call can be integrated into Auto Scaling configurations, AWS Cloudformation templates, or the user data of a server's instance.

May throw InvalidStateException. May throw ResourceNotFoundException. May throw ValidationException.

Parameter engineAttributes : Engine attributes used for associating the node.

Attributes accepted in a AssociateNode request for Chef

  • CHEF_ORGANIZATION: The Chef organization with which the node is associated. By default only one organization named default can exist.
  • CHEF_NODE_PUBLIC_KEY: A PEM-formatted public key. This key is required for the chef-client agent to access the Chef API.

Attributes accepted in a AssociateNode request for Puppet

  • PUPPET_NODE_CSR: A PEM-formatted certificate-signing request (CSR) that is created by the node.

Parameter nodeName : The name of the node.

Parameter serverName : The name of the server with which to associate the node.

Implementation

Future<AssociateNodeResponse> associateNode({
  required List<EngineAttribute> engineAttributes,
  required String nodeName,
  required String serverName,
}) async {
  ArgumentError.checkNotNull(engineAttributes, 'engineAttributes');
  ArgumentError.checkNotNull(nodeName, 'nodeName');
  _s.validateStringLength(
    'nodeName',
    nodeName,
    0,
    10000,
    isRequired: true,
  );
  ArgumentError.checkNotNull(serverName, 'serverName');
  _s.validateStringLength(
    'serverName',
    serverName,
    1,
    40,
    isRequired: true,
  );
  final headers = <String, String>{
    'Content-Type': 'application/x-amz-json-1.1',
    'X-Amz-Target': 'OpsWorksCM_V2016_11_01.AssociateNode'
  };
  final jsonResponse = await _protocol.send(
    method: 'POST',
    requestUri: '/',
    exceptionFnMap: _exceptionFns,
    // TODO queryParams
    headers: headers,
    payload: {
      'EngineAttributes': engineAttributes,
      'NodeName': nodeName,
      'ServerName': serverName,
    },
  );

  return AssociateNodeResponse.fromJson(jsonResponse.body);
}