Ansible似乎有效,但没有

时间:2016-08-31 16:34:35

标签: ansible expect

我正在尝试使用expect脚本运行ansible来输入密码和其他有用的信息。

#!/usr/bin/expect -f
log_file /tmp/ansible.log
set timeout 120
set playbook  [lindex $argv 0]
set host  [lindex $argv 1]
set username [lindex $argv 2]
set password [lindex $argv 3]

spawn /usr/bin/ansible-playbook $playbook -l $host -e 'ansible_user=$username' -k -K -vvvv
expect "SSH password:"
send $password\n
expect "SUDO password*"
send $password\n
expect "$"
send "exit\n"

我得到的输出是:

spawn /usr/bin/ansible-playbook /etc/ansible/playbooks/my_playbook.yml -l the_host -e 'ansible_user=ansible_user' -k -K -vvvv
Using /etc/ansible/ansible.cfg as config file
SSH password:
SUDO password[defaults to SSH password]: 

然后我回到提示符。没有失败,没有任何东西,/ tmp / ansible.log中没有任何内容也不在我的屏幕上。我在ansible中输出了详细的输出。

我在ansible.cfg中开启了登录,所有这一切都说它是使用/etc/ansible/ansible.cfg作为配置文件。

我的猜测是错误在于我使用expect的无能,除了作为瑞士军刀 - 但我从stackoverflow中偷走了大部分代码,所以它必须正确!

在SLES 11上使用Ansible 2.0

这是我在期望打开调试时获得的(相关位,我认为它与sudo密码正确匹配):

1: expect "SSH password:"

dbg1.10>
Using /etc/ansible/ansible.cfg as config file
SSH password: 1: send $password\n

dbg1.11>
1: expect "SUDO password*"

dbg1.12>

SUDO password[defaults to SSH password]: 1: send $password\n

dbg1.13>
1: expect "$"

dbg1.14>
1: send "exit\n"

dbg1.15>
1: exit 0
dbg1.16>
2: rename _close.pre_expect close
dbg2.17>

0 个答案:

没有答案