ansible register

register

register
用于注册一个变量,保存命令的结果(shell或command模块),这个变量可以在后面的task、when语句或模板文件中使用,该指令用在循环中会有不同,请看ansible学习之八:Loops中关于register的讲解

- shell: /bin/pwd
  register: pwd_result

此时变量pwd_result的结果为:

{
    u'changed': True, 
    u'end': u'2014-02-23 12:02:51.982893', 
    u'cmd': [u'/bin/pwd'], 
    u'start': u'2014-02-23 12:02:51.980191', 
    u'delta': u'0:00:00.002702', 
    u'stderr': u'', 
    u'rc': 0,           #这个就是命令返回状态,非0表示执行失败
    'invocation': {'module_name': 'command', 'module_args': '/bin/pwd'}, 
    u'stdout': u'/home/sapser',    #以一个字符串保存命令结果
    'stdout_lines': [u'/home/sapser']     #以列表保存命令结果
}

在随后的task中使用该变量:

- debug: msg="{{pwd_result}}"
  when: pwd_result.rc == 0

循环处理命令结果:

- name: registered variable usage as a with_items list
  hosts: all
  tasks:
      - name: retrieve the list of home directories
        command: ls /home
        register: home_dirs

      - name: add home dirs to the backup spooler
        file: path=/mnt/bkspool/{{ item }} src=/home/{{ item }} state=link
        with_items: home_dirs.stdout_lines       #等同于with_items: home_dirs.stdout.split()

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