2017-08-09 9 views
0

私のpom.xmlのバージョンを以下のコマンドで返信したいと思いますが、動作しません。Aniableプレイブックでsedコマンドを使用する

- name: ensure apache is at the latest version 
    shell: "echo cat \/\/*[local-name()='project']\/*[local-name()='version'] | xmllint --shell pom.xml | sed '\/^\/ >/d' | sed 's/<[^>]*.//g'" 
    register: ArtifactId 
- debug: var=ArtifactId.stdout_lines 

誰かが助けてくれますか?

+0

エラーは何ですか? –

答えて

2

これは、Anipalの問題ではなく、基本的なシェルの問題です。そのコマンドラインもansibleせずにエラーが発生します。

$ echo cat \/\/*[local-name()='project']\/*[local-name()='version'] | xmllint --shell pom.xml | sed '\/^\/ >/d' | sed 's/<[^>]*.//g' 
bash: syntax error near unexpected token `(' 

catコマンドの引数には不十分で引用され、あなたが実際に問題を引き起こすで不要とよいですスラッシュ(/)をエスケープするように見えています。これを試してみてください:>折りたたまれたスカラー演算子を使用して

- hosts: localhost 
    tasks: 
    - shell: > 
     echo cat '//*[local-name()="project"]/*[local-name()="version"]' | 
     xmllint --shell pom.xml | 
     sed '\/^\/ >/d' | 
     sed 's/<[^>]*.//g' 
     register: artifactId 

    - debug: 
     var: artifactId.stdout_lines 

は、あなたが引用のレベルを避けることができ、それが管理するコマンドが容易になります。また、読みやすいように書式設定することもできます。で

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <version>4.0.0</version> 
</project> 

上記脚本結果:次の入力を考えると

これは動作しますが

TASK [command] ***************************************************************** 
changed: [localhost] 

TASK [debug] ******************************************************************* 
ok: [localhost] => { 
    "artifactId.stdout_lines": [ 
     "4.0.0" 
    ] 
} 

は、あなたの代わりにansibleのXPathモジュールのいくつかの並べ替えを使用して検討する必要があります。 This oneは最近活動しているようですが、自分で試したことはありません。

+0

それはあなたが私は、debianでテストそれを持っていますが、それは2線で切り抜いた結果を出力 –

+1

を^^感謝仕事: 'OK:[ローカルホスト] => { "artifactId.stdout_lines":[ " ------ - "、 " 0.1.0-SNAPSHOT " } – Gimbo

+0

XPath式を修正する必要があるかもしれません。 質問を再現可能な例(実行可能なプレイブック*と*対応する 'pom.xml')で更新したいのであれば、私は詳しく見ていきたいと思います。 – larsks

関連する問題