ansible——管理变量、机密和事实

一、ansible变量简介

  1. 为什么要设定变量:将 playbook 中的某些值使用变量代替,从而简化 playbook 的编写
  2. 变量包含的值:要创建的用户、要安装的软件包、要重启的服务、要删除的文件、要从互联网检索的文档
  3. 命令变量的格式:变量名称必须以字母开头,并且只能含有字母、数字和下划线
    示例:web_server、remote_file、file1
  4. 定义变量的三个范围级别:
    (1)全局范围:从命令行或 ansible 配置设置的变量
    (2)play 范围:在 play 和相关结构中设置的变量
    (3)主机范围:由清单、事实收集或注册的任务,在主机组和个别主机上设置的变量
    注意:如果多个级别上定义了相同名称的变量,优先采用级别最高的变量,窄范围优先于广范围

二、playbook中的变量

1. 定义变量

  1. 常见方式:在playbook开头的vars块中:
- host: all
  vars:    #使用vars块
    user: student  #定义变量user为student
    home: /home/student  #定义变量user家目录为/home/student
  1. 在外部文件定义playbook变量:
    (1)编写变量文件users.yml:注意此文件和playbook1最好在同一目录
    在这里插入图片描述
    (2)在playbook中指定变量文件:
    在这里插入图片描述
    在这里插入图片描述

2. 使用变量

将变量名称放在花括号内即可:
注意:当变量用作开始一个值的第一元素时,必须使用引号

---
- hosts: all
  vars:
    user: jia    #定义变量名称用户user为jia
  tasks:
    - name: Create user {
   {
    user }} #变量名称为user放在了{
   {}}内
      user:
        name: "{
   {
    user }}"      #注意:当变量用作开始一个值的第一元素时,必须使用引号

3. 变量分类:主机变量和组变量

直接应用于主机的清单变量分为两大类:
(1)主机变量:应用于特定主机
(2)组变量:应用于一个主机组或一组主机组中的所有主机
主机变量优先于组变量,但是 playbook 中定义的变量比这两者更高。

3.1 定义主机变量和组变量

方式一:比较旧,不建议采用
缺点:这种做法使的清单文件难以处理,在同一文件中混合提供主机和变量信息,语法也过时

#定义 server1.example.com 的 ansible_user 主机变量:
[webservers]
server1.example.com ansible_user=student

#定义 dbservers 主机组的 user 组变量:
[dbserver]
dbserver1.example.com
dbserver2.example.com
[dbservers:vars]
user=student

#定义嵌套组 user 变量:
[servers1]
node1.example.com
node2.example.com
[servers2]
node3.example.com
node4.example.com
[servers:children]
servers1
servers2
[servers:vars]
user=student

方法二:使用目录填充主机和组变量
定义主机和主机组变量的首选做法是:在与清单文件或目录相同的工作目录中
(1)创建 group_vars和 host_vars 两个目录,这两个目录分别包含用于定义组变量和主机变量的文件
(2)创建 group_vars/servers 的 YAML 文件,设置变量为值:user: student
(3)在 host_vars 目录中创建名称与主机匹配的文件来存放主机变量

所以一个项目目录中包含:ansible.cfg、group_vars、host_vars、inventory、playbook.yml
方法三:使用数组定作为变量


                
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值