使用带有Ansible-Vault的加密变量进行网络自动化

问题描述 投票:0回答:1

我在网络和Youtube上搜索了很多教程,但没有运气。

我想通过Ansible配置思科交换机,我已经设置好了,运行完美..但我想存储密码(对于vty线路,控制台,启用密码......)理想情况下通过Ansible-Vault加密的主机文件作为变量所以在我的.yml文件中我可以访问它们。我希望它们在hosts文件中,因为我们为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

感谢任何帮助,谢谢。

encryption automation ansible cisco ansible-vault
1个回答
0
投票

让我引用Variables and Vaults

运行Playbook时,Ansible会在未加密的文件中找到变量,所有敏感变量都来自加密文件。

最佳实践方法是从以组命名的group_vars /子目录开始。在此子目录中,创建两个名为vars和vault的文件。在vars文件中,定义所需的所有变量,包括任何敏感变量。接下来,将所有敏感变量复制到Vault文件中,并使用vault_为这些变量添加前缀。您应该使用jinja2语法调整vars文件中的变量以指向匹配的vault_变量,并确保Vault文件是Vault加密的。

该方案不仅限于group_vars /,可以应用于变量来自的任何地方。

© www.soinside.com 2019 - 2024. All rights reserved.