solution/operations/sls-audit/main.tf (104 lines of code) (raw):

provider "alicloud" { alias = "ma" region = var.region } # assumerole到日志账号 provider "alicloud" { alias = "logarchiveprovider" access_key = var.access_key secret_key = var.secret_key region = var.region assume_role { role_arn = format("acs:ram::%s:role/ResourceDirectoryAccountAccessRole", var.log_account_id) session_name = format("%sLandingZoneSetup", var.log_account_id) session_expiration = 999 } } # 配置日志审计 resource "alicloud_log_audit" "logaudit" { provider = alicloud.logarchiveprovider display_name = "tf-audit" aliuid = var.log_account_id variable_map = { "bastion_enabled" = "true", "bastion_ttl" = "180", "actiontrail_enabled" = "true", "actiontrail_ttl" = "180" } multi_account = var.member_account_list resource_directory_type="custom" } # 配置SLS的Project resource "alicloud_log_project" "os_operation_log" { provider = alicloud.logarchiveprovider name = var.log_project_name description = "archive all account os operation log" } # 配置SLS的Logstore resource "alicloud_log_store" "os_operation_logstore" { provider = alicloud.logarchiveprovider project = alicloud_log_project.os_operation_log.name name = var.log_project_logstore_name shard_count = 3 auto_split = true max_split_shard_count = 60 append_meta = true } # 索引 resource "alicloud_log_store_index" "os_operation_index" { provider = alicloud.logarchiveprovider project = alicloud_log_project.os_operation_log.name logstore = alicloud_log_store.os_operation_logstore.name full_text { case_sensitive = true token = "#$%^*\r\n" } field_search { name = "terraform" enable_analytics = true } } ################### #log machine group# ################### resource "alicloud_log_machine_group" "os_operation_group" { provider = alicloud.logarchiveprovider project = alicloud_log_project.os_operation_log.name name = "tf-machine-group" identify_type = "userdefined" topic = "terraform" identify_list = var.userdefined } ################### #log tail config # ################### resource "alicloud_logtail_config" "example" { provider = alicloud.logarchiveprovider project = alicloud_log_project.os_operation_log.name logstore = alicloud_log_store.os_operation_logstore.name input_type = "file" log_sample = "test" name = "tf-log-config" output_type = "LogService" # https://www.alibabacloud.com/help/zh/log-service/latest/logtail-configurations#table-xuw-zvz-tp7 参数 input_detail = <<EOF { "discardUnmatch": false, "enableRawLog": true, "fileEncoding": "gbk", "filePattern": "${var.file_pattern}", "logPath": "${var.file_path}", "logType": "json_log", "maxDepth": 10, "topicFormat": "default" } EOF } resource "alicloud_logtail_attachment" "this" { provider = alicloud.logarchiveprovider project = alicloud_log_project.os_operation_log.name logtail_config_name = concat(alicloud_logtail_config.example.*.name, [""])[0] machine_group_name = concat(alicloud_log_machine_group.os_operation_group.*.name, [""])[0] } ################### #ecs config # ################### resource "alicloud_instance" "default" { provider = alicloud.ma # 可用区,eg: cn-beijing-i security_groups = [var.securitygroup] instance_type = var.instancetype # 镜像名称,自定义镜像 image_id = var.image_id vswitch_id = var.vswitch password = var.instance_password internet_max_bandwidth_out = var.internet_max_bandwidth_out # 计费模式. 注意:公司测试账号无法创建按量资源,只能开包年包月 instance_charge_type = var.instance_charge_type period_unit = var.period_unit period = var.period force_delete = true user_data = local.user_data }