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. 쇼 진행--확인--차이점모드는 제공
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