Ansible не может запустить Terraform Plan

avatar
NeverStopLearning
1 июля 2021 в 18:09
662
1
0

Я автоматизировал ansible playbook для создания файлов Terraform, необходимых для создания ресурсов AWS в папке. После того, как файлы сгенерированы, незаметные задачи запускают план терраформирования (используя приведенный ниже код плана), но он завершается с ошибкой ниже (ошибка)

Версия Ansible:

ansible [core 2.11.2] 
  config file = None
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.8/dist-packages/ansible
  ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/local/bin/ansible

Терраформ версия: Terraform v0.12.31

код плана:

- name: Create Terraform plan
  check_mode: true
  community.general.terraform:
    project_path: "{{ terraform_dir }}"
    plan_file: "{{ terraform_dir }}/tfplan"
    state: "planned"
    force_init: true
  register: plan
  tags:
    - build
    - plan
    - never

ошибка:

**fatal: [localhost]: FAILED! => {"changed": false, "module_stderr": "Traceback (most recent call last):
  File \"/root/.ansible/tmp/ansible-tmp-1625160772.6764412-713-181137940992596/AnsiballZ_terraform.py\", line 100, in <module>
    _ansiballz_main()
  File \"/root/.ansible/tmp/ansible-tmp-1625160772.6764412-713-181137940992596/AnsiballZ_terraform.py\", line 92, in _ansiballz_main
    invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)
  File \"/root/.ansible/tmp/ansible-tmp-1625160772.6764412-713-181137940992596/AnsiballZ_terraform.py\", line 40, in invoke_module
    runpy.run_module(mod_name='ansible_collections.community.general.plugins.modules.terraform', init_globals=dict(_module_fqn='ansible_collections.community.general.plugins.modules.terraform', _modlib_path=modlib_path),
  File \"/usr/lib/python3.8/runpy.py\", line 207, in run_module
    return _run_module_code(code, init_globals, run_name, mod_spec)
  File \"/usr/lib/python3.8/runpy.py\", line 97, in _run_module_code
    _run_code(code, mod_globals, init_globals,
  File \"/usr/lib/python3.8/runpy.py\", line 87, in _run_code
    exec(code, run_globals)
  File \"/tmp/ansible_community.general.terraform_payload_xnzkbjkr/ansible_community.general.terraform_payload.zip/ansible_collections/community/general/plugins/modules/terraform.py\", line 497, in <module>
  File \"/tmp/ansible_community.general.terraform_payload_xnzkbjkr/ansible_community.general.terraform_payload.zip/ansible_collections/community/general/plugins/modules/terraform.py\", line 393, in main
  File \"/tmp/ansible_community.general.terraform_payload_xnzkbjkr/ansible_community.general.terraform_payload.zip/ansible_collections/community/general/plugins/modules/terraform.py\", line 238, in get_version
  File \"/usr/lib/python3.8/json/__init__.py\", line 357, in loads
    return _default_decoder.decode(s)
  File \"/usr/lib/python3.8/json/decoder.py\", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File \"/usr/lib/python3.8/json/decoder.py\", line 355, in raw_decode
    raise JSONDecodeError(\"Expecting value\", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
", "module_stdout": "", "msg": "MODULE FAILURE
See stdout/stderr for the exact error", "rc": 1}**

не уверен, что я пропустил установку каких-либо необходимых модулей или мне нужно внести изменения в код. Есть идеи, как исправить указанную выше ошибку?

Пожалуйста, дайте мне знать, если потребуется дополнительная информация.

Заранее спасибо.

Источник
seshadri_c
2 июля 2021 в 03:22
0

Может быть неправильно, но raise JSONDecodeError это может указывать на проблему со сгенерированными файлами .tf? Возможно, вы могли бы попробовать запустить команду terraform plan после создания файлов для проверки.

NeverStopLearning
2 июля 2021 в 13:17
0

@seshadri_c, запускающий команду terraform plan после того, как файлы были сгенерированы, работает, но у меня есть доступная книга воспроизведения, которая генерирует все необходимые файлы терраформирования, инициализирует, планирует, применяет и т. д., все эти действия являются частью пьесы за один раз. .. раньше это работало, и я также не вносил никаких изменений в код, но теперь с ошибкой выше

Ответы (1)

avatar
NeverStopLearning
7 июля 2021 в 03:15
1

Исправлена ​​указанная выше ошибка путем изменения версии коллекции ansible-galaxy (установка коллекции ansible-galaxy community.general:1.3.9).

версии ansible-galaxy, вызывающие указанную выше ошибку: >1.3.9, поскольку версии выше 1.3.9 несовместимы с версией terraform v0.12.31><9690164767

Ранее у меня была установлена ​​коллекция ansible-galaxy версии 2.2.0, понижение версии до 1.3.9 устранило мою проблему.