我试图理解 SSH 和 ansible 在 inventory 上的设置之间的一些关系。我正在运行一个 playbook 部署,每当我像这样设置 inventory 时:
[status]
qastatus ansible_ssh_user=ansible ansible_ssh_host=172.16.19.34 ansible_ssh_private_key_file=~/credentials/ansible_id_rsa
I am having permission denied but when I set like that
[status]
172.16.19.34 ansible_connection=local
它开始运行部署过程,找到并在这里停止:
TASK: [nodejs_app | Pull down code] *******************************************
failed: [172.16.19.34] => {"changed": true, "cmd": ["s3cmd", "-c", "/root/.s3cfg", "get", "s3://snapav-code/cs-system-status/cs-system-status-7ab76c7ec22af26fa3605d55750b6050e5ca17d5-2015-11-02_03-23-46--75.tar.gz", "/var/cs-apps/cs-system-status/7ab76c7ec22af26fa3605d55750b6050e5ca17d5-2015-11-02_03-23-46--75"], "delta": "0:00:00.148056", "end": "2015-11-02 22:45:36.958560", "item": "", "rc": 1, "start": "2015-11-02 22:45:36.810504"}
stderr: ERROR: /root/.s3cfg: Permission denied
ERROR: Configuration file not available.
ERROR: Consider using --configure parameter to create one.
我不知道为什么???我应该怎么做才能解决它?
答案1
确保你可以在不使用 ansible cmd 的情况下使用正确的用户名 ssh 到远程主机
ssh uname@host
完成后,编辑你的/etc/ansible/hosts
文件,例如这是我使用 ssh 连接到我的 vagrant box 的方式
# Ex 1: Ungrouped hosts, specify before any group headers.
[all:vars]
ansible_ssh_user=vagrant
#green.example.com
#blue.example.com
#192.168.100.1
#192.168.100.10
[slave]
{{some_ip_here}}
...
现在只需运行您想要的命令或快速测试:
ansible slave -m ping