Ansible变量
自动化运维工具Ansible变量
变量提供了便捷的方式来管理Ansible playbook的每一个项目中的动态值,比如 nginx-1.6.3 这个软件包的版本,在其它地方或许会反复使用,那么如果讲此值设置为变量,然后再在其他的playbook中调用,会方便许多。如此一来还方便维护,减少维护的成本。
变量的定义方式
## 优先级
1.命令行
2.playbook
- vars_files
- vars
3.host_vars
4.group_vats
5.主机清单
命令行设置变量
# 定义变量的过程 在执行playbook的时候 命令行
-e 'id=666' -e 'user=www'
# 调用变量在play中
playbook设置变量
# 定义变量在play中
# 调用变了在play中
## vars
---
- hosts: web_group
vars: # 定义变量
packages:
- httpd
- redis
- nginx
tasks:
- name: 安装服务
yum:
name: "{{ packages }}" # 调用变量
state: present
# vars_files
在文件中定义变量
vim ansible_vars.txt
---
- hosts: web_group
vars_files: /root/ansible_vars.txt # 定义变量
tasks:
- name: 安装服务
yum:
name: "{{ packages }}" # 调用变量
state: present
host_vars和group_vars
# 两个目录要和你的playbook剧本在同一层级
test.yml /root/ansible
# host_vars
以主机名命名 针对单台主机
/root/ansible/host_vars/web01
id: 666
group: www
# group_vars
是以主机群组命名 针对多台主机
/root/ansible/host_group/web_group
# 主机名称叫什么 你定义的文件就要同名
# 文件名要以主机名为定义
# 文件里面写的变量只会生效在对应的主机是
# host_vars要和您的yml文件平级!!!!!!!!!
主机清单
vim /etc/ansible/hosts
[web_group:vars] ## 针对web_group 组
id=11111
user=aaa
# 定义变量在主机清单中
# 调用变量实在playbook中