触发器:
一个任务同时调用多个触发器:
为远程主机上的用户设置环境变量:
保存前一步命令的输出结果,并保存到foo中:
添加环境变量的另一种方式:
注意:lineinfile模块只适用于修改少量环境变量的情况。如果要修改大量的环境变量,请使用copy模块和模板。
如果任务量变多,或者环境变量变多,则需要在playbook中的var区块定义环境变量。
playbook中的变量:
ansible-playbook example.yml --extra-vars "foo=bar"
ansible-playbook example.yml --extra-vars "@even_more_vars.json"
ansible-playbook example.yml --extra-vars "@even_more_vars.yml"
vars.yml的格式如下:
顶格写。
ansible的内置环境变量,可以通过setup模块查看到。
使用场景:根据ansible的内置环境变量来判断如何执行。
为CentOS系统定义一个变量配置文件:apache_CentOS.yml,内容为apache: httpd
为Debian系统定义一个变量配置文件:apache_default.yml,内容为apache: apache2
在inventory文件中定义变量:【不建议这么做】
在group_vars目录下,按照组名创建文件,然后填写变量。
在host_vars目录下,按照主机名创建文件,然后填写变量。
注意:组名和主机名是根据/etc/ansible/hosts文件中的内容来的。
假如给app1.example.com这台主机设置一组变量,则需要先创建/etc/ansible/host_vars/app1.example.com文件,
然后将变量填写到里面即可。
在app1.example.com文件中填写内容如下:
假如给shanghai这组主机设置一组变量,则需要先创建/etc/ansible/group_vars/shanghai文件,然后将变量填写到里面即可。
注册变量:将操作的结果,包括标准输出和标准错误输出,保存到变量中,然后再根据这个变量的内容来决定下一步的操作。
数组变量或列表变量:
取值时,用python语法:
foo_list[0]
foo_list[1]
foo_list[2]
用jinja语法:
foo_list|first