【发布时间】:2022-10-24 20:42:29
【问题描述】:
我正在使用一个期望脚本来自动回答旨在将 Linux 系统添加到活动目录的 shell 脚本中的提示。我只有三个提示:位置,用户名,密码。我正在使用 Ansible 来执行它。
脚本执行时的问题,它尝试在 vm、adcli、realmd 等上安装 ~ 49 rpms。Yum 开始安装 rpms,但它从未完全完成。有时,它会在 17、46 或 42 rpms 后停止。它不会产生错误,但只是不一致地停止,并且 vm 显然没有加入 AD。
我知道我可以使用 Ansible 来编写任务并回避使用 bash 脚本。我的目标是至少暂时使用另一位同事的工作并在以后生成 Ansible 游戏。
如果我在 Ansible Tower 之外使用脚本,它就可以正常工作。 shell 脚本中的所有函数都会按预期执行并安装 rpm。这是我第一次尝试使用 expect,所以我可能做错了什么。谢谢参观。
- name: Joining of system to the domain
ansible.builtin.shell: |
set timeout 10
spawn sudo ./addto-AD
match_max 100000
expect -exact "Please Enter the Environment (i.e. Portand or Seattle): "
send -- "Seattle\r"
expect -exact "\r"
expect -exact "Enter Elevated AD Username: "
send -- "{{ elevated }}\r"
expect -exact "\r"
expect -exact "Enter Password for User: "
send -- "{{ elevated_pass }}\r"
expect -exact "\r"
expect eof
【问题讨论】:
-
期限 ”...我可以使用 Ansible 编写任务并回避使用 bash 脚本。“对我来说似乎是解决问题的方法。
-
ansible.builtin.shell 用于运行 shell 命令。 Expect 使用不是 shell 的 tcl 语言。