ansible:ファイルモジュールがスキップされるのはなぜですか?


8

私は次のようなことをするansible 1.1プレイブックを持っています:

- name: copy files
  sudo: True                                                                                                             
  shell: cp /from/* /to/

- name: change owner
  sudo: True
  file: path=$item owner=newuser group=newgroup
  with_fileglob: /to/*

2番目のタスク「所有者の変更」は常にスキップされます。誰かが理由を見つけるのを手伝ってくれる?ファイルが存在するため、ファイルモジュールはスキップしていますか?私は行き詰まっています:)


$ itemを許可するかどうかはわかりません... {{item}}だと思っていました
Arun Sangal

回答:


16

ドキュメントから:

検索プラグインは「制御」マシン上で実行されることを覚えておいてください:

with_fileglob ルックアッププラグインであるため、ansible-playbookを実行しているローカルサーバー上のファイルを探します。

これがあなたができることです:

- name: list files 
  action: command ls -1 /to/* 
  register: dumpfiles 

- name: change ownership 
  action: file path=$item owner=newuser group=newgroup
  with_items: ${dumpfiles.stdout_lines}

あなたがそれを言うようになった今、それはとても理にかなっています。ところで、私は[shell:chown -R newuser:newgroup / to]を使用してこれを解決しました
deadsven

3
この場合、べき等性が失われるため、シェルを使用することは推奨されません。代わりに、ファイルモジュールとwith_itemsを使用する必要があります
Tom

はい、ファイルモジュールを使用したいのですが、with_itemsはglobsをサポートしていませんか?with_itemsリスト内のすべてのファイルを一覧表示することは、私が欲しいものは本当にない
deadsven

私の答えを参照してください。必要なものがあります
Tom Aac 2013年

2
chownを実行するたびに、ファイルのタイムスタンプが変更されます。特にctime。たとえば、一部のバックアップソフトウェアでは問題になる可能性があります。
Tom Aac

5

Ansible 1.1はrecurseパラメータをファイルモジュールに追加したので、所有権の変更タスクに必要なのは次のとおりです。

- name: change ownership 
  action: file state=directory recurse=yes path=/to/ owner=newuser group=newgroup

これにより、実際に状況が変化したときに、より明確になります。シェルまたはコマンドモジュールを使用すると、実際に何も変更されていなくても、常に変更されたステータスが返されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.