2016-04-19 27 views
3

私はいくつかのホストにAnecessを使ってjavaをインストールしようとしています。 私はexpectモジュールのいくつかの例を探して、プロンプトに対する回答を提供しました。 私はこの構文は非常に罰金だと思う:エラー!矛盾するアクションステートメント(expect、command)in 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 

どこに問題がありますか? (私は有能な2.0.1.0、pexpect、pythonをインストールしました)

ありがとう!

+3

Anipalが文法エラーを明確に投げているときに、構文が "きれい"だと思いますか? – ydaetskcoR

答えて

3

AnsibleはYAMLファイルで動作しますNOTE、およびファイルのこの種は、インデントです。これは、各ステートメントの前に置いたスペースが重要であることを意味します。 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' 

これはあなたの構文エラーを回避します:

は、タスクを修正しました。

出典:あなたは常にあなたのapt-get installコマンドに "はい" と言いたい場合はhttp://docs.ansible.com/ansible/expect_module.html

あるいは、あなたは-y引数を追加することができます。

apt-get install -y openjdk-7-jdk 

またはより良い、apt Ansible moduleを使用しています。

+0

ありがとうございます!非常に明確な! –

+0

@HéctorValverde Pareja私たちは、expectモジュールとaptモジュールをどうやって使うのですか?例を挙げてください。 インストールの途中でプロンプトが表示され、「Y」を入力します。 私はパッケージをインストールするためにaptモジュールを使用しています。 – ambikanair