Implementação da Nx Nuvem Privada para AWS

Pode facilmente implementar a sua instância Nx Private Cloud no AWS.

Using ECS

Primeiro,criar uma configuração de contentor utilizando a seguinte imagem:nxprivatecloud/nxcloud:latest

Em segundo lugar,estabelecer um ponto de montagem.

"mountPoints": [
  {
    "readOnly": null,
    "containerPath": "/data",
    "sourceVolume": "data"
  }
],

Em terceiro lugar,configurar as seguintes variáveis de inveja:

"environment": [
  {
    "name": "ADMIN_PASSWORD",
    "value": "admin-password"
  },
  {
    "name": "GITHUB_API_URL",
    "value": "https://api.github.com"
  },
  {
    "name": "GITHUB_AUTH_TOKEN",
    "value": "your-github-auth-token"
  },
  {
    "name": "GITHUB_WEBHOOK_SECRET",
    "value": "your-github-webhook-secret"
  },
  {
    "name": "NX_CLOUD_APP_URL",
    "value": "url-accessible-from-ci-and-dev-machines"
  },
  {
    "name": "NX_CLOUD_MODE",
    "value": "private-community"
  }
]

Todas as variáveis ​​env prefixadas com GITHUB são necessárias para a integração do Nx Cloud GitHub. Se você não usa o GitHub, não precisa defini-los.

Para testar se tudo funciona, abra NX_CLOUD_APP_URL no navegador e faça login usando o nome de usuário "admin" e a senha fornecida acima.

Para referência,aqui está um exemplo de definição completa da tarefa:

{
  "ipcMode": null,
  "executionRoleArn": null,
  "containerDefinitions": [
    {
      "dnsSearchDomains": null,
      "environmentFiles": null,
      "logConfiguration": {
        "logDriver": "awslogs",
        "secretOptions": null,
        "options": {
          "awslogs-group": "/ecs/DeployCloud",
          "awslogs-region": "us-east-1",
          "awslogs-stream-prefix": "ecs"
        }
      },
      "entryPoint": null,
      "portMappings": [
        {
          "hostPort": 8081,
          "protocol": "tcp",
          "containerPort": 8081
        }
      ],
      "command": null,
      "linuxParameters": null,
      "cpu": 0,
      "environment": [
        {
          "name": "ADMIN_PASSWORD",
          "value": "admin-password"
        },
        {
          "name": "GITHUB_API_URL",
          "value": "https://api.github.com"
        },
        {
          "name": "GITHUB_AUTH_TOKEN",
          "value": "your-github-auth-token"
        },
        {
          "name": "GITHUB_WEBHOOK_SECRET",
          "value": "your-github-webhoook-secret"
        },
        {
          "name": "NX_CLOUD_APP_URL",
          "value": "url-accessible-from-ci-and-dev-machines"
        },
        {
          "name": "NX_CLOUD_MODE",
          "value": "private-community"
        }
      ],
      "resourceRequirements": null,
      "ulimits": null,
      "dnsServers": null,
      "mountPoints": [
        {
          "readOnly": null,
          "containerPath": "/data",
          "sourceVolume": "data"
        }
      ],
      "workingDirectory": null,
      "secrets": null,
      "dockerSecurityOptions": null,
      "memory": 2000,
      "memoryReservation": null,
      "volumesFrom": [],
      "stopTimeout": null,
      "image": "nxprivatecloud/nxcloud:latest",
      "startTimeout": null,
      "firelensConfiguration": null,
      "dependsOn": null,
      "disableNetworking": null,
      "interactive": null,
      "healthCheck": null,
      "essential": true,
      "links": null,
      "hostname": null,
      "extraHosts": null,
      "pseudoTerminal": null,
      "user": null,
      "readonlyRootFilesystem": null,
      "dockerLabels": null,
      "systemControls": null,
      "privileged": null,
      "name": "PrivateCloud"
    }
  ],
  "placementConstraints": [],
  "memory": null,
  "taskRoleArn": null,
  "compatibilities": ["EC2"],
  "taskDefinitionArn": "your-task-definition-arn",
  "family": "deploy-nx-cloud",
  "requiresAttributes": [
    {
      "targetId": null,
      "targetType": null,
      "value": null,
      "name": "com.amazonaws.ecs.capability.logging-driver.awslogs"
    },
    {
      "targetId": null,
      "targetType": null,
      "value": null,
      "name": "com.amazonaws.ecs.capability.docker-remote-api.1.19"
    },
    {
      "targetId": null,
      "targetType": null,
      "value": null,
      "name": "ecs.capability.docker-plugin.local"
    },
    {
      "targetId": null,
      "targetType": null,
      "value": null,
      "name": "com.amazonaws.ecs.capability.docker-remote-api.1.25"
    }
  ],
  "pidMode": null,
  "requiresCompatibilities": ["EC2"],
  "networkMode": null,
  "cpu": null,
  "status": "ACTIVE",
  "inferenceAccelerators": null,
  "proxyConfiguration": null,
  "volumes": [
    {
      "fsxWindowsFileServerVolumeConfiguration": null,
      "efsVolumeConfiguration": null,
      "name": "data",
      "host": null,
      "dockerVolumeConfiguration": {
        "autoprovision": true,
        "labels": null,
        "scope": "shared",
        "driver": "local",
        "driverOpts": null
      }
    }
  ]
}

Ao usar essa configuração, os metadados e os artefatos de arquivo são armazenados no volume /data .

Using S3

Se quiser utilizar o S3 para armazenar e entregar artefactos em cache,adicione as seguintes variáveis de inveja:

"environment": [
  {
    "name": "AWS_S3_ACCESS_KEY_ID",
    "value": "your-access-key-id"
  },
  {
    "name": "AWS_S3_SECRET_ACCESS_KEY",
    "value": "your-secret-access-key"
  },
  {
    "name": "AWS_S3_BUCKET",
    "value": "your-backet-name"
  }
]

Usando esta configuração,os metadados serão armazenados no volume e os artefactos do ficheiro serão armazenados usando o S3.

Recomendamos vivamente a utilização do S3 para grandes espaços de trabalho.