Убедитесь, что некоторые поля есть в файле конфигурации (для Atom IDE) через Ansible playbook - PullRequest
0 голосов
/ 04 декабря 2018

Я пытаюсь установить и настроить Atom Editor IDE с помощью Ansible.Я знаю, как извлечь и проанализировать JSON-файл с помощью Ansible, но Я не вижу, как вставить / обновить некоторые поля этого JSON-файла, если рассматривать их как словарь , что также связано с тем, что файлможет отсутствовать в начале книги Ansible.

Я знаю, что настройки хранятся в ~/.atom/config.cson.

Моя первоначальная конфигурация выглядела так:

$ cat ~/.atom/config.cson 
"*":
  core:
    telemetryConsent: "limited"
  editor:
    invisibles: {}
  "exception-reporting":
    userId: "<SOME_UUID>"

Но затем я хотел убедиться, что вкладки обрабатываются как 2 пустых пространства, поэтому я зашел в окно «Настройки», изменил некоторые параметры, после чего файл конфигурации выглядел следующим образом:

$ cat ~/.atom/config.cson 
"*":
  core:
    telemetryConsent: "limited"
  editor:
    invisibles: {}
    showInvisibles: true
    softTabs: false
    tabType: "soft"
  "exception-reporting":
    userId: "<SOME_UUID>"

В Ansible я знаю, что могузагрузите объект JSON и проанализируйте его с помощью:

  - name: Configure Atom IDE
    shell: cat /home/"{{ cli_input_username }}"/.atom/config.cson
    register: result
    become_user: "{{ cli_input_username }}"
  - set_fact:
      atom_config_dict: "{{ result.stdout | from_json }}"

А затем проверьте некоторые поля этого «словаря JSON» с помощью "{{ jsonVar['atom_config_dict."*".editor'] }}".Я думаю, что это сработает, но, возможно, мне нужно использовать некоторые специальные приемы из-за того, что звездочка используется в качестве ключа словаря "*".

Но тогда как мне UPSERT (ВСТАВИТЬ / ОБНОВИТЬ ключ / значения JSON) некоторые поля и сохранить в файл весь словарь JSON (после изменений) в ~/.atom/config.cson?

Нужно ли обрабатывать специальные ключи JSON как "*" вконкретный способ?Или это просто строка, рассматриваемая как ключ словаря?

Как мне убедиться, что Ansible playbook может обрабатывать тот факт, что файл конфигурации JSON может отсутствовать в начале?(например, когда я устанавливаю IDE редактора Atom в первый раз, т.е. при первом запуске книги воспроизведения Ansible).

EDIT :

Я только что понял этоФайл конфигурации не может быть полностью действительным JSON.На самом деле это расширение файла "cson", с которым я не знаком.Так что, вероятно, эти трюки, касающиеся from_json, не сработают.

Есть ли способ иметь дело с этим файлом конфигурации структурированным образом, чтобы сделать его доступным для поиска и анализировать его, а затем вставить / обновить некоторые ключи этого словаря?Возможно, это можно рассматривать как файл YAML, используя from_yaml?

1 Ответ

0 голосов
/ 04 декабря 2018

Atom отлично работает с файлом JSON, в котором хранится ваша конфигурация.Просто преобразуйте существующий config.cson в JSON, удалите (или переименуйте) файл и поместите преобразованный config.json на его место.

Чтобы преобразовать файл, вы можете использовать js2coffee (требует небольшого редактирования) или пакет atomizr для Atom.После установки последней просто откройте config.cson и выполните команду Atomizr: Toggle Atom Format .Обратите внимание, что при настройках по умолчанию это не сохранит исходный файл.

...