ansible 注册变量输出未定义变量

ansible 注册变量输出未定义变量

我花了半天时间尝试做这个剧本。我使用 stat 模块检查文件的 sha1sum,如果它不等于第二个文件,它应该替换正确的文件。但是在注册一些变量时,输出显示变量未定义我做错了什么?

---
- hosts: all
  remote_user: root
  tasks:
    - name: get sum of file
      stat:
        path: /home/roundcube/config.php
        checksum_algorithm: sha1
        get_checksum: yes
      register: sum      
      
      stat:
        path: /home/archive/config.php
        checksum_algorithm: sha1
        get_checksum: yes
      register: sum2
      
    - name: result
      ansible.builtin.copy:
        src: /home/archive/config.php
        dest: /home/roundcube/config.php
      when: sum.stat.checksum != sum2.stat.checksum

答案1

您缺少将第二个统计数据定义为任务的连字符。

---
- hosts: all
  remote_user: root
  tasks:
    - name: get sum of file
      stat:
        path: /home/roundcube/config.php
        checksum_algorithm: sha1
        get_checksum: yes
      register: sum      
      
    - stat:
        path: /home/archive/config.php
        checksum_algorithm: sha1
        get_checksum: yes
      register: sum2
      
    - name: result
      ansible.builtin.copy:
        src: /home/archive/config.php
        dest: /home/roundcube/config.php
        remote_src: yes
      when: sum.stat.checksum != sum2.stat.checksum

请注意,复制任务中还缺少remote_src: yes参数。如果没有它,Ansible 会假定文件位于本地计算机上,而不是远程主机上。

相关内容