ansible 变量,机密

ansible 变量

目录

ansible 变量

命名规范

定义变量

1.Playbook:在play和相关结构中设置的变量

2.在playbook中引用变量

主机变量

通过命令定义变量

机密管理

创建加密文件

查看加密文件

解密加密文件

加密现有文件

更改加密文件密码


命名规范

变量的命名应该符如下合两个规范:

  • 变量应该由字母、数字、下划线组成
  • 变量应该以字母开头

例:

无效的变量名称有效的变量名称
web serverweb_server
remote.fileremote_file
1st filefile_1
file1
remoteserver$1remote_server_1
remote_server1

定义变量

优先级顺序:命令行>主机变量>playbook变量

1.Playbook:在play和相关结构中设置的变量

[root@ansible opt]# cat inventory 
[lamp]
# 192.168.75.128 #php
# 192.168.75.143 #mysql

[apache]   
192.168.75.150 #apache

[apache:vars]
user=yang        //设置apache主机的变量,登录用户为yang

//编写一个脚本文件,测试
[root@ansible opt]# cat test.yml 
---
- hosts: apache
- tasks: create user
    - name: 
      user: 
        name: "{{user}}"   //创建用户,由于变量user=yang,所以最后创建的用户应该是yang
        state: present

//执行
[root@localhost opt]# ansible-playbook /test.yml 

PLAY [192.168.75.150] *********************************************************

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

TASK [install package] *********************************************************
changed: [192.168.75.150]

PLAY RECAP *********************************************************************
192.168.75.150           : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0 

//在受控主机上查看
[root@apache ~]# id yang 
uid=1001(yang) gid=1001(yang) 组=1001(yang)

2.在playbook中引用变量

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

主机变量

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

  • 主机变量,应用于特定主机
  • 组管理,应用于一个主机组或一组主机组中的所有主机

主机变量优先于组变量,但playbook中定义的变量的优先级比这两者更高。

若要定义主机变量和组变量,一种方法是直接在清单文件中定义。这是较旧的做法,不建议采用,但你可能会在未来的工作当中遇到。

定义主机变量

[root@ansible opt]# cat inventory
[lamp]
# 192.168.75.128 #php
# 192.168.75.143 #mysql

[apache]
192.168.75.150 ansible_user=yang #apache //添加apache这台主机的变量

定义组变量

[apache]
192.168.75.150

[apache:vars]
user=yang

通过命令定义变量

清单变量可被playbook中设置的变量覆盖,这两种变量又可通过在命令行中传递参数到ansible或ansible-playbook命令来覆盖。在命令行上设置的变量称为额外变量。

当需要覆盖一次性运行的playbook的变量的已定义值时,额外变量非常有用。例如:

ansible-playbook test.yml -e "user=yang"

定义servers组的user组变量,该组由两个主机组成,每个主机组有两个服务器:

[servers1]
node1.example.com
node2.example.com

[servers2]
node3.example.com
node4.example.com

[servers:children]
servers1
servers2

[servers:vars]
user=joe


此做法存在一些缺点,它使得清单文件更难以处理,在同一文件中混合提供了主机和变量信息,而且采用的也是过时的语法


通过register注册变量

//编写测试文件,使其输出在/root/bai下
---
- hosts: httpd
  tasks:
    - name:
      command: "echo wuhu"
      register: result
      
    - name:
      shell: "echo {{ result['stdout']}} > /root/bai"
      
[root@localhost opt]# ansible-playbook playbook/test.yml 

PLAY [httpd] *******************************************************************

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

TASK [command] *****************************************************************
changed: [192.168.75.150]

TASK [shell] *******************************************************************
changed: [192.168.75.150]

PLAY RECAP *********************************************************************
192.168.75.150            : ok=3    changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

//在apache主机上查看结果
[root@www ~]# cat bai 
wuhu

机密管理


Ansible可能需要访问密码或API密钥等敏感数据,以便能配置受管主机。通常,此信息可能以纯文本形式存储在清单变量或其他Ansible文件中。但若如此,任何有权访问Ansible文件的用户或存储这些Ansible文件的版本控制系统都能够访问此敏感数据。这显示存在安全风险。

Ansible提供的Ansible Vault可以加密和解密任何由Ansible使用的结构化数据文件。若要使用Ansible Vault,可通过一个名为ansible-vault的命令行工具创建、编辑、加密、解密和查看文件。Ansible Vault可以加密任何由Ansible使用的结构化数据文件。这可能包括清单变量、playbook中含有的变量文件、在执行playbook时作为参数传递的变量文件,或者Ansible角色中定义的变量。


创建加密文件

[root@ansible opt]# ansible-vault create ang.yml //创建机密文件ang.yml
New Vault password: 
Confirm New Vault password: 
[root@ansible opt]# cat a
ang.yml      ansible.cfg  apache/      
[root@ansible opt]# cat ang.yml  //测试是否加密成功
$ANSIBLE_VAULT;1.1;AES256
35336163333631613433636165656163653437633063383737653163663934633236353236333738
6630653861343030663364663864386361353533363338650a333538646439636638613364663734
33326133636365643861336435383338363765393461333235646137373432303564333066336462
3537313566666239350a353866616161353138386238613862643535653463306439663930656335
35393430353931343334303066636366323366366132643335623634636131633633306362376435
6437366261363130626334393862313366393339653434333464

查看加密文件

//查看加密文件,输入密码后即可查看
[root@ansible opt]# ansible-vault view ang.yml 
Vault password: 
江月何年初照人。江人何年初见月

解密加密文件

[root@ansible opt]# ansible-vault decrypt ang.yml 
Vault password: 
Decryption successful
[root@ansible opt]# cat ang.yml 
江月何年初照人。江人何年初见月
[root@ansible opt]# 

加密现有文件

[root@ansible opt]# ansible-vault encrypt ang.yml 
New Vault password: 
Confirm New Vault password: 
Encryption successful
[root@ansible opt]# cat ang.yml 
$ANSIBLE_VAULT;1.1;AES256
36636335643732316365623633646438653131376262363538623635323838613939393436326637
3333646166306530323563356338373033323465666262310a356463633666363239646638343037
63636634336164616164623562343861353864303035656564323436393930663831663963373331
3762646136633737300a363136623730303030343630333264633331653933663131616433613435
32643330646466653835393132613231353461373130376364316336303533373465313866636231
3535613134386136616333303733366335646634333730313035
[root@ansible opt]# 

更改加密文件密码

[root@ansible opt]# ansible-vault rekey ang.yml 
Vault password: 
New Vault password: 
Confirm New Vault password: 
Rekey successful
[root@ansible opt]# 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值