我在 centos 机器上运行 ansible
[ansadmin@ansible docker]$ ls
Dockerfile hosts simple-devops-image.yml webapp.war
[ansadmin@ansible docker]$ cat hosts
localhost
简单的devops-image.yml
---
- hosts: all
become: true
tasks:
- name: stop current running container
command: docker stop simple-devops-container
ignore_errors: yes
- name: remove stopped container
command: docker rm simple-devops-container
ignore_errors: yes
- name: remove docker image
command: docker rmi simple-devops-image
ignore_errors: yes
- name: build docker image using war
command: docker build -t simple-devops-image .
args:
chdir: /opt/docker
- name: create container using simple image
command: docker run -d --name simple-devops-container -p 8080:8080 simple-devops-image
即使在本地主机上,我也被拒绝权限。用户已经拥有 sudo 权限。
ansible-playbook -i hosts simple-devops-image.yml --check
PLAY [all] *************************************************************************************************************
TASK [Gathering Facts] *************************************************************************************************
fatal: [localhost]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: ansadmin@localhost: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).", "unreachable": true}
PLAY RECAP *************************************************************************************************************
localhost : ok=0 changed=0 unreachable=1 failed=0 skipped=0 rescued=0 ignored=0
ping 正常。
[ansadmin@ansible docker]$ ping localhost
PING localhost(localhost (::1)) 56 data bytes
64 bytes from localhost (::1): icmp_seq=1 ttl=64 time=0.024 ms
64 bytes from localhost (::1): icmp_seq=2 ttl=64 time=0.045 ms
64 bytes from localhost (::1): icmp_seq=3 ttl=64 time=0.045 ms
答案1
您不需要ssh
连接localhost
。
只需更新您的hosts
文件即可ansible_connection=local
包含localhost
localhost ansible_connection=local
另外,确保您没有覆盖ansible_connection
到ssh
其他任何地方。
答案2
失败的原因是您没有告诉 Ansible 要求输入密码,并且您尚未设置 SSH 密钥。
您的ssh-copy-id
命令将您的 SSH 密钥复制到目标主机(在本例中为您所在的机器)并安装它,以便无密码 SSH 可以工作。
其他方式要使其工作,需要将正确的标志添加到 playbook 命令中:
ansible-playbook playbook.yml -k
或者如果你还需要 sudo 密码:
ansible-playbook playbook.yml -bkK
- 要求
-k
输入 SSH 用户的密码(“密钥”) - 告诉
-b
ansible 提升为特权用户(默认使用 sudo) - 要求
-K
输入升级密码。
答案3
运行以下命令解决了该问题。
ssh-copy-id ansadmin@localhost