ansible 将 `--ask-pass` 替换为受保护的密码

ansible replace `--ask-pass` with a vaulted password

任意变量替换--ask-pass,比如ansible_become_pass替换--ask-become-pass ?

我正在使用 Ansible 2.9

剧本名称:itop_db.yml

剧本:

 - name: configure DB to listen
   hosts: itop_acc_db
   become: yes
   vars: vars.yml
   tasks:

     - name: configure DB
       lineinfile:
         path: /etc/my.cnf.d/server.cnf
         regexp: '^bind-address'
         line: bind-address={{ ansible_default_ipv4.address }}

Ansible 主机文件:

all:
  hosts:
  children:
    itop_acc:
      hosts:
        hostname1.domain
    itop_pro:
      hosts:
        hostname2.domain
    itop_dev:
      hosts:
        hostname3.domain
    itop_acc_db:
      hosts:
        dbhostname1.domain ansible_ssh_pass=ansible_ssh_pas ansible_become_pass=ansible_become_pas

变量文件:

vars:
ansible_ssh_pas: vault_ansible_ssh_pass
ansible_become_pas: vault_ansible_become_pass

保险库文件:

vault_ansible_ssh_pass: 'password'
vault_ansible_become_pass: 'password'

命令行:

ansible-playbook itop_db.yml --ask-pass --ask-become-pass

我正在尝试用保险密码替换 --ask-pass-k 选项,以便解决方案完全自动化,无需人工干预。

我无法改变目标服务器身份验证仅基于密码这一事实。 目标服务器其实需要两个密码,一个ssh,一个sudo。

从文档和 Whosebug 我想我了解如何使用 ansible_become_pass 变量将 --ask-become-pass-K 替换为受保护的密码。

我在这里查看了一些页面,这让我更接近但还没有。 下面的 link 正确建议使用选项 -b,它消除了成为密码的提示。 Is there any way to specify both ask-pass and ask-become-pass only once in Ansible?

这个 link 建议使用 ansible_become_pass 作为 --ask-become-pass Specify sudo password for Ansible

这位link虽然8岁左右,但和我有同样的问题,但没有答案。 Ansible: ask-pass programmatically

写完这些,我想它可能会用ansible_pass代替--ask-pass。 虽然我在任何地方都看不到这种描述。

深入挖掘后,我发现这个 link 建议使用 ansible_ssh_passhttps://serverfault.com/questions/628989/how-to-set-default-ansible-username-password-for-ssh-connection

我已经尝试了上述设置,但在执行提到的剧本时我仍然收到密码提示。

欢迎任何帮助或提示。

ansible_ssh_passansible_password 应该这样做。它可以在清单文件中定义,如记录 here. Or in ansible.cfg file, more details here. The ansible-playbook flag --connection-password-file can also be used after storing password in a file. More details here. Its also recommended to use encrytion to store sensitive information. Best practice is to use vault in group_vars, as mentioned here。希望这有帮助。