Playbooks 是 Ansible的配置,部署,编排语言.他们可以被描述为一个需要希望远程主机执行命令的方案,或者一组IT程序运行的命令集合.
基础使用方式
ansible-playbook t1.yml
检查yml文件语法格式
ansible-playbook -C t1.yml
查看yml中有哪些task
ansible-playbook t1.yml --list-tasks
查看yml中有哪些host主机
ansible-playbook t1.yml --list-hosts
查看yml中有哪些tag
ansible-playbook t1.yml --list-tags
见 playbook_shell文件夹:《playbook语法说明yml.yml》
循环的作用是让一个task多次执行,而不需要配置多个task 详细见**《loop_demo.yml》**
循环的配置项:
例如,拷贝一堆用通配符匹配出来的文件到各远程主机上。
- hosts: centos
tasks:
- copy: src="{{item}}" dest=/tmp/
with_fileglob:
- /tmp/*.sh
- /tmp/*.py
注意,通配符无法匹配"/",因此无法递归到子目录中,也就无法迭代子目录中的文件
with_lines很好用,可以将命令行的输出结果按行迭代。
例如,find一堆文件出来,copy走。
- hosts: localhost
tasks:
- copy: src="{{item}}" dest=/tmp/yaml
with_lines:
- find /tmp -type f -name "*.yml" #相当于把命令的结果集作为item的每一项
相当于两个for循环
- hosts: localhost
tasks:
- debug: msg="{{item[0]}} & {{item[1]}}"
with_nested:
- [a,b]
- [1,2,3]
结果将得到"a & 1"、“a & 2”、“a & 3”、“b & 1”、"b & 2"和"b & 3"共6个结果。
register用于注册一个变量,保存命令的结果(shell或command模块),这个变量可以在后面的task、when语句或模板文件中使用
详情见《register_demo.yml》
使用 setup 模块可以看到所有支持的内置变量
# 查看所有内置变量
ansible all -m setup
# 过滤
ansible all -m setup -a "filter=changed"
在playbook yml脚本文件中可以使用 {{ }} 来使用变量
1注意:使用变量前需要在yml文件中先定此文件需要使用的变量
**变量定义的位置: **
假如yml配置文件中存在变量 {{var1}} {{var2}}
- name: write log1
shell: chdir=/medcrab/tmp/ttcopy (echo $(date) >> {{var1}}.log)
- name: write log2
shell: chdir=/medcrab/tmp/ttcopy (echo 4456 >> {{var2}}.log)
/etc/ansible/hosts配置的变量可以与服务器ip绑定,但是变量的优先级最低
**ansible-playbook t1.yml 命令执行以后 **
可以ansible根据/etc/ansible/hosts中不同的ip 使用了不同的配置
在playbook剧本中使用vars_files: 指定变量文件 注意路径
**ansible-playbook t1.yml 命令执行以后 **
例如在playbook yml文件内部使用vars: 指定变量
hosts: g2
remote_user:
vars:
var1: jimliu # 配置的变量
var2: xuting
ansible-playbook -e ‘var1=cctv’ -e ‘var2=qtp’ t1.yml 运行的时候指定参数
**变量的优先顺序: -e > vars:=vars_files: >hosts **