我正在使用Ansible将一个框架部署(Git clone,运行安装脚本)到服务器 . 安装步骤意味着运行 install.sh
脚本,如下所示:
- name: Install Foo Framework
shell: ./install.sh
args:
chdir: ~/foo
如何确定我是否在之前的Ansible运行中执行了此步骤?我想在此步骤中添加 when
条件,仅在先前未运行 install.sh
脚本时执行 .
install.sh
脚本执行了一些操作(替换用户's home directory), but it'中的某些文件并不清楚脚本是否在以前只是查看文件之前运行 . 之前可能已存在 ~/foo.sh
文件,目前尚不清楚它是否被替换为安装脚本或以前的那个 .
在Ansible中是否有一种方法可以在服务器上存储一个值's me determine whether this particular task has been executed before? Or should I just create a marker file in the user'的主目录(例如 ~/foo-installed
),我将在以后的playbook调用中检查?
2 回答
这是我最终解决它的方式 . 使用
creates
选项的指针有助于:使用此方法,仅在安装脚本完成且没有错误时创建
~/foo_installed
文件 .我建议改用script模块 . 该模块有一个
creates
参数:因此,您的脚本可能只是
touch
一个文件,它会阻止在后续调用中执行脚本 .