2017-02-23 14 views
0

私はサーバを使ってすべてのreposを無効にしようとしていますので、1つのディレクトリ内の複数のファイルを置き換えようとしていますが、任意のアイデアを評価して作業!ディレクトリ内の複数のファイルのコードを置き換えることが可能

tasks: 

    - name: get repo names 
    raw: find /etc/yum.repos.d/ -type f -name "*.repo" 
    register: repos 

    - name: disable all repos 
    replace: dest={{repos}} regexp="enabled=1" replace="enabled=0" 
    with_items: repos.stdout_lines 

これを実行すると、すべてを一度に実行しようとしているようなエラーが表示されます。もしそうなら、どのように分割するのですか?

/etc/yum.repos.d/CentOS-Debuginfo.repo\r\n/etc/yum.repos.d/epel.repo\r\n/etc/yum.repos.d/CentOS -Base.repoは\ rを\ n 'が}が存在しません "

更新:

- find: 
     paths: "/etc/yum.repos.d/" 
     patterns: "*.repo" 
    register: repos 

    - name: disable all repos 
    replace: dest={{items}} regexp="enabled=1" replace="enabled=0" 
    with_items: repos 

新しいエラーは以下の通りです: "!MSG":" フィールド '引数' を持っています無効な値。未定義の変数が含まれているように見えます。エラーは次のとおりです: 'items'は定義されていません

よろしくお願いします!今無効レポで、このエラーを取得:

FAILED! => { 
    "failed": true, 
    "msg": "'dict object' has no attribute 'stdout_lines'" 
} 

答えて

2

をあなたはdestの引数として、前のタスクの全体の出力を提供しているので、それは、「一度にすべてをしようとして」されています

dest={{repos}} 

代わりに、あなたは反復処理の項目を供給する必要があります。

dest={{item}} 

あなたもドンwith_itemsの変数を引用しないでください。

2番目のタスクは、次のようになります。

- name: disable all repos 
    replace: dest={{repos}} regexp="enabled=1" replace="enabled=0" 
    with_items: "{{ repos.stdout_lines }}" 

以外にも、あなたの代わりにrawコマンドのfind moduleを使用することができます。

+0

こんにちは、上に更新申し訳ありませんが、コメントに大丈夫を表示しないことを実現! – completenewb

+0

更新された回答を確認してください – techraf

+0

ありがとう、ありがとうございます。新しいエラーが追加されました。ありがとうございます。 – completenewb

0

エラーでした:「アイテム」uが代わりに

dest= 

(dest={{item}}) 

内の項目の「アイテム」を使用しなければならないので、これはですが、items

とその適切な方法がある未定義

です:

- name: disable all repos 
    replace: dest={{item}} regexp="enabled=1" replace="enabled=0" 
    with_items: repos 
関連する問題