Ansible PlayBookでコマンドに条件付き強制を追加する方法は?

Ansible PlayBookでコマンドに条件付き強制を追加する方法は?

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

おすすめ記事