5

でのマッピングを構築しながら、私は脚本を実行するたびに次のような警告が起動する:警告Ansible

[警告]:/etc/ansible/roles/foo/tasks/main.ymlからマッピングを構築中、行17、列3、見つけた 重複するdictキー(ファイル)。最後に定義された値のみを使用する。

タスクフォルダ内の私のmain.ymlの関連部分はこのようなものです:(17行が少しオフに思わファイルをきれいにする作業ですので、私は問題があると推測

前回の "スクリプト" ライン)

- name: Run script to format output 
    script: foo.py {{ taskname }} /tmp/fcpout.log 
- name: Clean temp files 
    file: path=/tmp/fcpout.log state=absent 

そして、私のVARSファイル:

--- 
my_dict: {SLM: "114", Regular: "255", Production: "1"} 
taskid: "{{my_dict[taskname]}}" 

実行するには私は私の脚本:「サーバー」パラメータで、タスク名を取得し、それからidが参照しているを見つける:私は何をしようとしている

ansible-playbook playbooks/foo.yml --extra-vars "server=bar taskname=SLM" 

は、コマンドライン引数を取るホストを設定することですに。このIDは、リモートで実行されるPythonスクリプトの最初の入力として使用されます。

プレイブックは正常に動作しますが、警告が表示される理由はわかりません。誰がここで何が間違っているのか説明できますか?

答えて

7

17行目の周りにはそれ以上の場所はありませんか?この警告は、タスク内に2つの同一のキーがある場合(または一般的には任意の場所にある場合)にトリガーされます。

警告がタスクは次のようになります示唆、2つのfileの鍵があると主張:

- name: Clean temp files 
    file: ... 
    file: ... 

よくある間違いは、人々は次のタスクのための新しいリスト項目を開始することを忘れていることです。上記ではありませんしながら、以下が有効になり、:

- name: Clean temp files 
    file: ... 
- file: ... 

私はAnsibleは時々ラインを取得したり、エラーメッセージで間違ったファイルに気づきました。問題が実際にhandlers/main.ymlにある間、私はそれがtasks/main.ymlについて不満を見たのを見ました。その行の近くに重複したfileキーを持つタスクが見つからない場合は、ファイル全体または他のファイルを検索してください。このような場所が見つからない場合は、Ansibleにバグが見つかったようです。その場合は、repot it on githubです。

+0

あなたは正しいですか? 2番目の 'file:'タスクがありました。私は不可解な言葉に慣れていないので、「ファイル・モジュールを参照していた重複したdictキー(ファイル)が見つかりました。 "キー"という言葉で私は辞書と関係があると思った。助けてくれてありがとう。 –

+0

あなたは2つの "タスク:"キーも持っていればこれを得ることができます:)シナリオ:プレイブックには1つのタスクがあり、それを複製して間違ってタスクの見出しをコピーしました。 @udondanが間違った行番号についても述べているものをバックアップすることができます - 私はいくつかの行を警告しています。 –