Ansible 2.0.0.2:Ansible不';Don’我不尊重u";转换
我正在探索Raspberry PI 2上新安装的Archlinux安装,如下所示: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”
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在这方面的表现也一样。是/是我的清单把事情搞砸了。我遗漏了一个部分,这被证明是重要的。我将编辑我的答案以澄清。