首页 文章

如何确定脚本以前是否使用Ansible运行?

提问于
浏览
1

我正在使用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 回答

  • 3

    这是我最终解决它的方式 . 使用 creates 选项的指针有助于:

    - name: Install Foo Framework
      shell: ./install.sh && touch ~/foo_installed
      args:
        chdir: ~/foo
        creates: ~/foo_installed
    

    使用此方法,仅在安装脚本完成且没有错误时创建 ~/foo_installed 文件 .

  • 2

    我建议改用script模块 . 该模块有一个 creates 参数:

    文件名,当它已经存在时,不会运行此步骤 . (在Ansible 1.5中添加)

    因此,您的脚本可能只是 touch 一个文件,它会阻止在后续调用中执行脚本 .

相关问题