2016-04-19 3 views
3

Я пытаюсь установить java на нескольких хостах с Ansible. Я искал некоторые примеры модуля expect, чтобы предоставить ответы на подсказки. Я думаю, что этот синтаксис довольно хорошо:ОШИБКА! (ожидать, команда) в Ansible

- hosts: datanode 
    sudo: yes 
    sudo_user: root 
    tasks: 
    - expect: 
    name: install java jdk 7 
    command: apt-get install openjdk-7-jdk 
    responses: 
    Question: 
     'Do you want to continue? [Y/n]': 'Y' 

Но когда я пытаюсь выполнить ansible-playbook file.yml я получаю сообщение об ошибке:

ERROR! conflicting action statements (expect, command) 

The error appears to have been in '/root/scp.yml': line 5, column 5, but may 
be elsewhere in the file depending on the exact syntax problem. 

The offending line appears to be: 

    tasks: 
    - expect: 
    ^here 

Где проблема? (я установил ansible 2.0.1.0, pexpect, python)

Спасибо!

+3

Что заставляет вас думать, что синтаксис «прекрасен», когда Ansible явно бросает синтаксическую ошибку? – ydaetskcoR

ответ

3

Примечание что анзибль работает с YAML файлов, и этот вид файлов являются отступом. Это означает, что пробелы, которые вы ставите перед каждым утверждением, важны, чтобы Ansible мог понять, как они вложены. More info about yaml.

Исправлена ​​задача:

- hosts: datanode 
    sudo: yes 
    sudo_user: root 
    tasks: 
    - name: install java jdk 7 
    expect: 
     command: apt-get install openjdk-7-jdk 
     responses: 
     Question: 
      - 'Y' 
      - 'n' 

Это позволит избежать вашей ошибки синтаксиса.

Источник: http://docs.ansible.com/ansible/expect_module.html

С другой стороны, если вы всегда хотите, чтобы сказать "да" на ваши apt-get install команды, вы можете добавить -y аргумент:

apt-get install -y openjdk-7-jdk 

Или еще лучше, использовать apt Ansible module.

+0

Спасибо! Очень ясно! –

+0

@ Héctor Valverde Pareja Как мы будем использовать модуль ожидания с помощью модуля aptible apt. Не могли бы вы привести пример. Я получаю подсказку в середине установки, и я хочу предоставить «Y». Я использую модуль apt для установки пакета. – ambikanair

Смежные вопросы