我搜索了很多关于Web和Youtube的教程,但是没有运气。
我想通过Ansible配置Cisco交换机,我已经安装了它,可以正常使用..但是我希望将密码(用于vty线路,控制台,启用密码...)理想地存储在主机中文件通过Ansible-Vault加密为变量,因此在我的.yml文件中,我可以访问它们。我希望它们在主机文件中,因为我们为ASW,DSW和CSW设置了不同的密码,因此更易于管理。
我在CLI中生成了加密变量:
ansible-vault encrypt_string enable_password --ask-vault-pass
我将值复制到 / etc / ansible / hosts中的变量:
...
[2960-X:vars]
ansible_become=yes
ansible_become_method=enable
ansible_network_os=ios
ansible_user=admin
enable_password= !vault |
$ANSIBLE_VAULT;1.1;AES256
.....
在 config.yml中:
- name: Set enable password
ios_config:
lines:
- enable secret "{{ enable_password }}"
现在,密码将设置为“!vault |”。 我不确定这是否是最佳实践,我阅读了有关的建议,但我所能找到的只是服务器自动化,而不是网络。
我正在运行Ansible 2.8.0
感谢您的帮助,谢谢。
答案 0 :(得分:0)
运行剧本时,Ansible会在未加密文件中找到变量,所有敏感变量都来自加密文件。
一种最佳实践方法是从以该组命名的group_vars /子目录开始。在此子目录中,创建两个名为 vars 和 Vault 的文件。在vars文件中,定义所需的所有变量,包括任何敏感变量。接下来,将所有敏感变量复制到Vault文件中,并为这些变量加上Vault _ 前缀。您应该使用jinja2语法调整vars文件中的变量以指向匹配的vault_变量,并确保该库文件已被库加密。
此方案不仅限于group_vars /,而且可以应用于变量来自的任何地方。