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中