Пример #1
0
def generate_cluster(config, cluster_name):
    """Generate a StreamAlert cluster file.

    Args:
        config (dict): The loaded config from the 'conf/' directory
        cluster_name (str): The name of the currently generating cluster

    Returns:
        dict: generated Terraform cluster dictionary
    """
    modules = config['clusters'][cluster_name]['modules']
    cluster_dict = infinitedict()

    generate_classifier(cluster_name, cluster_dict, config)

    generate_cluster_cloudwatch_metric_filters(cluster_name, cluster_dict,
                                               config)

    generate_cluster_cloudwatch_metric_alarms(cluster_name, cluster_dict,
                                              config)

    if modules.get('cloudwatch_monitoring', {}).get('enabled'):
        if not generate_monitoring(cluster_name, cluster_dict, config):
            return

    if modules.get('kinesis'):
        if not generate_kinesis_streams(cluster_name, cluster_dict, config):
            return

    outputs = config['clusters'][cluster_name].get('outputs')
    if outputs:
        if not generate_outputs(cluster_name, cluster_dict, config):
            return

    if modules.get('kinesis_events'):
        if not generate_kinesis_events(cluster_name, cluster_dict, config):
            return

    if modules.get('cloudtrail'):
        if not generate_cloudtrail(cluster_name, cluster_dict, config):
            return

    if modules.get('cloudwatch'):
        if not generate_cloudwatch(cluster_name, cluster_dict, config):
            return

    if modules.get('flow_logs'):
        if not generate_flow_logs(cluster_name, cluster_dict, config):
            return

    if modules.get('s3_events'):
        if not generate_s3_events(cluster_name, cluster_dict, config):
            return

    generate_apps(cluster_name, cluster_dict, config)

    return cluster_dict
Пример #2
0
    def test_generate_cloudwatch(self):
        """CLI - Terraform Generate CloudWatch"""
        cloudwatch.generate_cloudwatch('advanced', self.cluster_dict,
                                       self.config)

        # Count the modules for each region - there should be 14 since 1 is excluded
        count = sum(1 for name in self.cluster_dict['module']
                    if name.startswith('cloudwatch_advanced'))
        assert_equal(count, 14)

        expected_config = {
            'cluster': 'advanced',
            'source': 'modules/tf_stream_alert_cloudwatch',
            'region': 'eu-west-1',
            'kinesis_stream_arn': '${module.kinesis_advanced.arn}',
            'cross_account_ids': ['123456789012', '12345678910']
        }

        eu_west_config = self.cluster_dict['module'][
            'cloudwatch_advanced_eu-west-1']
        assert_equal(expected_config, eu_west_config)