Как использовать clojure для создания файла yaml, чем создать esxi vmmachine? - PullRequest
0 голосов
/ 22 января 2019

когда я использую ansible, я обнаружил, что оба ping.yml работают нормально:

- hosts: 172.16.10.104 
- tasks: 
  - name:   
    ping: ''

- hosts: 172.16.10.104 
  tasks: 
  - name:   
    ping: ''

, что означает, что если задание является списком yaml или нет, то оба они работают нормально

, ноесли я напишу файл yaml для создания виртуальной машины, как это:

- hosts: localhost
  tasks:
    name: ''
      vmware_guest:
      hostname: 
      cluster: 
      name: testvm_6
      validate_certs: 'no'
      template: ubuntu16
      password: 
      disk:
      - size_gb: '200'
        type: thin
        datastore: JH5020VMSAS01
      datacenter: thevmware
      folder: /
      username: 
   delegate_to: localhost
   register: deploy

Я пробовал много раз, кажется, что только задачи не является списком, что означает, что он не должен быть "- задача",файл yaml может работать, если это «- задача», я получил ошибку: поле 'hosts' является обязательным, но не было установлено

Я использую проект clojure и clojure https://github.com/owainlewis/yaml для генерацииФайл yaml, так как два способа решить проблему?

Есть ли способ, который может решить проблему хостов?

или есть способ clojure, который может генерировать файл yaml, который задачапосле хостов не может быть списка? Я пытался, но не смог:

  (def data [{:hosts "172.16.10.104",
         {:tasks [{:name "ping",:ping ""}]}}])

получил ошибку: литерал карты должен содержать четное число

, если я напишу это:

(def data [
         {:hosts "localhost"}
          {:tasks
           [{:name "",
             :vmware_guest
                   {:hostname "172.16.10.15",
                    :username "",
                    :password "",
                    :datacenter "thevmware",
                    :cluster "JMoeDataCenterA1",
                    :validate_certs "no",
                    :folder "/",
                    :name "testvm_6",
                    :template "ubuntu16",
                    :disk,
                    [{:size_gb "200",
                      :type "thin",
                      :datastore "JH5020VMSAS01"
                      }]}
             :delegate_to "localhost",
             :register "deploy"
             }]}])

задача - "- задача", ошибка создания vm

так как я могу использовать clojure для создания файла yaml, который может создать шаблон формы vm? Спасибоs!

1 Ответ

0 голосов
/ 22 января 2019

Документы Ansible YAML Syntax являются отличной отправной точкой.

Структура сборника пьес YAML POV:

  • a YAML список пьес
  • каждая пьеса представляет собой словарь YAML , который содержит несколько клавиш:

  • a hosts ключ, чтобы определить, с какого хоста / группы хостов запускать задачу в отношении

  • a tasks, представляющий собой список YAML определений задач, каждое из которых определено как словари YAML . Каждый словарь задач содержит несколько ключей, в частности:

  • необязательный ключ name, значение которого содержит название задачи

  • ключ, имя которого является именем ответвительного модуля. Значением этого ключа будет словарь YAML данных параметров, которые управляют модулем

Учитывая это, ваш вывод не правильно отформатирован и вместо этого вам нужно:

- hosts: <some_hosts>
  tasks:
    - name: Task 1
      some_ansible_module:
        ansible_module_param1: value 1
        ansible_module_param2: value 2
        ansible_module_param3: value 3
      delegate_to: <some_host>
      register: task_1_var
    - name: Task 2
      some_ansible_module:
        ansible_module_param1: value 1
        ansible_module_param2: value 2
        ansible_module_param3: value 3

Так что конкретно в вашем случае:

  • ваш name параметр нуждается в '-' вставке перед ним
  • vmware_guest должен иметь отступ в том же месте, что и name
  • все параметры, переданные в vmware_guest, должны иметь отступ относительно vmware_guest
  • в случае disk, список, переданный ему, должен иметь отступ
  • delegate_to и register должны иметь такие же отступы, что и name & vmware_guest. Это параметры задачи, а не модуля

Отказ от ответственности: я не знаком с модулем vmware_guest, поэтому не могу сказать, является ли то, что вы передаете, действительным.

...