терраформирование с внедрением ec2 в частное облако

#amazon-web-services #amazon-ec2 #terraform #private-cloud

#amazon-веб-сервисы #amazon-ec2 #terraform #частное облако

Вопрос:

Обновлено :

В нашем центре обработки данных размещено частное облако, представляющее собой урезанную версию AWS. Мы предоставили API EC2, чтобы пользователи могли создавать виртуальные машины с помощью awscli.

Я пытаюсь создать виртуальные машины, используя Terraform, и для начальных тестов я создал файл .tf, как показано ниже:

 provider "aws" {
  access_key = "<key>"
  secret_key = "<key>"
  region = "us-west-1"
  skip_credentials_validation = true

  endpoints
  {
    ec2 = "https://awsserver/services/api/aws/ec2"
  }
}

resource "aws_instance" "Automation" {
  ami           = "ami-100011201"
  instance_type = "c3.xlarge"
  subnet_id = "subnet1:1"

}
 

Это сообщение об ошибке после запуска terraform plan

     Error: Error running plan: 1 error(s) occurred:

* provider.aws: AWS account ID not previously found and failed retrieving via all available methods. See https://www.terraform.io/docs/providers/aws/index.html#skip_requesting_account_id for workaround and implications. Errors: 2 errors occurred:
        * error calling sts:GetCallerIdentity: InvalidClientTokenId: The security token included in the request is invalid.
        status code: 403, request id: 58f9d498-6259-11e9-b146-95598aa219b5
        * failed getting account information via iam:ListRoles: InvalidClientTokenId: The security token included in the request is invalid.
        status code: 403, request id: c10f8a06-58b4-4d0c-956a-5c8c684664ea
 

Мы не внедрили sts, и запрос всегда отправляется в облако AWS, а не на сервер API частного облака.

Чего мне не хватает?

Комментарии:

1. Можете ли вы попробовать добавить skip_credentials_validation опцию к поставщику? Обратитесь к этому: terraform.io/docs/providers/aws/guides /.

2. я получаю это сообщение: «Произошла 1 ошибка (ошибки): * provider.aws: идентификатор учетной записи AWS ранее не найден и не удалось получить всеми доступными способами. См. terraform.io/docs/providers/aws /… для обходного пути и последствий. Ошибки: произошло 2 ошибки: * ошибка при вызове sts: GetCallerIdentity: InvalidClientTokenId: маркер безопасности, включенный в запрос, недействителен. код состояния: 403, идентификатор запроса: 58f9d498-6259-11e9-b146-95598aa219b5 * не удалось получить информацию об учетной записи через iam: ListRoles: InvalidClientTokenId: `

3. Можете ли вы затем добавить skip_requesting_account_id и skip_metadata_api_check к поставщику и попробовать? Я никогда этого не делал, поэтому я смотрю документацию Terraform. Обратитесь к этим ссылкам: terraform.io/docs/providers/aws/index.html и terraform.io/docs/providers/aws/guides /…

4. Спасибо! Это сработало. Он каждый раз создает виртуальные машины в новой среде. Я не уверен, есть ли возможность указать идентификатор среды в Terraform.

Ответ №1:

Это сработало для меня при создании виртуальной машины.

 provider "aws" {
  access_key = "<key>"
  secret_key = "<key>"
  region = "us-west-1"
  skip_credentials_validation =true
  skip_requesting_account_id = true
  skip_metadata_api_check = true

  endpoints
  {
    ec2 = "https://awsserver/services/api/aws/ec2"
  }
}

resource "aws_instance" "Automation" {
  ami           = "ami-100011201"
  instance_type = "c3.xlarge"
  subnet_id = "subnet1:1"

}
 

Он создает виртуальную машину, однако команда выдает ошибку с

 aws_instance.Automation: Still creating... (1h22m4s elapsed)
aws_instance.Automation: Still creating... (1h22m14s elapsed)
aws_instance.Automation: Still creating... (1h22m24s elapsed)

Error: Error applying plan:

1 error(s) occurred:

* aws_instance.Automation: 1 error(s) occurred:

* aws_instance.Automation: Error waiting for instance (i-101149362) to become ready: timeout while waiting for state to become 'running' (last state: 'pending', timeout: 10m0s)

Terraform does not automatically rollback in the face of errors.
Instead, your Terraform state file has been partially updated with
any resources that successfully completed. Please address the error
above and apply again to incrementally change your infrastructure.