使用加密的 sudo_password.yml 自动执行 Ansible Playbook:安全处理 Vault 密码

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

我对 ansible 的其中一项功能不太满意。

对于我的场景,我想在我的托管节点上执行一个剧本来安装例如 nginx。

现在我的控制节点上有以下 playbook.yml:

---
- hosts: all
  become: yes
  tasks:
    - name: Install Packages
      apt: name={{ item }} update_cache=yes state=latest
      loop: ['nginx', 'vim']
      tags: ['setup']

    - name: Copy index page
      copy:
        src: index.html
        dest: /var/www/html/index.html
        owner: www-data
        group: www-data
        mode: '0644'
      tags: ['update', 'sync']

和我的hosts.yml

---
ungrouped:
  hosts:
    testserver:
      ansible_host: managed.node.ip
      ansible_user: exampleuser
      ansible_become_pass: '{{sudo_password}}'
      ansible_ss_private_key_file: ~/.ssh/id_rsa

ansible.cfg

[defaults]
vault_password_file = vault_pass.txt

为了在我的托管节点上执行剧本,我的控制节点上有一个解密的

sudo_password.yml

现在有几个选项可以正确执行它:

方法一:

ansible-playbook -i hosts.yml --extra-vars '@sudo_pass.yml' ansible-receiver_playbook.yml

方法二:

ansible-playbook -i hosts.yml --ask-vault-pass --extra-vars '@sudo_pass.yml' ansible-receiver_playbook.yml

方法1使用我的ansible.cfg中定义的

vault_pass.txt

方法 2 以交互方式要求我输入我的保管库密码。

现在我在自动化此过程时遇到一些问题。方法 1 可以工作,例如安排为 cronjob。方法 2 不起作用,因为需要输入。

方法 1 对我来说有点不对,因为我不想以纯文本格式保存我的

vault-password
只是为了解密我的加密
sudo_password.yml

到目前为止我是否错过了一些重要的事情?

docker ansible
1个回答
0
投票

到目前为止我是否错过了一些重要的事情?

这取决于您计划如何执行您的剧本。典型的环境可以是 CI/CD 服务器或 K8S 实例。两者都有自己的工具来存储秘密并将它们临时安装到您的剧本可以安全访问的地方。

此外,请查看 Ansible Vault 文档中的使用 Vault 密码客户端脚本在第三方工具中存储密码。

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