Как назвать сборник игр в терраформном коде? - PullRequest
0 голосов
/ 26 мая 2019

У меня есть справочник по играм, который хорошо работает, теперь я должен вызвать этот сборник, используя сценарии terrform. В настоящее время я использую код, который показан ниже, но это приводит к ошибке во время инициализации terraform как: Error: Unknown root level key: provisioner

Я использую Terraform v0.11.7, и ошибка возникает только при запуске этого конкретного кода. Также мой main.tf состоит только из этого кода. Структура каталогов, которую я использовал, такая:

.
├── create-user.yml
├── library
│   └── mkpassword.py
├── main.tf
├── outputs.tf
├── roles
│   └── linux_user_creation
│       └── tasks
│           └── main.yml
└── variables.tf

main.tf выглядит так:

  provisioner "remote-exec" {
  inline = ["sudo dnf -y install python"]

  connection {
    type        = "ssh"
    user        = "ubuntu"
    private_key = "${file(var.ssh_keyname)}"
  }
}

provisioner "remote-exec" {
  command = ["ansible-playbook -u root --private-key ${var.ssh_keyname} -i ${self.ipv4_address} create-user.yml -e 'email_id=${var.email_id}'"]
}

Я ожидаю, что playbook должен вызываться из сценариев terraform и отображать результаты.

1 Ответ

0 голосов
/ 27 мая 2019

Форма с кодом кода main.tf не заполнена.Не могли бы вы опубликовать полные определения ресурсов, в которых вы запускаете провайдеров remote-exec, пожалуйста?

Что должен делать сборник игр Ansible?Создать пользователя на самом удаленном хосте?Или это просто хост, на котором хранятся ваши скрипты Ansible, и пользователь фактически создается на другом удаленном хосте оттуда?

Как уже упоминалось @ydaetskcoR, вам нужно запустить этот код в null_resource:

null_resource "provisioner" {
  connection {
    ... # set the connection parameters here
  }

  provisioner "remote-exec" {
    command = ["ansible-playbook -u root --private-key ${var.ssh_keyname} -i ${self.ipv4_address} create-user.yml -e 'email_id=${var.email_id}'"]
  }
}

Однако я бы предложил установить поставщик Ansible, как уже упоминалось в комментарии выше.Таким образом, вы можете связать Ansible playbook напрямую с вашим кодом Terraform, и вам не нужно будет подключаться к другому экземпляру.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...