Compare commits
6 Commits
e3571e6d74
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 86f733b118 | |||
| 9f04b70cd9 | |||
| e3816d8948 | |||
| 49f0002fc6 | |||
| 8cfdb02186 | |||
| 9dc64d5497 |
2
.gitignore
vendored
2
.gitignore
vendored
@@ -1 +1 @@
|
||||
providers/aws-credentials.txt
|
||||
providers/provider-family-aws/aws-credentials.txt
|
||||
14
README.md
14
README.md
@@ -1,14 +0,0 @@
|
||||
- https://marketplace.upbound.io/providers/upbound/provider-family-aws/v2.2.0
|
||||
- https://marketplace.upbound.io/providers/upbound/provider-aws-s3/
|
||||
- https://marketplace.upbound.io/providers/upbound/provider-aws-iam/v2.2.0
|
||||
- https://marketplace.upbound.io/providers/upbound/provider-aws-account/v2.2.0
|
||||
- https://marketplace.upbound.io/providers/upbound/provider-aws-eks/v2.2.0
|
||||
- https://marketplace.upbound.io/providers/upbound/provider-aws-rds/v2.2.0
|
||||
- https://marketplace.upbound.io/providers/upbound/provider-aws-vpc/v2.2.0
|
||||
- https://marketplace.upbound.io/providers/upbound/provider-aws-acm/v2.2.0
|
||||
- https://marketplace.upbound.io/providers/upbound/provider-aws-budgets/v2.2.0
|
||||
- https://marketplace.upbound.io/providers/upbound/provider-aws-ec2/v2.2.0
|
||||
- https://marketplace.upbound.io/providers/upbound/provider-aws-elbv2/v2.2.0
|
||||
- https://marketplace.upbound.io/providers/upbound/provider-aws-organizations/v2.2.0
|
||||
- https://marketplace.upbound.io/providers/upbound/provider-aws-redshift/v2.2.0
|
||||
- https://marketplace.upbound.io/providers/upbound/provider-aws-route53/v2.2.0
|
||||
6
functions/patch-and-transform.yaml
Normal file
6
functions/patch-and-transform.yaml
Normal file
@@ -0,0 +1,6 @@
|
||||
apiVersion: pkg.crossplane.io/v1
|
||||
kind: Function
|
||||
metadata:
|
||||
name: function-patch-and-transform
|
||||
spec:
|
||||
package: xpkg.crossplane.io/crossplane-contrib/function-patch-and-transform:v0.8.2
|
||||
2
providers/provider-argocd/README.md
Normal file
2
providers/provider-argocd/README.md
Normal file
@@ -0,0 +1,2 @@
|
||||
- https://marketplace.upbound.io/providers/crossplane-contrib/provider-argocd/latest
|
||||
- https://github.com/crossplane-contrib/provider-argocd
|
||||
6
providers/provider-argocd/provider-argocd.yaml
Normal file
6
providers/provider-argocd/provider-argocd.yaml
Normal file
@@ -0,0 +1,6 @@
|
||||
apiVersion: pkg.crossplane.io/v1
|
||||
kind: Provider
|
||||
metadata:
|
||||
name: crossplane-contrib-provider-argocd
|
||||
spec:
|
||||
package: xpkg.upbound.io/crossplane-contrib/provider-argocd:v0.14.1
|
||||
16
providers/provider-family-aws/README.md
Normal file
16
providers/provider-family-aws/README.md
Normal file
@@ -0,0 +1,16 @@
|
||||
- https://marketplace.upbound.io/providers/upbound/provider-family-aws/latest
|
||||
- https://github.com/crossplane-contrib/provider-upjet-aws
|
||||
|
||||
- https://marketplace.upbound.io/providers/upbound/provider-aws-account/latest
|
||||
- https://marketplace.upbound.io/providers/upbound/provider-aws-acm/latest
|
||||
- https://marketplace.upbound.io/providers/upbound/provider-aws-budgets/latest
|
||||
- https://marketplace.upbound.io/providers/upbound/provider-aws-ec2/latest
|
||||
- https://marketplace.upbound.io/providers/upbound/provider-aws-eks/latest
|
||||
- https://marketplace.upbound.io/providers/upbound/provider-aws-elbv2/latest
|
||||
- https://marketplace.upbound.io/providers/upbound/provider-aws-iam/latest
|
||||
- https://marketplace.upbound.io/providers/upbound/provider-aws-organizations/latest
|
||||
- https://marketplace.upbound.io/providers/upbound/provider-aws-rds/latest
|
||||
- https://marketplace.upbound.io/providers/upbound/provider-aws-redshift/latest
|
||||
- https://marketplace.upbound.io/providers/upbound/provider-aws-route53/latest
|
||||
- https://marketplace.upbound.io/providers/upbound/provider-aws-s3/
|
||||
- https://marketplace.upbound.io/providers/upbound/provider-aws-vpc/latest
|
||||
@@ -0,0 +1,13 @@
|
||||
apiVersion: ec2.aws.m.upbound.io/v1beta1
|
||||
kind: Instance
|
||||
metadata:
|
||||
name: imported-ec2-instance
|
||||
annotations:
|
||||
crossplane.io/external-name: i-037556a7512bd1f4b
|
||||
spec:
|
||||
managementPolicies: ["Observe"]
|
||||
forProvider:
|
||||
region: eu-west-3
|
||||
providerConfigRef:
|
||||
name: default
|
||||
kind: ProviderConfig
|
||||
17
providers/provider-family-aws/resources/ec2/test.yaml
Normal file
17
providers/provider-family-aws/resources/ec2/test.yaml
Normal file
@@ -0,0 +1,17 @@
|
||||
apiVersion: ec2.aws.m.upbound.io/v1beta1
|
||||
kind: Instance
|
||||
metadata:
|
||||
name: imported-ec2-instance
|
||||
annotations:
|
||||
crossplane.io/external-name: i-037556a7512bd1f4b
|
||||
spec:
|
||||
managementPolicies: ["*"]
|
||||
forProvider:
|
||||
region: eu-west-3
|
||||
tags:
|
||||
company: mathod
|
||||
project: app1
|
||||
environment: production
|
||||
providerConfigRef:
|
||||
name: default
|
||||
kind: ProviderConfig
|
||||
@@ -0,0 +1,184 @@
|
||||
apiVersion: apiextensions.crossplane.io/v1
|
||||
kind: Composition
|
||||
metadata:
|
||||
name: s3bucket.aws.mathod.io
|
||||
labels:
|
||||
provider: aws
|
||||
type: s3
|
||||
spec:
|
||||
compositeTypeRef:
|
||||
apiVersion: mathod.io/v1alpha1
|
||||
kind: XObjectStorage
|
||||
|
||||
mode: Pipeline
|
||||
|
||||
pipeline:
|
||||
- step: patch-and-transform
|
||||
functionRef:
|
||||
name: function-patch-and-transform
|
||||
input:
|
||||
apiVersion: pt.fn.crossplane.io/v1beta1
|
||||
kind: Resources
|
||||
resources:
|
||||
# Bucket S3
|
||||
- name: s3-bucket
|
||||
base:
|
||||
apiVersion: s3.aws.m.upbound.io/v1beta1
|
||||
kind: Bucket
|
||||
spec:
|
||||
forProvider:
|
||||
region: eu-west-1
|
||||
providerConfigRef:
|
||||
name: default
|
||||
kind: ProviderConfig
|
||||
patches:
|
||||
- type: FromCompositeFieldPath
|
||||
fromFieldPath: spec.parameters.bucketName
|
||||
toFieldPath: metadata.name
|
||||
- type: FromCompositeFieldPath
|
||||
fromFieldPath: spec.parameters.region
|
||||
toFieldPath: spec.forProvider.region
|
||||
- type: ToCompositeFieldPath
|
||||
fromFieldPath: status.atProvider.arn
|
||||
toFieldPath: status.bucketArn
|
||||
- type: ToCompositeFieldPath
|
||||
fromFieldPath: status.atProvider.bucketDomainName
|
||||
toFieldPath: status.bucketDomain
|
||||
|
||||
# Configuration du versioning
|
||||
- name: bucket-versioning
|
||||
base:
|
||||
apiVersion: s3.aws.m.upbound.io/v1beta1
|
||||
kind: BucketVersioning
|
||||
spec:
|
||||
forProvider:
|
||||
region: eu-west-1
|
||||
bucketRef:
|
||||
name: ""
|
||||
versioningConfiguration:
|
||||
status: Disabled
|
||||
providerConfigRef:
|
||||
name: default
|
||||
kind: ProviderConfig
|
||||
patches:
|
||||
- type: FromCompositeFieldPath
|
||||
fromFieldPath: spec.parameters.region
|
||||
toFieldPath: spec.forProvider.region
|
||||
- type: FromCompositeFieldPath
|
||||
fromFieldPath: spec.parameters.bucketName
|
||||
toFieldPath: spec.forProvider.bucketRef.name
|
||||
- type: FromCompositeFieldPath
|
||||
fromFieldPath: spec.parameters.versioning
|
||||
toFieldPath: spec.forProvider.versioningConfiguration.status
|
||||
transforms:
|
||||
- type: convert
|
||||
convert:
|
||||
toType: string
|
||||
- type: map
|
||||
map:
|
||||
"true": Enabled
|
||||
"false": Suspended
|
||||
|
||||
# Configuration du chiffrement
|
||||
- name: bucket-encryption
|
||||
base:
|
||||
apiVersion: s3.aws.m.upbound.io/v1beta1
|
||||
kind: BucketServerSideEncryptionConfiguration
|
||||
spec:
|
||||
forProvider:
|
||||
region: eu-west-1
|
||||
bucketRef:
|
||||
name: ""
|
||||
rule:
|
||||
- applyServerSideEncryptionByDefault:
|
||||
sseAlgorithm: AES256
|
||||
providerConfigRef:
|
||||
name: default
|
||||
kind: ProviderConfig
|
||||
patches:
|
||||
- type: FromCompositeFieldPath
|
||||
fromFieldPath: spec.parameters.region
|
||||
toFieldPath: spec.forProvider.region
|
||||
- type: FromCompositeFieldPath
|
||||
fromFieldPath: spec.parameters.bucketName
|
||||
toFieldPath: spec.forProvider.bucketRef.name
|
||||
- type: FromCompositeFieldPath
|
||||
fromFieldPath: spec.parameters.encryption
|
||||
toFieldPath: spec.forProvider.rule[0].applyServerSideEncryptionByDefault.sseAlgorithm
|
||||
transforms:
|
||||
- type: convert
|
||||
convert:
|
||||
toType: string
|
||||
- type: map
|
||||
map:
|
||||
"true": AES256
|
||||
"false": ""
|
||||
|
||||
# Bloquer l'accès public
|
||||
- name: bucket-public-access-block
|
||||
base:
|
||||
apiVersion: s3.aws.m.upbound.io/v1beta1
|
||||
kind: BucketPublicAccessBlock
|
||||
spec:
|
||||
forProvider:
|
||||
region: eu-west-1
|
||||
bucketRef:
|
||||
name: ""
|
||||
blockPublicAcls: true
|
||||
blockPublicPolicy: true
|
||||
ignorePublicAcls: true
|
||||
restrictPublicBuckets: true
|
||||
providerConfigRef:
|
||||
name: default
|
||||
kind: ProviderConfig
|
||||
patches:
|
||||
- type: FromCompositeFieldPath
|
||||
fromFieldPath: spec.parameters.region
|
||||
toFieldPath: spec.forProvider.region
|
||||
- type: FromCompositeFieldPath
|
||||
fromFieldPath: spec.parameters.bucketName
|
||||
toFieldPath: spec.forProvider.bucketRef.name
|
||||
- type: FromCompositeFieldPath
|
||||
fromFieldPath: spec.parameters.publicAccess
|
||||
toFieldPath: spec.forProvider.blockPublicAcls
|
||||
transforms:
|
||||
- type: convert
|
||||
convert:
|
||||
toType: string
|
||||
- type: map
|
||||
map:
|
||||
"true": false
|
||||
"false": true
|
||||
- type: FromCompositeFieldPath
|
||||
fromFieldPath: spec.parameters.publicAccess
|
||||
toFieldPath: spec.forProvider.blockPublicPolicy
|
||||
transforms:
|
||||
- type: convert
|
||||
convert:
|
||||
toType: string
|
||||
- type: map
|
||||
map:
|
||||
"true": false
|
||||
"false": true
|
||||
- type: FromCompositeFieldPath
|
||||
fromFieldPath: spec.parameters.publicAccess
|
||||
toFieldPath: spec.forProvider.ignorePublicAcls
|
||||
transforms:
|
||||
- type: convert
|
||||
convert:
|
||||
toType: string
|
||||
- type: map
|
||||
map:
|
||||
"true": false
|
||||
"false": true
|
||||
- type: FromCompositeFieldPath
|
||||
fromFieldPath: spec.parameters.publicAccess
|
||||
toFieldPath: spec.forProvider.restrictPublicBuckets
|
||||
transforms:
|
||||
- type: convert
|
||||
convert:
|
||||
toType: string
|
||||
- type: map
|
||||
map:
|
||||
"true": false
|
||||
"false": true
|
||||
@@ -0,0 +1,54 @@
|
||||
apiVersion: apiextensions.crossplane.io/v2
|
||||
kind: CompositeResourceDefinition
|
||||
metadata:
|
||||
name: xobjectstorages.mathod.io
|
||||
spec:
|
||||
scope: Namespaced
|
||||
group: mathod.io
|
||||
names:
|
||||
kind: XObjectStorage
|
||||
plural: xobjectstorages
|
||||
versions:
|
||||
- name: v1alpha1
|
||||
served: true
|
||||
referenceable: true
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
type: object
|
||||
properties:
|
||||
spec:
|
||||
type: object
|
||||
properties:
|
||||
parameters:
|
||||
type: object
|
||||
properties:
|
||||
bucketName:
|
||||
type: string
|
||||
description: "Nom du bucket S3"
|
||||
region:
|
||||
type: string
|
||||
description: "Région AWS"
|
||||
default: "eu-west-1"
|
||||
versioning:
|
||||
type: boolean
|
||||
description: "Activer le versioning"
|
||||
default: false
|
||||
encryption:
|
||||
type: boolean
|
||||
description: "Activer le chiffrement"
|
||||
default: true
|
||||
publicAccess:
|
||||
type: boolean
|
||||
description: "Autoriser l'accès public"
|
||||
default: false
|
||||
required:
|
||||
- bucketName
|
||||
required:
|
||||
- parameters
|
||||
status:
|
||||
type: object
|
||||
properties:
|
||||
bucketArn:
|
||||
type: string
|
||||
bucketDomain:
|
||||
type: string
|
||||
@@ -0,0 +1,15 @@
|
||||
apiVersion: mathod.io/v1alpha1
|
||||
kind: XObjectStorage
|
||||
metadata:
|
||||
name: my-s3-bucket-example
|
||||
namespace: crossplane-system
|
||||
spec:
|
||||
parameters:
|
||||
bucketName: app1-bucket-mathod-93150
|
||||
region: eu-west-1
|
||||
versioning: true
|
||||
encryption: true
|
||||
publicAccess: false
|
||||
crossplane:
|
||||
compositionRef:
|
||||
name: s3bucket.aws.mathod.io
|
||||
@@ -0,0 +1,16 @@
|
||||
---
|
||||
apiVersion: s3.aws.m.upbound.io/v1beta1
|
||||
kind: Bucket
|
||||
metadata:
|
||||
generateName: app1-bucket-mathod-
|
||||
namespace: crossplane-system
|
||||
spec:
|
||||
forProvider:
|
||||
region: eu-west-3
|
||||
tags:
|
||||
company: mathod
|
||||
project: app1
|
||||
environment: production
|
||||
providerConfigRef:
|
||||
name: default
|
||||
kind: ProviderConfig
|
||||
@@ -0,0 +1,18 @@
|
||||
# =============================================================================
|
||||
# EXEMPLE D'UTILISATION
|
||||
# Crée une instance de la ressource composite
|
||||
# =============================================================================
|
||||
apiVersion: mathod.io/v1alpha1
|
||||
kind: X<ResourceName>
|
||||
metadata:
|
||||
name: <instance-name>
|
||||
namespace: default
|
||||
spec:
|
||||
parameters:
|
||||
<paramName>: <value>
|
||||
<boolParam>: true
|
||||
<intParam>: 200
|
||||
|
||||
crossplane:
|
||||
compositionRef:
|
||||
name: <resource>.<provider>.mathod.io
|
||||
@@ -0,0 +1,137 @@
|
||||
# =============================================================================
|
||||
# COMPOSITION
|
||||
# Configure comment créer les ressources réelles
|
||||
# =============================================================================
|
||||
apiVersion: apiextensions.crossplane.io/v1
|
||||
kind: Composition
|
||||
metadata:
|
||||
# Format: <resource>.<provider>.<group>
|
||||
# Exemple: database.aws.mathod.io, network.gcp.mathod.io
|
||||
name: <resource>.<provider>.mathod.io
|
||||
labels:
|
||||
provider: <provider_name>
|
||||
type: <resource_type>
|
||||
spec:
|
||||
# Référence vers le XRD
|
||||
compositeTypeRef:
|
||||
apiVersion: mathod.io/v1alpha1
|
||||
kind: X<ResourceName>
|
||||
|
||||
# Mode Pipeline (recommandé pour Crossplane v2)
|
||||
mode: Pipeline
|
||||
|
||||
pipeline:
|
||||
- step: patch-and-transform
|
||||
functionRef:
|
||||
name: function-patch-and-transform
|
||||
input:
|
||||
apiVersion: pt.fn.crossplane.io/v1beta1
|
||||
kind: Resources
|
||||
resources:
|
||||
# =============================================
|
||||
# RESSOURCE MANAGÉE #1
|
||||
# =============================================
|
||||
- name: <resource-name>
|
||||
base:
|
||||
# API de la ressource (provider specific)
|
||||
apiVersion: <provider>.aws.upbound.io/v1beta1
|
||||
kind: <ResourceKind>
|
||||
spec:
|
||||
forProvider:
|
||||
# Configuration de base
|
||||
<field>: <value>
|
||||
|
||||
# Référence au ProviderConfig
|
||||
providerConfigRef:
|
||||
name: aws-provider
|
||||
|
||||
patches:
|
||||
# -------------------------------------
|
||||
# FromCompositeFieldPath
|
||||
# Copie depuis le XR vers la ressource
|
||||
# -------------------------------------
|
||||
- type: FromCompositeFieldPath
|
||||
fromFieldPath: spec.parameters.<paramName>
|
||||
toFieldPath: spec.forProvider.<targetField>
|
||||
|
||||
# -------------------------------------
|
||||
# ToCompositeFieldPath
|
||||
# Copie depuis la ressource vers le XR
|
||||
# -------------------------------------
|
||||
- type: ToCompositeFieldPath
|
||||
fromFieldPath: status.atProvider.<sourceField>
|
||||
toFieldPath: status.<outputField>
|
||||
|
||||
# -------------------------------------
|
||||
# Transform - Map
|
||||
# Transforme une valeur avec un mapping
|
||||
# -------------------------------------
|
||||
- type: FromCompositeFieldPath
|
||||
fromFieldPath: spec.parameters.<boolParam>
|
||||
toFieldPath: spec.forProvider.<targetField>
|
||||
transforms:
|
||||
- type: map
|
||||
map:
|
||||
"true": Enabled
|
||||
"false": Disabled
|
||||
|
||||
# -------------------------------------
|
||||
# Transform - String
|
||||
# Formate une string
|
||||
# -------------------------------------
|
||||
- type: FromCompositeFieldPath
|
||||
fromFieldPath: spec.parameters.<paramName>
|
||||
toFieldPath: spec.forProvider.<targetField>
|
||||
transforms:
|
||||
- type: string
|
||||
string:
|
||||
fmt: "prefix-%s-suffix"
|
||||
|
||||
# -------------------------------------
|
||||
# Transform - Math
|
||||
# Opération mathématique
|
||||
# -------------------------------------
|
||||
- type: FromCompositeFieldPath
|
||||
fromFieldPath: spec.parameters.<intParam>
|
||||
toFieldPath: spec.forProvider.<targetField>
|
||||
transforms:
|
||||
- type: math
|
||||
math:
|
||||
multiply: 2
|
||||
|
||||
# -------------------------------------
|
||||
# CombineFromComposite
|
||||
# Combine plusieurs champs
|
||||
# -------------------------------------
|
||||
- type: CombineFromComposite
|
||||
combine:
|
||||
variables:
|
||||
- fromFieldPath: spec.parameters.<param1>
|
||||
- fromFieldPath: spec.parameters.<param2>
|
||||
strategy: string
|
||||
string:
|
||||
fmt: "%s-%s"
|
||||
toFieldPath: spec.forProvider.<targetField>
|
||||
|
||||
# =============================================
|
||||
# RESSOURCE MANAGÉE #2 (avec référence)
|
||||
# =============================================
|
||||
- name: <related-resource>
|
||||
base:
|
||||
apiVersion: <provider>.aws.upbound.io/v1beta1
|
||||
kind: <RelatedResourceKind>
|
||||
spec:
|
||||
forProvider:
|
||||
# Référence vers une autre ressource
|
||||
<parent>Ref:
|
||||
name: ""
|
||||
providerConfigRef:
|
||||
name: aws-provider
|
||||
|
||||
patches:
|
||||
# Patch la référence
|
||||
- type: FromCompositeFieldPath
|
||||
fromFieldPath: spec.parameters.<paramName>
|
||||
toFieldPath: spec.forProvider.<parent>Ref.name
|
||||
|
||||
---
|
||||
@@ -0,0 +1,98 @@
|
||||
# =============================================================================
|
||||
# XRD (Composite Resource Definition)
|
||||
# Définit le schéma de ton API personnalisée
|
||||
# =============================================================================
|
||||
apiVersion: apiextensions.crossplane.io/v2
|
||||
kind: CompositeResourceDefinition
|
||||
metadata:
|
||||
# Format: x<pluriel>.<group>
|
||||
# Exemple: xdatabases.mathod.io, xnetworks.mathod.io
|
||||
name: x<RESOURCE_PLURAL>s.mathod.io
|
||||
spec:
|
||||
scope: Namespaced
|
||||
|
||||
# Le groupe de ton API (doit matcher le suffix du name)
|
||||
group: mathod.io
|
||||
|
||||
names:
|
||||
# Nom au singulier (PascalCase) - Commence par X
|
||||
kind: X<ResourceName>
|
||||
# Nom au pluriel (lowercase)
|
||||
plural: x<resource_name>s
|
||||
|
||||
versions:
|
||||
- name: v1alpha1
|
||||
served: true
|
||||
referenceable: true
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
type: object
|
||||
properties:
|
||||
spec:
|
||||
type: object
|
||||
properties:
|
||||
parameters:
|
||||
type: object
|
||||
properties:
|
||||
# ========================================
|
||||
# Paramètres string
|
||||
# ========================================
|
||||
<paramName>:
|
||||
type: string
|
||||
description: "<Description du paramètre>"
|
||||
default: "<valeur_par_defaut>"
|
||||
|
||||
# ========================================
|
||||
# Paramètres boolean
|
||||
# ========================================
|
||||
<boolParam>:
|
||||
type: boolean
|
||||
description: "<Description du paramètre>"
|
||||
default: false
|
||||
|
||||
# ========================================
|
||||
# Paramètres integer
|
||||
# ========================================
|
||||
<intParam>:
|
||||
type: integer
|
||||
description: "<Description du paramètre>"
|
||||
default: 100
|
||||
|
||||
# ========================================
|
||||
# Paramètres array
|
||||
# ========================================
|
||||
<arrayParam>:
|
||||
type: array
|
||||
description: "<Description du paramètre>"
|
||||
items:
|
||||
type: string
|
||||
default: []
|
||||
|
||||
# ========================================
|
||||
# Paramètres object
|
||||
# ========================================
|
||||
<objectParam>:
|
||||
type: object
|
||||
description: "<Description du paramètre>"
|
||||
properties:
|
||||
<subField>:
|
||||
type: string
|
||||
|
||||
# Paramètres obligatoires
|
||||
required:
|
||||
- <paramName>
|
||||
|
||||
required:
|
||||
- parameters
|
||||
|
||||
# ========================================
|
||||
# Status - Informations retournées
|
||||
# ========================================
|
||||
status:
|
||||
type: object
|
||||
properties:
|
||||
<outputField>:
|
||||
type: string
|
||||
description: "<Description de la sortie>"
|
||||
|
||||
---
|
||||
2
providers/provider-gitlab/README.md
Normal file
2
providers/provider-gitlab/README.md
Normal file
@@ -0,0 +1,2 @@
|
||||
- https://marketplace.upbound.io/providers/crossplane-contrib/provider-gitlab/latest
|
||||
- https://github.com/crossplane-contrib/provider-gitlab
|
||||
6
providers/provider-gitlab/provider-gitlab.yaml
Normal file
6
providers/provider-gitlab/provider-gitlab.yaml
Normal file
@@ -0,0 +1,6 @@
|
||||
apiVersion: pkg.crossplane.io/v1
|
||||
kind: Provider
|
||||
metadata:
|
||||
name: crossplane-contrib-provider-gitlab
|
||||
spec:
|
||||
package: xpkg.upbound.io/crossplane-contrib/provider-gitlab:v0.14.0
|
||||
2
providers/provider-helm/README.md
Normal file
2
providers/provider-helm/README.md
Normal file
@@ -0,0 +1,2 @@
|
||||
- https://marketplace.upbound.io/providers/upbound/provider-helm/latest
|
||||
- https://github.com/crossplane-contrib/provider-helm
|
||||
6
providers/provider-helm/provider-helm.yaml
Normal file
6
providers/provider-helm/provider-helm.yaml
Normal file
@@ -0,0 +1,6 @@
|
||||
apiVersion: pkg.crossplane.io/v1
|
||||
kind: Provider
|
||||
metadata:
|
||||
name: upbound-provider-helm
|
||||
spec:
|
||||
package: xpkg.upbound.io/upbound/provider-helm:v1.0.4
|
||||
2
providers/provider-kubernetes/README.md
Normal file
2
providers/provider-kubernetes/README.md
Normal file
@@ -0,0 +1,2 @@
|
||||
- https://marketplace.upbound.io/providers/upbound/provider-kubernetes/latest
|
||||
- https://github.com/crossplane-contrib/provider-kubernetes
|
||||
6
providers/provider-kubernetes/provider-kubernetes.yaml
Normal file
6
providers/provider-kubernetes/provider-kubernetes.yaml
Normal file
@@ -0,0 +1,6 @@
|
||||
apiVersion: pkg.crossplane.io/v1
|
||||
kind: Provider
|
||||
metadata:
|
||||
name: upbound-provider-kubernetes
|
||||
spec:
|
||||
package: xpkg.upbound.io/upbound/provider-kubernetes:v1.1.0
|
||||
2
providers/provider-opentofu/README.md
Normal file
2
providers/provider-opentofu/README.md
Normal file
@@ -0,0 +1,2 @@
|
||||
- https://marketplace.upbound.io/providers/upbound/provider-opentofu/latest
|
||||
- https://github.com/upbound/provider-opentofu
|
||||
6
providers/provider-opentofu/provider-opentofu.yaml
Normal file
6
providers/provider-opentofu/provider-opentofu.yaml
Normal file
@@ -0,0 +1,6 @@
|
||||
apiVersion: pkg.crossplane.io/v1
|
||||
kind: Provider
|
||||
metadata:
|
||||
name: upbound-provider-opentofu
|
||||
spec:
|
||||
package: xpkg.upbound.io/upbound/provider-opentofu:v1.0.1
|
||||
@@ -0,0 +1,11 @@
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: gitea-credentials
|
||||
namespace: crossplane-system
|
||||
type: Opaque
|
||||
stringData:
|
||||
credentials: |
|
||||
credentials "gitea.mathod.fr" {
|
||||
token = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
apiVersion: opentofu.m.upbound.io/v1beta1
|
||||
kind: ProviderConfig
|
||||
metadata:
|
||||
name: gitea-tofu-config
|
||||
namespace: crossplane-system
|
||||
spec:
|
||||
configuration: |
|
||||
terraform {
|
||||
required_providers {
|
||||
gitea = {
|
||||
source = "go-gitea/gitea"
|
||||
version = "~> 0.20.0"
|
||||
}
|
||||
}
|
||||
|
||||
// Modules _must_ use remote state. The provider does not persist state.
|
||||
backend "kubernetes" {
|
||||
secret_suffix = "providerconfig-gitea"
|
||||
namespace = "crossplane-system"
|
||||
in_cluster_config = true
|
||||
}
|
||||
}
|
||||
|
||||
provider "gitea" {
|
||||
base_url = var.gitea_url
|
||||
token = var.gitea_token
|
||||
}
|
||||
|
||||
variable "gitea_url" {
|
||||
type = string
|
||||
}
|
||||
|
||||
variable "gitea_token" {
|
||||
type = string
|
||||
sensitive = true
|
||||
}
|
||||
pluginCache: true
|
||||
credentials:
|
||||
- filename: .tofurc
|
||||
source: Secret
|
||||
secretRef:
|
||||
name: gitea-provider-creds
|
||||
namespace: crossplane-system
|
||||
key: credentials
|
||||
@@ -0,0 +1,68 @@
|
||||
apiVersion: opentofu.m.upbound.io/v1beta1
|
||||
kind: Workspace
|
||||
metadata:
|
||||
name: gitea-user
|
||||
namespace: crossplane-system
|
||||
spec:
|
||||
forProvider:
|
||||
source: Inline
|
||||
module: |
|
||||
resource "gitea_user" "developer" {
|
||||
username = var.username
|
||||
login_name = var.login_name
|
||||
email = var.email
|
||||
password = var.password
|
||||
must_change_password = var.must_change_password
|
||||
admin = var.admin
|
||||
}
|
||||
|
||||
output "user_id" {
|
||||
value = gitea_user.developer.id
|
||||
}
|
||||
|
||||
output "username" {
|
||||
value = gitea_user.developer.username
|
||||
}
|
||||
|
||||
variable "username" {
|
||||
type = string
|
||||
}
|
||||
|
||||
variable "login_name" {
|
||||
type = string
|
||||
}
|
||||
|
||||
variable "email" {
|
||||
type = string
|
||||
}
|
||||
|
||||
variable "password" {
|
||||
type = string
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
variable "must_change_password" {
|
||||
type = bool
|
||||
default = true
|
||||
}
|
||||
|
||||
variable "admin" {
|
||||
type = bool
|
||||
default = false
|
||||
}
|
||||
vars:
|
||||
- key: username
|
||||
value: "dev-user"
|
||||
- key: login_name
|
||||
value: "dev-user"
|
||||
- key: email
|
||||
value: "dev@example.com"
|
||||
- key: password
|
||||
value: "ChangeMe123!"
|
||||
- key: must_change_password
|
||||
value: "true"
|
||||
- key: admin
|
||||
value: "false"
|
||||
providerConfigRef:
|
||||
kind: ProviderConfig
|
||||
name: gitea-tofu-config
|
||||
Reference in New Issue
Block a user