我的广告资源文件
bash ~ cat inventory
输出
[webservers]
testserver ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222
当我尝试连接时
bash ~ ansible 127.0.0.1 -i inventory -m ping
成功了
127.0.0.1 | success >> {
"changed": false,
"ping": "pong"
}
当我使用inventory file
bash ~ ansible webservers -i inventory -m ping
失败并出现以下错误
testserver | FAILED => SSH encountered an unknown error
during the connection. We recommend you re-run the command using -vvvv,
which will enable SSH debugging output to help diagnose the issue
我可以弄清楚这个问题
答案 0 :(得分:1)
您是否在端口2222上侦听ssh服务器?你的第一个例子......
ansible 127.0.0.1 -i inventory -m ping
...将在端口22上连接,因为这是默认设置,而库存文件中的任何内容都不会覆盖它。
你的第二个例子......
ansible webservers -i inventory -m ping
...在您的广告资源文件中使用以下条目:
[webservers]
testserver ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222
它为ansible_ssh_port
提供了显式值,导致Ansible尝试在端口2222上进行连接。
答案 1 :(得分:0)
即使使用localhost,您也必须创建和交换密钥才能成功进行ssh连接,并使用将启动该剧本的同一用户。
步骤1 - 在控制节点上与将要启动playbook的用户生成SSH密钥
ssh-keygen -t rsa -b 4096 -C“您的电子邮件地址”
第2步 - 复制目标主机上的密钥
ssh-copy-id username @ hostname
步骤3 - 通过ansible ping测试成功连接
ansible all -m ping
让我知道任何问题