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

时间:2015-09-30 08:41:18

标签: ansible ansible-playbook

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

sudo apt-get install mariadb-server

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

dpkg --configure -a

输入提示密码及其确认。

谢谢

2 个答案:

答案 0 :(得分:3)

以下是解决方案: 在你的剧本中安装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

答案 1 :(得分:2)

这不是一个安问问题,而是一个真正的问题。我建议你看一下this post并将其中一些与你的剧本联系起来,做你需要的。

在这种情况下最容易使用的是here string

- name: Test Deploy
    hosts: [my-cluster-of-servers]

tasks: 
  - name: Go Into Docker Container And Run Multiple Commands
    docker:
      name: [container-name]
      image: [image-ive-created-container-with-on-server]
      state: present
      command: docker exec -it [container-name] bash