Ansible -> 如何强制执行所有任务?
Ansible -> How to force execution of all tasks?
我们想重置服务器安装。
我们已经有了 Ansible 脚本来设置我们的服务器,所以我们想执行它。
但是 Ansible 检查,例如有些文件已经存在,然后跳过准备这些文件的步骤,但我们想覆盖所有文件。
有什么方便的选择吗?
根据评论更新
在那种情况下(服务器上的证书需要重新生成)我的剧本中有一个 nuke
标志,它始终设置为 false
和一个执行清理的任务
- file:
path: '{{ item }}'
state: absent
when: nuke
with_items:
- /path/to/file1
- /path/to/file2
当我需要重新创建东西时,我使用 ansible 和
ansible-playbook pb.yml -e nuke=true
这不是最优雅的解决方案,但它完成了工作。
旧的过时答案
没有任何标准的方法可以做到这一点。但我认为这没有任何意义。
Ansible 保证您提供的事物(即文件)的最终形式与您告诉它的是什么相匹配。
例如,如果您部署这样的模板
- template:
src: ./foo
dest: /etc/foo
owner: root
然后你执行它,文件保证有正确的内容并且归用户 root 所有。
您可以添加许多配置以确保(get_url
的校验和等)。
我们想重置服务器安装。
我们已经有了 Ansible 脚本来设置我们的服务器,所以我们想执行它。 但是 Ansible 检查,例如有些文件已经存在,然后跳过准备这些文件的步骤,但我们想覆盖所有文件。
有什么方便的选择吗?
根据评论更新
在那种情况下(服务器上的证书需要重新生成)我的剧本中有一个 nuke
标志,它始终设置为 false
和一个执行清理的任务
- file:
path: '{{ item }}'
state: absent
when: nuke
with_items:
- /path/to/file1
- /path/to/file2
当我需要重新创建东西时,我使用 ansible 和
ansible-playbook pb.yml -e nuke=true
这不是最优雅的解决方案,但它完成了工作。
旧的过时答案
没有任何标准的方法可以做到这一点。但我认为这没有任何意义。
Ansible 保证您提供的事物(即文件)的最终形式与您告诉它的是什么相匹配。
例如,如果您部署这样的模板
- template:
src: ./foo
dest: /etc/foo
owner: root
然后你执行它,文件保证有正确的内容并且归用户 root 所有。
您可以添加许多配置以确保(get_url
的校验和等)。