Ansible - 执行时需要用户输入的控制命令

Ansible - Control commands when need users input when executing

如何在执行命令时控制用户输入并询问我一些事情 例如:

sudo apt-get install mariadb-server

当您在 ubuntu 中 运行 此命令时,它要求您为 mysql 用户 root 输入新密码,然后再次要求输入密码以进行确认。 我如何将变量(例如 mariadbpass)传递给此命令,因为每次 ansible 运行 都会挂起并失败,所以我必须登录服务器并 运行 手动

dpkg --configure -a

输入提示密码并确认。

谢谢

这不是一个可靠的问题,而是一个真正的 bash 问题。我建议您看一下 this post 并将其中的一些内容绑定到您的剧本中以执行您需要的操作。

在这种情况下,对您来说最简单的方法可能是使用 here string

tasks:
  - shell: "apt-get install mariadb-server <<< $'password\otherprompts\n'"
    sudo: true

解决方法如下: 在你的剧本中安装 mariadb 10 任务之前添加这个

- name: debconf asking for password
  debconf:
   name: maria-db-10.0
   question: "{{ item }}"
   vtype: password
   value: "{{ mariadb_root_password }}"
  with_items:
   - mysql-server/root_password
   - mysql-server/root_password_again