ansible变量(vars)、机密(vaults)与事实(facts)

1 管理Ansible变量(vars)

Ansible支持利用变量来存储值,并在Ansible项目的所有文件中重复使用这些值。这可以简化项目的创建和维护,并减少错误的数量。
通过变量,可以轻松地在Ansible项目中管理给定环境的动态值。例如,变量可能包含下面这些值:

  • 要创建的用户
  • 要安装的软件包
  • 要重新启动的服务
  • 要删除的文件
  • 要从互联网检索的存档

1.1 命名变量

变量的名称必须以字母开头,并且只能包含字母、数字和下划线。
无效和有效的Ansible变量名称示例

无效的变量名称 有效的变量名称
web server web_server
remote.file remote_file
1st file file_1
file1
remoteserver$1 remote_server_1
fremote_server1

1.1.2 定义变量

可以在Ansible项目中的多个位置定义变量。不过,这些变量大致可简化为三个范围级别:

  • 全局范围:从命令行或Ansible配置设置的变量
  • Play范围:在play和相关结构中设置的变量
  • 主机范围:由清单、事实收集或注册的任务,在主机组和个别主机上设置的变量
    如果在多个范围定义了相同名称的变量,则采用优先级别最高的变量。
    窄范围优先于更广泛的范围:
    由清单定义的变量(低优先级)将被playbook定义的变量覆盖(中优先级),后者将被命令行中定义的变量覆盖(高优先级)。

1.2 playbook中的变量

变量在Ansible Playbook中发挥着重要作用,因为它们可以简化playbook中变量数据的管理。

在Playbook中定义变量

编写playbook时,可以定义自己的变量,然后在任务中调用这些值。例如,名为web_package的变量可以使用值httpd来定义。然后,任务可以使用yum模块调用该变量来安装httpd软件包。
Playbook变量可以通过多种方式定义。一种常见的方式是将变量放在playbook开头的vars块中:

- hosts: all
  vars:
    user: joe
    home: /home/joe
  - name: add user {
  { user }}  
      user: 

在Playbook中使用变量

声明了变量后,可以在任务中使用这些变量。若要引用变量,可以将变量名放在双大括号内。在任务执行时,Ansible会将变量替换为其值。

vars:
  user: joe
  
tasks:
  # This line will read: Creates the user joe
  - name: Creates the user {
  { user }}
    user:
      # This line will create the user named joe
      name: "{
  { user }}"

注意:当变量用作开始一个值的第一元素时,必须使用双引号,是用来防止Ansible将变量引用视为YAML字典的开头。

在外部文件中定义变量

可以使用YAML格式在这一/这些文件中定义playbook变量

web: httpd 
user: tom 

此时不使用playbook中的vars块,可以改为使用vars_files指令,后面跟上相对于playbook位置的外部变量文件名称列表:

  vars_files:
    - service/vars/web # 这是上面文件的路径 

1.3 主机变量和组变量

直接应用于主机的清单变量分为两类:

  • 主机变量,应用于特定主机
  • 组管理,应用于一个主机组或一组主机组中的所有主机
    主机变量优先于组变量,但playbook中定义的变量的优先级比这两者更高。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值