gpt4 book ai didi

ansible - 如何使用 vault 在 ansible 中为一组主机提供 SSH 用户密码

转载 作者:行者123 更新时间:2023-12-01 11:16:07 24 4
gpt4 key购买 nike

考虑以下 Ansible hosts 文件:

[webservers]        
server1.example.com ansible_ssh_pass=1234567
server2.example.com ansible_ssh_pass=2345678
server3.example.com ansible_ssh_pass=3456789

我想从保险库文件中包含这些密码值,并有一个 hosts 文件(我的目的是拥有一个 ini 库存格式):
[webservers]        
server1.example.com ansible_ssh_pass={{ ssh_pass }}
server2.example.com ansible_ssh_pass={{ ssh_pass }}
server3.example.com ansible_ssh_pass={{ ssh_pass }}

其中 sss_pass 变量来自 host_vars 文件夹中定义的拱形文件。

相关的 ansible 文件夹结构如下所示:
playbook.yml
inventories/
atlanta/
group_vars/
hosts
host_vars/
server1.example.com
server2.example.com
server3.example.com

但 ansible 正在提示:
[WARNING]:  * Failed to parse /root/hsm-ansible-deploy/inventories/atlanta/hosts with ini plugin: /root/hsm-ansible-deploy/inventories/atlanta/hosts:18: Expected key=value host variable assignment, got: ssh_pass
  • 为什么会出现错误?
  • 如何将密码导入 hosts 文件?
  • 最佳答案

    正如@techraf 所指出的,这只是一个语法问题。 ini的正确写法hosts文件是:

    [webservers]        
    server1.example.com ansible_ssh_pass="{{ ssh_pass }}"
    server2.example.com ansible_ssh_pass="{{ ssh_pass }}"
    server3.example.com ansible_ssh_pass="{{ ssh_pass }}"

    但我也找到了一个更优雅的解决方案,其中 hosts文件更优雅,不提供 ansible_ssh_passhosts 中完全可变:
    [webservers]        
    server1.example.com
    server2.example.com
    server3.example.com

    并使用 group_vars/all在那里定义这个变量:
    ---
    ansible_ssh_pass: "{{ vault_ansible_ssh_pass }}"

    哪里 vault_ansible_ssh_pass在每个主机 secret 文件中定义,如 host_vars/server1.example.com
    ---
    vault_ansible_ssh_pass: "my secret password"

    然后这些文件使用 ansible-vault 加密:
    ansible-vault encrypt inventories/atlanta/host_vars/server*/vault --vault-password-file ~/.vault_pass.txt

    哪里 ~/.vault_pass.txt以明文形式包含 ansible 保险库密码。

    关于ansible - 如何使用 vault 在 ansible 中为一组主机提供 SSH 用户密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50973997/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com