Как сгенерировать план выполнения terraform, используя роль anible? - PullRequest
0 голосов
/ 21 мая 2019

Модуль Terraform, предоставляемый ansible, хорошо работает для создания ресурсов aws с конфигурацией бэкэнда S3 для statefile. но не удалось получить вывод terraform plan с помощью этого модуля. Мы хотим, чтобы результат выводил что-то вроде: Plan: 1 to add, 0 to change, 0 to destroy. и предоставить подробную информацию о ресурсах, которые будут созданы / уничтожены / изменены

Попробовали приведенную ниже задачу в ansible, но не смогли сгенерировать вывод, как ожидалось.

ниже - задание для создания плана:

- name: "create file"
  shell: "touch {{playbook_dir}}/tfplan && ls -larth ../terraform/{{role_name}} "

- name: "Run terraform project with plan file"
  terraform:
    state: planned
    backend_config:
      bucket: "{{bootstrap_prefix}}-{{aws_account_type}}-{{caller_facts.account}}"
      region: "{{ bootstrap_aws_region }}"
      kms_key_id: "{{ kms_id.stdout }}"
      encrypt: true
      workspace_key_prefix: "{{ app_parent }}-{{ app_name }}"
      key: "terraform.tfstate"
    force_init: true
    project_path: "../terraform/{{role_name}}"
    plan_file: "{{playbook_dir}}/tfplan"
    variables:
      app_name: "{{ app_name }}"
    workspace: "{{ app_env }}"

Вывод вышеуказанного задания:

ok: [localhost] => {
    "changed": false,
    "command": "/usr/local/bin/terraform -lock=true /root/project/ansible/tfplan",
    "invocation": {
        "module_args": {
            "backend_config": {
                "bucket": "XXXXXXXX2440728499",
                "encrypt": true,
                "key": "terraform.tfstate",
                "kms_key_id": "XXXXXXXX",
                "region": "XXXXXXXX",
                "workspace_key_prefix": "XXXXXX"
            },
            "binary_path": null,
            "force_init": true,
            "lock": true,
            "lock_timeout": null,
            "plan_file": "/root/project/ansible/tfplan",
            "project_path": "../terraform/applications",
            "purge_workspace": false,
            "state": "planned",
            "state_file": null,
            "targets": [],
            "variables": {
                "app_name": "application"

            },
            "variables_file": null,
            "workspace": "uat"
        }
    },
    "outputs": {},
    "state": "planned",
    "stderr": "",
    "stderr_lines": [],
    "stdout": "",
    "stdout_lines": [],
    "workspace": "uat"
}

Он отлично работает с state: present (terraform apply), но хотите, чтобы он работал с state:planned (terraform plan)

...