質問: ansible commandモジュールは「|」と言います違法な性格です ansibleを使用してプロジェクトを展開し、指定されたパッケージがインストールされているかどうかを確認しようとしていますが、タスクに問題があります。タスクは次のとおりです。- name: check if python-apt is installed command: dpkg -l | grep python-apt register: python_apt_installed ignore_errors: true そして、ここに問題があります:$ ansible-playbook -i hosts idempotent.yml play [lxc-host] *************************************************************** gathering facts *************************************************************** ok: [10.0.3.240] task: [idempotent | check if python-apt is installed] ************************* failed: [10.0.3.240] => {"changed": true, "cmd": ["dpkg", "-l", "|", "grep", "python-apt"], "delta": "0:00:00.015524", "end": "2014-07-10 14:41:35.207971", "rc": 2, "start": "2014-07-10 14:41:35.192447"} stderr: dpkg-query: error: package name in specifier '|' is illegal: must start with an alphanumeric character ...ignoring play recap ******************************************************************** 10.0.3.240 : ok=2 changed=1 unreachable=0 failed=0 この文字'|'が違法である理由。
回答: ansibleドキュメントのコマンドモジュール について読む: シェルを介して処理されないため、「。」、「>」、「|」、「&」などの操作は機能しません。 推奨されているように、 シェルモジュール を使用します。- name: check if python-apt is installed shell: dpkg -l | grep python-apt register: python_apt_installed ignore_errors: true 価値があるものについては、 aptコマンド を使用して、debian環境でのインストールを確認/確認できます。- name: ensure python-apt is installed apt: name=python-apt state=present