Синтаксическая ошибка простого доступного playbook (YAML)

Я только начал работать с ansible и создал простую книгу для развертывания nginx на целевом сервере. Файл книги воспроизведения YAML (myplaybook.yml) выглядит так: -

- name: Configure webserver with nginx
  hosts: webservers
  sudo: True
  tasks:
    - name: install nginx
    - apt: name=nginx update_cache=yes
       environment:
          http_proxy: myproxy.com:8088
          https_proxy: myproxy.com:8088

Когда я выполняю: -

$ ansible-playbook myplaybook.yml

Я получил:-

ОШИБКА: синтаксическая ошибка при загрузке скрипта YAML, nginx-ansible.yml Примечание: ошибка может фактически появляться перед этой позицией: строка 7, столбец 23

- apt: name=nginx update_cache=yes
       environment:
                  ^

Я не понимаю, почему возникает эта ошибка - файл hosts содержит раздел [webservers] ОК - может ли кто-нибудь помочь?

Спасибо!


person bzo    schedule 15.07.2015    source источник


Ответы (1)


У вас есть пара проблем с вашим YAML. Во-первых, - name и - apt не должны иметь префикса - одновременно. Это заставляет Ansible думать, что у вас есть одна задача с именем install nginx, но без модуля или чего-либо еще, связанного с ней, тогда у вас есть вторая задача без имени, но вызывает модуль apt.

Вторая проблема - это отступы. У вас есть дополнительный пробел перед словом environment, который заставляет YAML думать, что вы запускаете новый дочерний элемент, а не просто добавляете атрибуты к текущей задаче. Итак, вся ваша задача должна выглядеть примерно так (и помните, что интервал имеет решающее значение):

tasks:
  - name: install nginx
    apt: name=nginx update_cache=yes
    environment:
      http_proxy: myproxy.com:8088
      https_proxy: myproxy.com:8088
person Bruce P    schedule 15.07.2015
comment
FWIW Я бы, вероятно, также использовал многострочную нотацию yaml, поскольку ее легче читать и поддерживать (например, разбейте вашу строку apt, чтобы name: и update_cache: были отдельными строками с отступом) - person Ben Whaley; 15.07.2015