将加密变量与Ansible-Vault结合使用以实现网络自动化

时间:2019-03-26 10:03:02

标签: encryption automation ansible cisco ansible-vault

我搜索了很多关于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

感谢您的帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

让我引用Variables and Vaults

  

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

     

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

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