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
如何在执行命令时控制用户输入并询问我一些事情 例如:
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