我想根据标志部署到不同的目录。
我看到有 – --extra-vars允许传入一个variables,
所以我们可以说,– --extra-vars "flag=test"或--extra-vars "flag=prod"
现在我想要使用test_ *或prod_ *variables,这取决于这个标志。
vars: test_dirs: ["/dataVolumes/dev/deployments/", "/dataVolumes/qa/deployments/"] prod_dirs: ["/dataVolumes/preprod/deployments/", "/dataVolumes/prod/deployments/"]
假设有两个步骤,删除旧文件,并复制新文件。
有没有办法做下面的事情?
- name: delete old files file: state:absent path:"{{item}}" with_items: "{{ test_dirs if flag == 'test' else prod_dirs }}" - name: copy new files copy: src: /opt/ansible/ dest:"{{item}}" with_items: "{{ test_dirs if flag == 'test' else prod_dirs }}"
就像一个条件操作符一样,要在两个列表中进行select
你可以通过在游戏开始时添加一个include_vars任务来实现。 由于include_vars设置的variables具有较高的优先级,所以它们应该排除其他地方设置的variables。
所以你所要做的就是在你的游戏开始时添加这样的内容:
- name: Include test vars. include_vars: file: test.yml when: test == True
variablestesting的价值将比需要是一个布尔值。
不过正如已经指出的,使用group_vars可能会是一个更干净的解决scheme。