Configuraciones de Terraform para usuarios de OCI Cache
Revisar los requisitos y las recomendaciones para las configuraciones de Terraform utilizadas con los usuarios de OCI Cache.
Requisitos y recomendaciones
oci_redis_redis_cluster_attach_oci_cache_user
oci_redis_redis_cluster_detach_oci_cache_user
oci_cache_users
, se desasocia automáticamente. Sin embargo, la desasociación se modela explícitamente, dadas las limitaciones de la implantación del proveedor de Terraform. Estas limitaciones significan:- Para asociar usuarios de OCI Cache, debe utilizar el recurso
oci_redis_redis_cluster_attach_oci_cache_user
. -
Para desasociar usuarios de OCI Cache, debe eliminarlos del recurso
attach
y agregarlos al recursooci_redis_redis_cluster_detach_oci_cache_user
.
- No especifique el mismo OCID de usuario en los recursos
attach
ydetach
al mismo tiempo. - Al desasociar un usuario de la lista del recurso
attach
, elimine el usuario del recursodetach
y, a continuación, agréguelo al recursodetach
. Del mismo modo, al asociar un usuario mostrado en el recursodetach
, elimine el usuario del recursodetach
y, a continuación, agréguelo al recursoattach
. - Destruya los bloques de recursos
attach
ydetach
si las listasoci_cache_users
están vacías en estos recursos.
Ejemplo de configuración de Terraform para usuarios de OCI Cache
En los siguientes ejemplos se muestra una configuración de Terraform para varios escenarios de usuarios de OCI Cache.
Ejemplo 1: Asociación de dos usuarios de OCI Cache a un cluster de Redis
Para asociar dos OciCacheUsers
existentes a un cluster de Redis, defina un recurso oci_redis_redis_cluster_attach_oci_cache_user
e incluya ambos OCID de usuario en la lista oci_cache_users
.
variable "region" {}
provider "oci" {
auth = "SecurityToken"
config_file_profile = "DEFAULT"
region = "${var.region}"
}
resource "oci_redis_redis_cluster_attach_oci_cache_user" "attach_existing_users" {
redis_cluster_id = "OCID1.rediscluster.oc1.phx..<unique_ID>"
//cluster-id
oci_cache_users = [
"OCID1.ocicacheuser.oc1.phx..<unique_ID>", //user-1
"OCID1.ocicacheuser.oc1.phx..<unique_ID>". // user-2
]
}
Esta configuración de Terraform asocia user-1
y user-2
al cluster de Redis especificado.
Ejemplo 2: Desasociación de un usuario de OCI Cache de un cluster de Redis
Para desasociar un usuario, elimine user-2
de la lista oci_cache_users
del recurso attach
y, a continuación, agréguelo a un recurso oci_redis_redis_cluster_detach_oci_cache_user
nuevo o existente.
variable "region" {}
provider "oci" {
auth = "SecurityToken"
config_file_profile = "DEFAULT"
region = "${var.region}"
}
resource "oci_redis_redis_cluster_attach_oci_cache_user" "attach_existing_users" {
redis_cluster_id = "OCID1.rediscluster.oc1.phx..<unique_ID>"
//cluster-id
oci_cache_users = [
"OCID1.ocicacheuser.oc1.phx..<unique_ID>", //user-1
]
}
resource "oci_redis_redis_cluster_detach_oci_cache_user" "detach_existing_users" {
redis_cluster_id = "OCID1.rediscluster.oc1.phx..<unique_ID>"
oci_cache_users = [
"OCID1.ocicacheuser.oc1.phx..<unique_ID>", // user-2
]
}
Esta configuración de Terraform asocia user-1
al cluster de Redis especificado y desasocia user-2
moviéndolo del recurso attach
y agregándolo al recurso detach
.
Ejemplo 3: Desasociación de todos los usuarios de OCI Cache de un cluster de Redis
Para desasociar todos los recursos OciCacheUser
asociados de un cluster de Redis, mueva todos los OCID de usuario del recurso attach
al recurso detach
. A continuación, el recurso attach
tiene una lista vacía de OciCacheUsers
y se debe eliminar.
variable "region" {}
provider "oci" {
auth = "SecurityToken"
config_file_profile = "DEFAULT"
region = "${var.region}"
}
// Attach resource is removed since there are no users left to attach.
resource "oci_redis_redis_cluster_detach_oci_cache_user" "detach_existing_users" {
redis_cluster_id = "OCID1.rediscluster.oc1.phx..<unique_ID"
//cluster-id
oci_cache_users = [
"OCID1.ocicacheuser.oc1.phx..<unique_ID>", // user-2
"OCID1.ocicacheuser.oc1.phx..<unique_ID>", //user-1
]
}
Esta configuración de Terraform separa todos los OciCacheUsers
del cluster de Redis colocándolos en el recurso detach
y elimina el recurso attach
.
Ejemplo 4: asociación, desasociación y nueva asociación de un usuario a un cluster de Redis
- Asociar
user-1
: para asociaruser-1
, defina el recursooci_redis_redis_cluster_attach_oci_cache_user
con el OCIDuser-1
en la lista.### attach user-1 variable "region" {} provider "oci" { auth = "SecurityToken" config_file_profile = "DEFAULT" region = "${var.region}" } resource "oci_redis_redis_cluster_attach_oci_cache_user" "attach_existing_users" { redis_cluster_id = "OCID1.rediscluster.oc1.phx..<unique_ID>" //cluster-id oci_cache_users = [ "OCID1.ocicacheuser.oc1.phx..<unique_ID>", //user-1 ] }
Esta configuración de Terraform asocia
user-1
al cluster de Redis. - Desasociar
user-1
: para desasociaruser-1
, mueva su OCID del recursoattach
a un nuevo recursodetach
. A continuación, elimine el recursoattach
porque la listaoci_cache_users
ahora está vacía.### detach user-1 variable "region" {} provider "oci" { auth = "SecurityToken" config_file_profile = "DEFAULT" region = "${var.region}" } # attach resource is nolonger needed. resource "oci_redis_redis_cluster_detach_oci_cache_user" "detach_existing_users" { redis_cluster_id = "OCID1.rediscluster.oc1.phx..<unique_ID>" //cluster-id oci_cache_users = [ "ocid1.ocicacheuser.oc1.phx..<unique_ID>", //user-1 ] }
Esta configuración de Terraform desasocia
user-1
del cluster de Redis. - Volver a asociar
user-1
: para volver a asociaruser-1
, elimine el OCID del recursodetach
y vuelva a crear el recursoattach
con un OCID. A continuación, elimine el recursodetach
porque la listaoci_cache_users
ahora está vacía.### attach user-1 again variable "region" {} provider "oci" { auth = "SecurityToken" config_file_profile = "DEFAULT" region = "${var.region}" } resource "oci_redis_redis_cluster_attach_oci_cache_user" "attach_existing_users" { redis_cluster_id = "OCID1.rediscluster.oc1.phx..<unique_ID>" //cluster-id oci_cache_users = [ "OCID1.ocicacheuser.oc1.phx..<unique_ID>", //user-1 ] }
Esta configuración de Terraform vuelve a conectar
user-1
al cluster de Redis.
Ejemplo 5: uso del mismo usuario de OCI Cache en los recursos de asociación y desasociación
oci_cache_user
(por ejemplo, user-1
) en los recursos attach
y detach
en el mismo ciclo de aplicación, utilice la siguiente configuración de Terraform:### attach user-1
variable "region" {}
provider "oci" {
auth = "SecurityToken"
config_file_profile = "DEFAULT"
region = "${var.region}"
}
resource "oci_redis_redis_cluster_attach_oci_cache_user" "attach_existing_users" {
redis_cluster_id = "OCID1.rediscluster.oc1.phx..<unique_ID>"
//cluster-id
oci_cache_users = [
"OCID1.ocicacheuser.oc1.phx..<unique_ID>", //user-1
]
}
resource "oci_redis_redis_cluster_detach_oci_cache_user" "detach_existing_users" {
redis_cluster_id = "OCID1.rediscluster.oc1.phx..<unique_ID>"
oci_cache_users = [
"OCID1.ocicacheuser.oc1.phx..<unique_ID>", //user-1
]
}
No se recomienda incluir el mismo OCID
oci_cache_user
en los recursos attach
y detach
del mismo ciclo porque, aunque Terraform permite esta configuración, se produce una operación no (neutral) en la que las operaciones de conexión y desasociación se cancelan entre sí en el único ciclo de aplicación.Ejemplo 6: creación de un cluster de Redis, usuario de OCI Cache y asociación del usuario al cluster
OciCacheUser
, y asociar el usuario al cluster, utilice la siguiente configuración de Terraform:
variable "region" {}
variable "compartment_ocid" {}
variable "redis_cluster_display_name" {
default = "test-tf-redis-cluster"
}
variable "redis_cluster_node_count" {
default = 2
}
variable "redis_cluster_node_memory_in_gbs" {
default = 2.0
}
variable "redis_cluster_software_version" {
default = "VALKEY_7_2"
}
variable "redis_cluster_freeform_tags" {
default = { "bar-key" = "value" }
}
variable "oci_cache_user_acl_string" {
default = "~* &* +discard +xsetid +zscore +hdel +bitpos +pttl +rpoplpush +mget +decr +unlink +pubsub
+zrangebylex +auth +rpush +zlexcount +zrangestore +geopos +lset +zremrangebyrank +scard +hexists +hmget +blmpop
+lastsave +fcall_ro +smismember +pexpiretime +llen +function +smembers +zrevrangebyscore +hstrlen +blpop +scan
+lpos +pexpireat +sunsubscribe +zcard +hset +geodist +lrange +flushdb +spop +object +xack +restore +renamenx
+mset +zinterstore +bzmpop +zinter +setnx +pexpire +smove +bitfield +xdel +zrange +lindex +srem +bitcount
+incrbyfloat +incrby +quit +lpushx +spublish +expiretime +zadd +srandmember +getset +monitor +rpop +zrank
+pfcount +geosearch +randomkey +setex +zrangebyscore +bitfield_ro +strlen +xlen +zintercard +xadd +zunionstore
+xread +expireat +zdiffstore +sunionstore +zscan +set +move +rename +time +msetnx +readonly +setbit +sunion
+hlen +brpop +replconf +unwatch +psetex +punsubscribe +watch +publish +zremrangebyscore +get +psubscribe
+sismember +persist +decrby +eval_ro +script +copy +lpop +zunion +zpopmax +hincrby +geoadd +fcall +multi +pfadd
+georadius_ro +hincrbyfloat +sort +dbsize +lolwut +zremrangebylex +hsetnx +xreadgroup +lmpop +swapdb +bitop
+exists +zrevrangebylex +pfdebug +hgetall +xinfo +sdiffstore +zmpop +lrem +keys +lpush +incr +xrevrange
+slowlog +sadd +getdel +getbit +sintercard +cluster +ltrim +hkeys +sscan +xtrim +xrange +evalsha_ro +hello
+sinterstore +substr +zmscore +blmove +zrandmember +subscribe +xclaim +pfselftest +exec +zrem +evalsha
+geosearchstore +hmset +ping +hscan +georadius +hvals +rpushx +unsubscribe +dump +georadiusbymember +touch
+zpopmin +command +zdiff +lcs +geohash +type +del +linsert +role +xgroup +bzpopmax +hrandfield +eval +readwrite
+append +info +client +zrevrange +xpending +wait +bzpopmin +sinter +select +restore-asking +latency +pfmerge
+getex +asking +xautoclaim +sdiff +zrevrank +zincrby +ttl +zcount +setrange +sort_ro +getrange
+georadiusbymember_ro +echo +flushall +ssubscribe +expire +hget +brpoplpush +lmove"
}
variable "oci_cache_user_description" {
default = "Default Cache user"
}
variable "oci_cache_user_status" {
default = "ON"
}
provider "oci" {
auth = "SecurityToken"
config_file_profile = "DEFAULT"
region = "${var.region}"
}
resource "oci_core_vcn" "test_vcn" {
cidr_block = "10.0.0.0/16"
compartment_id = "${var.compartment_ocid}"
}
resource "oci_core_security_list" "test_security_list" {
compartment_id = "${var.compartment_ocid}"
vcn_id = oci_core_vcn.test_vcn.id
display_name = "redis-security-list"
egress_security_rules {
destination = "0.0.0.0/0"
protocol = "17" // UDP
stateless = true
}
ingress_security_rules {
protocol = "6" // TCP
source = "0.0.0.0/0"
stateless = false
}
}
resource "oci_core_subnet" "test_subnet" {
cidr_block = "10.0.0.0/24"
compartment_id = "${var.compartment_ocid}"
vcn_id = oci_core_vcn.test_vcn.id
security_list_ids = [oci_core_security_list.test_security_list.id]
}
resource "oci_redis_redis_cluster" "test_redis_cluster" {
compartment_id = "${var.compartment_ocid}"
display_name = var.redis_cluster_display_name
node_count = var.redis_cluster_node_count
node_memory_in_gbs = var.redis_cluster_node_memory_in_gbs
software_version = var.redis_cluster_software_version
subnet_id = oci_core_subnet.test_subnet.id
freeform_tags = var.redis_cluster_freeform_tags
}
resource "oci_redis_oci_cache_user" "default_oci_cache_user" {
compartment_id = "${var.compartment_ocid}"
name = "default"
description = var.oci_cache_user_description
acl_string = var.oci_cache_user_acl_string
authentication_mode {
authentication_type = "PASSWORD"
hashed_passwords = ["741f67765bef6f01f37bf5cb1724509a83409324efa6ad258***************"]
}
status = var.oci_cache_user_status
depends_on = [oci_redis_redis_cluster.test_redis_cluster]
}
resource "oci_redis_redis_cluster_attach_oci_cache_user" "attach_default_user" {
redis_cluster_id = oci_redis_redis_cluster.test_redis_cluster.id
oci_cache_users = [oci_redis_oci_cache_user.default_oci_cache_user.id]
depends_on = [oci_redis_oci_cache_user.default_oci_cache_user]
}
output "default_cache_user_id" {
value = oci_redis_oci_cache_user.default_oci_cache_user.id
}