projectA
次のプレイブックからプロジェクトファイルを強制的にコピーしたいと思います。
- name: Populate /usr/local/mywork/ binaries where necessary
copy:
src: "output/here/usr/local/mywork/{{item}}"
dest: "/usr/local/mywork/{{ item }}"
force: '{{ item == "projectA" }}'
with_items: "{{ server_files }}"
私は追加しましたforce: '{{ item == "projectA" }}'
。
しかし、これはうまくいきません。何か間違っていますか?
ベストアンサー1
与えられた木
shell> tree /tmp/test
/tmp/test
├── files
│ ├── projectA
│ ├── projectB
│ └── projectC
└── mywork
├── projectA
├── projectB
└── projectC
2 directories, 6 files
ファイルの内容が異なります
shell> cat /tmp/test/files/*
1
1
1
shell> cat /tmp/test/mywork/*
0
0
0
オプション力:
trueの場合、コンテンツがソースファイルと異なる場合は、リモートファイルが置き換えられます。
falseの場合、ターゲットが存在しない場合にのみファイルが転送されます。
以下のスクリプト
shell> cat pb.yml
- hosts: localhost
vars:
server_files: [projectA, projectB, projectC]
tasks:
- copy:
src: "/tmp/test/files/{{ item }}"
dest: "/tmp/test/mywork/{{ item }}"
force: "{{ item == 'projectA' }}"
loop: "{{ server_files }}"
期待どおりに機能し、ファイルのみコピーします。プロジェクトA。ショー進行--OK--違いモードは提供
shell> ansible-playbook pb.yml -CD
PLAY [localhost] *****************************************************************************
TASK [copy] **********************************************************************************
--- before: /tmp/test/mywork/projectA
+++ after: /tmp/test/files/projectA
@@ -1 +1 @@
-0
+1
changed: [localhost] => (item=projectA)
ok: [localhost] => (item=projectB)
ok: [localhost] => (item=projectC)
PLAY RECAP ***********************************************************************************
localhost: ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
ファイルの内容が変更されない限り、何も変更されません。プロジェクトAそれは同じです
shell> cat /tmp/test/files/projectA
1
shell> cat /tmp/test/mywork/projectA
1
shell> ansible-playbook pb.yml -CD
PLAY [localhost] *****************************************************************************
TASK [copy] **********************************************************************************
ok: [localhost] => (item=projectA)
ok: [localhost] => (item=projectB)
ok: [localhost] => (item=projectC)
PLAY RECAP ***********************************************************************************
localhost: ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0