使用ansible安装LDAP客户端

使用ansible安装LDAP客户端,ansible,ldap,Ansible,Ldap,我们需要在156台机器上安装LDAP客户端。所以我们想用ansible来完成这个任务 apt-get install ldap-utils libpam-ldapd libnss-ldapd nscd 但当我们安装它时,在响应(弹出框)中询问了很多问题,我们面临着如何在playbook中处理这些响应的问题 我使用了expect模块,但当我们在屏幕上看到问题/回答而不是弹出框时,它运行良好,如下所示: - name: run command to install rubyencoder

我们需要在156台机器上安装LDAP客户端。所以我们想用ansible来完成这个任务

apt-get install ldap-utils libpam-ldapd libnss-ldapd nscd
但当我们安装它时,在响应(弹出框)中询问了很多问题,我们面临着如何在playbook中处理这些响应的问题

我使用了
expect
模块,但当我们在屏幕上看到问题/回答而不是弹出框时,它运行良好,如下所示:

- name: run command to install rubyencoder
    expect:
      chdir: /home/ubuntu/rubyencoder-evaluation/bin
      command: /home/ubuntu/rubyencoder-evaluation/bin/rubyencoder
      responses:
        '.*Press return key to continue.*': ""
        '.*type \"I AGREE\".*': "I AGREE"
        '.*Your RubyEncoder profile e-mail.*': "abc@xyz.com"
        '.*Your RubyEncoder profile password.*': ""
上面的配置正确地处理响应,但相同的方法在ldap客户端安装中不起作用

我正在使用下面的剧本:

---
- hosts: test1
  become: true
#  remote_user: dagar
#  sudo: yes
  tasks:
  - name: install ldap client packages
    expect:
     command: apt-get install ldap-utils libpam-ldapd libnss-ldapd nscd
     responses:
      '.*Do you want to continue?.*': ""
      '.*LDAP server URI.*': "Ok"
      '.*LDAP server search base.*': "Ok"
      '.*Name servives to configure.*': "Ok"
      '.*Restart services during package upgrades without asking?.*': "No"
      '.*Services to restart to make them use the new libraries.*': "Ok"
有人能帮我解决上述问题吗

任何帮助或指导都将受到感谢


谢谢。

我不知道如何仅使用ansible来实现这一点,但由于您已经在使用expect来自动执行脚本响应,因此可以使用自动热键或sikuli之类的工具来回答弹出窗口。您可以让ansible运行expect脚本来回答脚本化的响应,并运行autohotkeys脚本来回答弹出窗口。或者,您可以修改为安装运行的任何脚本,以避免弹出窗口

您可以查看更多信息:


这个公认的答案可能有助于:


它使用slapd和herdoc来定义要使用的debconf集合选择的答案。

在这种情况下,“不工作”是什么意思?挂起来了?它提供了错误的输入?它会重新启动你的电脑吗?您未能包含一部分日志输出,这些日志输出可能有助于任何人帮助您不使用shell触发
apt-get
命令。使用(默认情况下为非交互式)。在以交互方式安装时,您回答的问题基本上是默认情况下创建配置文件或启用服务。只要确保你在你的剧本中做了同样的事情,按a键和/或正确启用服务(例如使用)@mdaniel:我似乎很清楚什么是“不工作”的意思。他不知道如何自动回答问题。