我有一个有趣的剧本来运行不同的脚本。我需要基于扩展名更改可执行文件。这是我的剧本:
- name: run nodejs script
command: node "{{item}}" arg1
loop: "{{ lookup('fileglob', '{{path}}/{{deploy_version}}/*.js', wantlist=True) }}"
- name: running python script
command: python "{{item}}" arg1
loop: "{{ lookup('fileglob', '{{path}}/{{deploy_version}}/*.py, wantlist=True) }}"
由于有运行脚本的命令,因此我需要使用“ if,else,statement”。但是我找不到基于扩展名按字母顺序运行脚本的方法。我该如何实现?
答案 0 :(得分:1)
splitext过滤器将从文件名中提取扩展名,然后可将其用于在dict
中查找命令,该文件将文件扩展名映射到命令,然后将其应用于所有您希望的glob,如果我正确理解的话,无论它匹配哪个fileglob,您都希望按字母顺序运行。
- name: run the scripts
command: '{{ cmd_by_ext[ item|splitext|last ] }} {{ item }} arg1'
loop: '{{ (js_files + py_files) | sort }}'
vars:
script_dir: '{{ path + "/" + deploy_version }}'
js_files: '{{ lookup("fileglob", script_dir+"*/.js", wantlist=True) }}'
py_files: '{{ lookup("fileglob", script_dir+"*/.py", wantlist=True) }}'
cmd_by_ext:
'.js': 'node'
'.py': 'python'