Ansible变量与加密管理

本文详细介绍了Ansible中的变量管理,包括定义变量的多种方式如vars、vars_files、register和set_fact,以及变量的优先级。同时,文章重点讨论了如何管理和保护敏感数据,如使用ansible vault进行加密,确保密码和API密钥的安全。最后,通过实例展示了如何创建并执行加密的playbook,以在受管主机上生成包含特定信息的输出文件。
摘要由CSDN通过智能技术生成

Ansible变量

定义变量规则:由字母/数字/下划线组成,变量需要以字母开头,ansible内置的关键字不能作为变量名。

ansible中,可以将变量简化为三个范围

  • Global范围(高):从命令行和ansible配置设置的变量
  • play范围(中):在play和相关结构中设置的变量
  • Host范围(低):inventory、facts或register的变量,在主机组和个别主机上设置的变量

三个范围的变量优先级依次降低,如果变量重复定义,则以优先级高的为准


定义变量的方式

ansible中定义变量的方式有很多种,大致有:

  • 将模块的执⾏结果注册为变量
  • 直接定义字典类型的变量
  • role中⽂件内定义变量
  • 命令⾏传递变量
  • 借助with_items迭代将多个task的结果赋值给⼀个变量
  • inventory中的主机或主机组变量
  • 内置变量

vars定义变量

---
- name: test
  hosts: node1
  vars:
    a: 111
    b: 222
    c:
      c1: 333
      c2: 444
  tasks:
    - name: debug1
      debug:
        msg: "{
  { a }}"

    - name: debug2
      debug:
        msg: "{
  { b }}"

    - name: debug3
      debug:
        msg: "{
  { c }}"

    - name: debug4
      debug:
        msg: "{
  { c.c1 }}"

    - name: debug5
      debug:
        msg: "{
  { c.c2 }}"

[student@ansible ansible]$ ansible-playbook test.yml

PLAY [test] *****************************************************************************************************************************************************************************************************

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

TASK [debug1] ***************************************************************************************************************************************************************************************************
ok: [node1] => {
    "msg": 111
}

TASK [debug2] ***************************************************************************************************************************************************************************************************
ok: [node1] => {
    "msg": 222
}

TASK [debug3] ***************************************************************************************************************************************************************************************************
ok: [node1] => {
    "msg": {
        "c1": 333,
        "c2": 444
    }
}

TASK [debug4] ***************************************************************************************************************************************************************************************************
ok: [node1] => {
    "msg": "333"
}

TASK [debug5] ***************************************************************************************************************************************************************************************************
ok: [node1] => {
    "msg": "444"
}

PLAY RECAP ******************************************************************************************************************************************************************************************************
node1                      : ok=6    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

vars_files变量

[student@ansible ansible]$ vim var.yml
---
a: 111
b: 222
c:
  c1: 333
  c2: 444

[student@ansible ansible]$ vim test.yml
---
- name: test
  hosts: node1
  vars_files: /home/student/ansible/var.yml
  tasks:
    - name: debug1
      debug:
        msg: "{
  { a }}"

    - name: debug2
      debug:
        msg: "{
  { b }}"

    - name: debug3
      debug:
        msg: "{
  { c }}"

    - name: debug4
      debug:
        msg: "{
  { c.c1 }}"

    - name: debug5
      debug:
        msg: "{
  { c.c2 }}"

[student@ansible ansible]$ ansible-playbook test.yml

PLAY [test] *****************************************************************************************************************************************************************************************************

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

TASK [debug1] ***************************************************************************************************************************************************************************************************
ok: [node1] => {
    "msg": 111
}

TASK [debug2] ***************************************************************************************************************************************************************************************************
ok: [node1] => {
    "msg": 222
}

TASK [debug3] *********************************************************************
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值