是否有with_fileglob
以安全方式遠程工作?有沒有with_fileglob遠程工作在ansible?
主要我想使用與with_fileglob
類似的東西,但它會在遠程/目標計算機上對文件進行整理,而不是在運行正常的文件。
是否有with_fileglob
以安全方式遠程工作?有沒有with_fileglob遠程工作在ansible?
主要我想使用與with_fileglob
類似的東西,但它會在遠程/目標計算機上對文件進行整理,而不是在運行正常的文件。
不幸的是,所有的with_*
循環機制都是本地查找,所以在Ansible中沒有真正乾淨的方法來做到這一點。遠程操作設計必須包含在任務中,因爲它需要處理連接和庫存等。
你可以做的是通過對主機進行脫殼生成你的fileglob,然後註冊輸出並在stdout_lines
部分循環的輸出。
所以一個簡單的例子可能是這樣的:
- name : get files in /path/
shell : ls /path/*
register: path_files
- name: fetch these back to the local Ansible host for backup purposes
fetch:
src : /path/"{{item}}"
dest: /path/to/backups/
with_items: "{{ path_files.stdout_lines }}"
這將連接到遠程主機(例如,host.example.com
),得到/path/
下的所有文件名,然後將它們複製回Ansible主機到路徑:/path/host.example.com/
。
使用ls /path/*
我沒有工作,所以這裏是一個使用find
和一些簡單的正則表達式來刪除所有nginx的託管虛擬主機的例子:
- name: get all managed vhosts
shell: find /etc/nginx/sites-enabled/ -type f -name \*-managed.conf
register: nginx_managed_virtual_hosts
- name: delete all managed nginx virtual hosts
file:
path: "{{ item }}"
state: absent
with_items: "{{ nginx_managed_virtual_hosts.stdout_lines }}"
你可以用它來查找所有文件與特定的延長或任何其他組合。例如,要簡單地獲取目錄中的所有文件:find /etc/nginx/sites-enabled/ -type f
。
根據您的經驗,當您執行此操作時,Windows和Linux之間的行結束是否存在問題?例如。會有''with_items'是空的複製stdout從'dir/b'回來? – Nick