Ansible on macOS sshpass 程序解决方法

Ansible on macOS sshpass program workaround

我正在使用自制软件在 macOS Catalina 上安装 Ansible(我之前也根据文档通过 pip 安装)。问题是当我尝试使用测试剧本时,我收到以下错误:

target1 | FAILED! => {
    "msg": "to use the 'ssh' connection type with passwords, you must install the sshpass program"
}

问题是 sshpass 在 macOS 上无法通过自制软件等轻松获得。我为此找到了几个安装选项,但在安装之前尝试进行以下更改:

export ANSIBLE_HOST_KEY_CHECKING=False

host_key_checking=falseansible.cfg同目录

None 以上更改有效,我应该只安装 sshpass,还是有其他解决方法?或者我应该只使用 virtualbox 收工吗?

作为参考,这是以下剧本,它是我尝试在本地 Raspberry Pi 上使用的一个简单的 ping 测试,我已经能够通过 SSH 进入:

-
  name: Test connectivity to target servers
  hosts: all
  tasks:
    - name: Ping test
      ping:

inventory.txt 文件如下所示:

target1 ansible_host=192.168.x.x ansible_ssh_pass=<password>

Should I just install sshpass, or is there another workaround? Or should I just use virtualbox and call it a day?

这取决于用例。你想让我做什么?将 Ansible 用于开发目的,还是将 IP 为 192 的机器用于生产工作负载?168.x.x?

最好使用 ssh 密钥对而不是密码。您可以通过执行命令在目标主机上创建这些:“ssh-keygen”。这样,你就可以'work-around'使用sshpass了。

帮助您使用 Virtualbox/Vagrant。 安装 Vagrant 后,在一个目录中创建一个名为“Vagrantfile”的文件,将其放置在那里:

# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|

  config.vm.provider "virtualbox" do |v|
    v.memory = 2048
    v.cpus = 2
  end

config.ssh.insert_key = false

config.vm.define "vm-local-1" do | me |
  me.vm.box = "rocky8-python3"
  me.vm.hostname = "vm-local-1"
  me.vm.network :forwarded_port, guest: 22, host: 65530, id: "ssh"
  me.vm.network :forwarded_port, guest: 80, host: 8080
  me.vm.network :forwarded_port, guest: 443, host: 4443
    me.vm.network :forwarded_port, guest: 27017, host: 27017
    me.vm.network "private_network", ip: "10.0.0.110"
    me.vm.provision "ansible" do |ansible|
      ansible.playbook = "playbook.yml"
      ansible.inventory_path = "inventory"
      ansible.limit = "vm-local-1"
      end
    end
end

将此放在 /etc/vbox/networks.conf 中。这允许在 Vagrant 中使用 10.x.x.x 网络。

* 10.0.0.0/8 192.168.56.0/21

创建一个清单文件,命名为 'inventory',并将此内容放入其中。将 my_username 替换为您的用户名。

[local_test]
vm-local-1 ansible_ssh_user=vagrant ansible_host=127.0.0.1 ansible_ssh_port=65530 ansible_ssh_private_key_file=/Users/<my_username>/.vagrant.d/insecure_private_key

[local_test:vars]
ansible_python_interpreter=/usr/bin/python3

然后,像这样创建一个 Ansible 剧本:

---
- hosts: local_test
  gather_facts: false
  become: true
  tasks:
     - shell: echo

现在,你可以执行命令:“vagrant up”,VM会自动创建,playbook也会自动执行。

这更像是一个新手问题,因为我对这个工具还很陌生。在我的 inventory 文件中,我添加了 ansible_user=pi 解决了这里的问题。

为了解决这个问题,我通过手动 ssh 连接和 运行 命令 systemctl status sshd 登录 raspberry pi。这显示我多次登录失败,ansible 默认为我的 macOS 用户。