Ansible变量

Ansible的变量

变量必须以字母为首

变量分类

全局变量

剧本变量

资产变量

Facts变量

注册变量

全局变量

vim env.yaml

---
env_name: lyh
env_password: 1
...
[root@docker ~]# ansible all -i localhost, -m debug -a "msg='name is {{env_name}} password is {{env_password}}'" -e @env.yaml
localhost | SUCCESS => {
    "msg": "name is lyh password is 1"
}

剧本变量

在play中的vars字段添加或者在vars_file指定文件

vim playbook_env.yaml
---
- name:	测试剧本变量
  hosts: all
  vars:
    user_var: test-user
    home_var: /home/test-user
  tasks:
    - name: 通过变量创建用户
      user:
        name: "{{user_var}}"
        home: "{{home_var}}"
...
测试
ansible-playbook -i localhost, playbook_env.yaml -C
运行
ansible-playbook -i localhost, playbook_env.yaml
验证
tail /etc/passwd -n 1 |less

test-user:x:1003:1003::/home/test-user:/bin/bash

资产变量

系统内置变量

ansible_ssh_port	#远程主机端口
ansible_ssh_host	#远程主机IP/名
ansible_ssh_usr		#连接用户
ansible_ssh_pass	#不安全,建议使用--ask-pass或者ssh-key
ansible_sudo_pass

Facts变量

在我们运行Playbook过程中就可以看到这一项

Facts变量无需人为声明,由Ansible中的setup模块完成,包含服务器操作系统版本,ip地址,主机名,磁盘,cpu,内存等相关信息

手动收集
ansible all -i localhost, -c local -m setup
模糊匹配过滤参数
ansible all -i localhost, -c local -m setup -a "filter=*mount*"

注册变量

通过上一个task的执行结果来判断是否要执行下一个task

所在字段tasks.register

写一个注册变量相关的yaml
vim register_env.yaml
---
- name: 测试注册变量
  hosts: localhost
  tasks:
    - name: 安装nginx
      yum: name=nginx state=present
      register: installed
    - name: 输出安装结果
      debug: var=installed
...
检查格式并执行
ansible-playbook register_env.yaml --syntax-check
ansible-playbook -i localhost, register_env.yaml -C	#测试
ansible-playbook -i localhost, register_env.yaml

变量优先级

同时存在多个重复变量,优先级顺序

假如资产中的变量存在user=tomcat,Play中的变量user=mysql,执行Ansible-Playbook时又指定全局变量user=www

结果:输出变量为"user=www",如果不指定全局变量,则变量结果为"user=mysql"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值