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()
网友评论