Ansible 2.0.0.2:Ansible不';Don’我不尊重u";转换

Ansible 2.0.0.2:Ansible不';Don’我不尊重u";转换,ansible,ansible-2.x,Ansible,Ansible 2.x,我正在探索Raspberry PI 2上新安装的Archlinux安装,如下所示: ansible-i PI2 arch-m设置-c paramiko-k-u报警-vvvv 这对我来说意味着:针对与用户“报警”连接的IP启动设置模块,询问该特定用户的密码。然而,最终尝试连接的用户是“root” 以下是调试响应: 加载了stdout类型的最小回调,v2.0 为用户建立连接:端口22上的root用户到192.168.1.18 192.168.1.18 |遥不可及!=>{ “更改”:错误, “msg”

我正在探索Raspberry PI 2上新安装的Archlinux安装,如下所示:

ansible-i PI2 arch-m设置-c paramiko-k-u报警-vvvv

这对我来说意味着:针对与用户“报警”连接的IP启动设置模块,询问该特定用户的密码。然而,最终尝试连接的用户是“root”

以下是调试响应:

加载了stdout类型的最小回调,v2.0
为用户建立连接:端口22上的root用户到192.168.1.18
192.168.1.18 |遥不可及!=>{
“更改”:错误,
“msg”:“错误!身份验证失败。”,
“遥不可及”:真实
}

清单如下所示:

[拱门]
192.168.1.18

以下是一些可能相关或不相关的事项:

  • 不允许通过root进行ssh登录
  • sudo没有安装
  • 默认用户和密码为“报警”:“报警”
  • 没有将ssh密钥复制到计算机,因此尝试了paramiko连接
不能忽略并导致成功连接的是将
ansible\u user=alarm
添加到清单文件中的IP行

编辑 在官方文件中发现了这段有趣的文章:其中指出:

<>代码>另一个要考虑的重要事项(对于所有版本)是连接特定变量重写配置、命令行和播放特定选项和指令。例如:

ansible\u用户将覆盖
-u
远程用户:`

然而,最初的问题似乎仍然存在。清单中没有提到
ansible\u用户
,为什么使用root而不是通过
-u
明确提到的用户

编辑\u结束

这是预期的行为吗


谢谢

我虚拟了自己的Ansible 1.9.4沙盒,复制了Ansible.cfg和清单,然后再次运行命令。有点像预期的那样:

⤷ ansible——版本
表1.9.4
配置的模块搜索路径=无
(ANS19TEST)~/Documents/Code/VENVS/ANS19TEST
⤷ ansible-i PI2 arch-m设置-c paramiko-k-u报警-VVV
SSH密码:
为用户建立连接:端口22至192.168.1.18上的报警
远程模块设置

从我的立场来看,我会说这是一只虫子。也许有人能证实?!这就去了追踪器那里

干杯

编辑

为了简洁起见,我省略了清单文件中的一个重要部分,这最终是造成这种行为的原因。看起来是这样的:

[hypriot]

192.168.1.18 ansible_用户=根

[拱门]

192.168.1.18

引自Ansible bugtracker:

清单中使用的名称是词典中的关键字。因此,作为主机特定变量放入其中的所有内容都将合并到一个大字典中。这意味着在某些冲突的情况下,变量会被其他值取代

您可以通过为同一主机使用不同的名称(例如,使用IP地址和主机名,或别名或DNS别名)来防止这种情况,在这种情况下,您仍然可以执行自己喜欢的操作

所以我的库存现在看起来像这样:

[hypriot]

hypriot\u local ansible\u host=192.168.1.18 ansible\u user=root

[archlinux]

arch_local ansible_host=192.168.1.18


这个很好用。Ansible跟踪器上的相应问题如下:

您不需要将paramiko指定为连接类型,Ansible将找出该部分。您可能有一个
group\u vars
目录,其中有一个
ansible\u user
或为该主机定义的
ansible\u ssh\u user
变量,该变量可能会覆盖报警用户

我能够在ansible 2.0.0.2上复制您对运行Raspian的raspberry pi 2的测试,没有任何问题:

➜  ansible  ansible -i PI2 arch -m setup -u alarm -vvvv -k
Using /etc/ansible/ansible.cfg as config file
SSH password:
Loaded callback minimal of type stdout, v2.0
<192.168.1.84> ESTABLISH CONNECTION FOR USER: alarm on PORT 22 TO 192.168.1.84
CONNECTION: pid 78534 waiting for lock on 9
CONNECTION: pid 78534 acquired lock on 9

paramiko: The authenticity of host '192.168.1.84' can't be established.
The ssh-rsa key fingerprint is 54e12e8153e0319f450934d606dca7df.
Are you sure you want to continue connecting (yes/no)?
yes
CONNECTION: pid 78534 released lock on 9
<192.168.1.84> EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454502995.07-263327298967895 )"     && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454502995.07-263327298967895 )" )
<192.168.1.84> PUT /var/folders/39/t0dm88q50dbcshd5nc5m5c640000gn/T/tmp5DqywL TO /home/alarm/.ansible/tmp/ansible-    tmp-1454502995.07-263327298967895/setup
<192.168.1.84> EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /home/alarm/.ansible/    tmp/ansible-tmp-1454502995.07-263327298967895/setup; rm -rf "/home/alarm/.ansible/tmp/ansible-tmp-1454502995.    07-263327298967895/" > /dev/null 2>&1
192.168.1.84 | SUCCESS => {
    "ansible_facts": {
        "ansible_all_ipv4_addresses": [
            "192.168.1.84"
        ],
➜  ansible ansible-i PI2 arch-m设置-u报警-VVV-k
使用/etc/ansible/ansible.cfg作为配置文件
SSH密码:
已加载stdout类型的最小回调,v2.0
为用户建立连接:端口22至192.168.1.84上的报警
连接:pid 78534正在等待9上的锁定
连接:pid 78534在9上获得锁定
paramiko:无法确定主机“192.168.1.84”的真实性。
ssh rsa密钥指纹是54e12e8153e0319f450934d606dca7df。
是否确实要继续连接(是/否)?
对
连接:pid 78534在9上释放锁
执行官(umask 22和&mkdir-p“$(echo$HOME/.ansible/tmp/ansible-tmp-1454502995.07-263327298967895)”和echo“$(echo$HOME/.ansible/tmp/ansible-tmp-1454502995.07-263327298967895)”)
将/var/folders/39/T0DM88Q50DBCSHD5NC5M5C64000GN/T/tmp5DqywL放到/home/alarm/.ansible/tmp/ansible-tmp-1454502995.07-263327298967895/setup
EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8/usr/bin/python/home/alarm/.ansible/tmp/ansible-tmp-1454502995.07-263327298967895/setup;rm-rf“/home/alarm/.ansible/tmp/ansible-tmp-1454502995.07-263327298967895/”>/dev/null 2>&1
192.168.1.84 |成功=>{
“可解释的事实”:{
“ansible\u所有\u ipv4\u地址”:[
"192.168.1.84"
],

“为什么要使用root…”这很可能是因为您的playbook中有
root:yes
请记住,这只是通过
ansible
执行的临时操作,而不是
ansible playbook
。此外,在ansible 2中,我认为
ansible\u ssh\u用户
被重命名为
ansible\u用户
。谢谢,我仍然习惯于1.9:)请原谅我的无知在2.0版上,别担心,伙计。:-)是的,谢谢你测试Dave。好吧,最后证明Ansible 2尊重
-u
开关。Ansible 1.9.4在这方面的表现也一样。是/是我的清单把事情搞砸了。我遗漏了一个部分,这被证明是重要的。我将编辑我的答案以澄清。