ansible变量
在实际的应用场景中, 我们希望一些任务,配置根据设备性能的不同而产生差异,比如使用本机cpu核数动态配置nginx的worker_processes参数,可能有一组主机的应用配置文件几乎相同,但略有不同的配置项可以引用变量。
Jinja2过滤器
---
- hosts: 192.168.1.21
vars:
filename: /etc/profile
tasks:
- name: "shell1"
shell: echo {{ filename | basename}} >> /tmp/testshell
本地Facts
我们可通过Facts来获取目标主机的系统信息
注册变量,是将一条命令的运行结果保存到变量中,供后面的playbook使用。
tasks:
- command: /bin/false
register: result
ignore_errors: True
条件语句
有时候一个playbook的结果取决于一个变量,或者取决于上一个任务(task)的执行结果值,在某些情况下,一个变量的值可以依赖于其他变量的值,当然也会影响Ansible的执行过程。
tasks:
- name: "shutdown Debian flavored system"
command: /sbin/shutdown -t now
when: ansible_os_family == "Debian"
循环
通常一个任务会做很多事情,如创建大量的用户、安装很多包,或重复轮询特定的步骤,直到某种结果条件为止,ansible为我们提供了此支持。