我必须将 Web 服务器日志从远程机器复制到 Ansible 机器。在剧本的末尾,我想找到带有模式的文件并将其删除。在我定义的任务中 delegate_to: 127.0.0.1
但该任务正在运行其中一台远程机器。
如何使这些任务仅在 localhost
上运行并运行一次:
- name: Finds files and folders
find:
paths: "/tmp/"
patterns: "access-*.tar.gz"
recurse: no
use_regex: yes
register: result
delegate_to: 127.0.0.1
run_once: true
tags:
- pulllogs
- name: display filename
debug:
msg: "{{ result }}"
delegate_to: 127.0.0.1
run_once: true
tags:
- pulllogs
输出:
TASK [operate : Finds files and folders] ***********************************************************************************************************************************************
ok: [host01]
TASK [operate : display filename] ******************************************************************************************************************************************************
ok: [host01] =>
msg:
changed: false
examined: 640
failed: false
files: []
matched: 0
msg: ''
答案 0 :(得分:0)
在 Ansible 2.10 中,委托按预期工作。在输出中,我也看不到代表团。但是,分别在 localhost 和委派的 localhost 上运行的这两个剧都显示了相同的结果。例如,给定在 localhost
的存档shell> sudo find /tmp -name 'access-*.tar.gz'
/tmp/access-01.tar.gz
并且远程主机上没有存档
shell> ssh admin@test_11 sudo find /tmp -name 'access-*.tar.gz'
剧本
- hosts: localhost
tasks:
- find:
paths: /tmp
patterns: "access-*.tar.gz"
recurse: false
use_regex: false
register: result
- debug:
msg: "{{ result.files|map(attribute='path')|list }}"
- hosts: test_11,test_12,test_13
tasks:
- block:
- find:
paths: /tmp
patterns: "access-*.tar.gz"
recurse: false
use_regex: false
register: result
- debug:
msg: "{{ result.files|map(attribute='path')|list }}"
delegate_to: 127.0.0.1
run_once: true
在本地主机和委托本地主机上显示相同的结果
PLAY [localhost] **********************************************************
TASK [find] ***************************************************************
ok: [localhost]
TASK [debug] **************************************************************
ok: [localhost] =>
msg:
- /tmp/access-01.tar.gz
PLAY [test_11,test_12,test_13] ********************************************
TASK [find] ***************************************************************
ok: [test_11]
TASK [debug] **************************************************************
ok: [test_11] =>
msg:
- /tmp/access-01.tar.gz
PLAY RECAP ****************************************************************
localhost : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
test_11 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0