ansible-playbook变量的使用

本文详细介绍了在Ansible中如何使用变量,包括在hosts文件、playbook内和通过变量文件定义变量的方法。并通过实例展示了如何在不同的场景下应用这些变量,如安装特定软件包。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ansible-playbook中使用变量的方式有以下几种。

1、在/etc/ansible/hosts中定义,如下:
[testhost]
192.168.217.120 package=httpd # 普通变量
192.168.217.121 package=git
[testhost:vars] 
package=httpd # 组变量

在这种方式中,普通变量的优先级高于组变量的优先级。组变量主要用于在主机组内的主机都使用相同的变量的情况下。
验证这个变量是否生效:

[root@localhost playbook]# ansible testhost -a "echo {{ package }}"
192.168.217.121 | SUCCESS | rc=0 >>
git

192.168.217.120 | SUCCESS | rc=0 >>
httpd

在play-book中引用变量安装相应的包:

[root@localhost playbook]# cat var_hosts.yml 
---
- hosts: testhost
  remote_user: root

  tasks:
    - name: install  package
      yum: name={{ package }} state=present

执行ansible-playbook

[root@localhost playbook]# ansible-playbook var_hosts.yml 

PLAY [testhost] ************************************************************************************************************************************

TASK [Gathering Facts] *****************************************************************************************************************************
ok: [192.168.217.121]
ok: [192.168.217.120]

TASK [install  package] ****************************************************************************************************************************
ok: [192.168.217.121]
changed: [192.168.217.120]

PLAY RECAP *****************************************************************************************************************************************
192.168.217.120            : ok=2    changed=1    unreachable=0    failed=0   
192.168.217.121            : ok=2    changed=0    unreachable=0    failed=0   
2、在play-book中定义
[root@localhost playbook]# cat var.yml 
---
- hosts: dbservers
  vars:
    package: git

  tasks:
    - name: install package
      yum: name=git state=present

执行ansible-playbook便可得到 验证:

[root@localhost playbook]# ansible-playbook -C var.yml 

PLAY [dbservers] ***********************************************************************************************************************************

TASK [Gathering Facts] *****************************************************************************************************************************
ok: [192.168.217.121]

TASK [install package] *****************************************************************************************************************************
ok: [192.168.217.121]

PLAY RECAP *****************************************************************************************************************************************
192.168.217.121            : ok=2    changed=0    unreachable=0    failed=0  
3、将变量写入文件文件中:

此时对目录结构有要求

[root@localhost playbook]# cd /etc/ansible/
[root@localhost ansible]# tree
.
├── ansible.cfg
├── group_vars
│   └── testhost.yaml
├── hosts
├── host_vars
│   └── 192.168.217.120.yaml
└── roles

3 directories, 4 files

[root@localhost ansible]# cat group_vars/testhost.yaml 
mysql_port: 3307

[root@localhost ansible]# cat host_vars/192.168.217.120.yaml 
mysql_port: 3306

[root@localhost ansible]# ansible testhost -a "echo {{ mysql_port }}"
192.168.217.121 | SUCCESS | rc=0 >>
3307

192.168.217.120 | SUCCESS | rc=0 >>
3306
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值