0

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

我想通过 Ansible 配置 Cisco 交换机,我已经设置好了,可以完美运行.. 但我想将密码(用于 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

任何帮助表示赞赏,谢谢。

4

1 回答 1

0

让我引用变量和保险库

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

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

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

于 2019-03-26T11:49:55.710 回答