ansible register详解

当我们需要判断对执行了某个操作或者某个命令后,如何做相应的响应处理,也就是说在ansible的playbook中task之间的相互传递变量

例如以下的yaml文件,该yaml文件要实现的功能是:打包一个文件夹,然后改变这个压缩包的名称,用ip命名该压缩包。

---
- hosts: all
  gather_facts: no
  tasks:
    - name: tar_file
      shell: "cd /appslog/scans/ && tar -zcf scan.tar.gz log/"
      become: true
      become_method: su
      become_user: root
      ignore_errors: yes
    - name: register vars
      shell: ifconfig  | grep -A 2 bond0 | grep netmask | awk '{print $2}'
      register: info
    - name: mv_file
      shell: mv /appslog/scans/scan.tar.gz /appslog/scans/{{ item }}.tar.gz
      with_items: "{{ info.stdout }}"
      become: true
      become_method: su
      become_user: root
      ignore_errors: yes

第一个任务就是用shell模块,执行打包命令

第二个任务,通过shell模块找出了ip之后,把这个执行结果传递给register

第三个任务,将第二个任务捕获到的结果info.stdout,赋值给变量通过变量{{ item }}调用register中info.stdout

在playbook 命令加入参数 -v 就可以打印出 register 的内容。所以我们可以看到具体拿到的是什么样的结果。所以我们不仅可以拿到info.stdout,还可以拿到其他的字典值,比如:stdout_lines,cmd等等

ansible register详解_第1张图片

你可能感兴趣的:(ansible register详解)