/ect/ansible 文件在 Mac OS 中不可用

/ect/ansible file is not available in Mac OS

我使用 pip 在 MacOS 中安装 Ansible。但是我找不到 /etc/ansible 文件夹。 inventory 文件都没有。

我想在 minikube 环境中 运行 我的剧本。但是剧本 returns,

[WARNING]: No inventory was parsed, only implicit localhost is available

[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'

[WARNING]: Could not match supplied host pattern, ignoring: 192.168.99.105

如何解决这个问题?

我调查了这件事,使用 Ansible for managing minikube 不是一个简单的话题。让我详细说明一下:

主要问题引用如下:

Most Ansible modules that execute under a POSIX environment require a Python interpreter on the target host. Unless configured otherwise, Ansible will attempt to discover a suitable Python interpreter on each target host the first time a Python module is executed for that host. -- Ansible Docs

这意味着大部分模块将无法使用。甚至 ping

重现步骤:

  • 安装 Ansible
  • 安装虚拟机
  • 安装 minikube
  • 启动minikube
  • SSH 进入 minikube
  • 配置 Ansible
  • 测试

安装 Ansible

如楼主所说,可以通过pip安装。 例如: $ pip3 install ansible

安装VirtualBox

请下载并安装适合您系统的版本。

安装 minikube

请关注此站点:Kubernetes.io

启动 minikube

您可以通过调用以下命令启动 minikube:

$ minikube start --vm-driver=virtualbox

参数 --vm-driver=virtualbox 很重要,因为它在以后连接到 minikube 时很有用。

请等待 minikube 在 Virtualbox 上成功部署。

SSH 进入 minikube

需要知道Virtualbox内部minikube的IP地址。 获取此 IP 的一种方法是:

  • 打开虚拟机
  • 点击minikube虚拟机显示
  • 输入 root 作为账户名。它不应该要求输入密码
  • 执行命令:$ ip a | less并找到网络接口地址。它的格式应该是 192.168.99.XX

从用于启动 minikube 的终端请 运行 下面的命令:

$ minikube ssh

上面的命令将 ssh 到新创建的 minikube 环境,并将私钥存储在以下位置: HOME_DIRECTORY .minikube/machines/minikube/id_rsa

id_rsa 将需要连接到 minikube

尝试通过调用命令登录 minikubessh -i PATH_TO/id_rsa docker@IP_ADDRESS

如果登录正确,Ansible 应该没有问题

配置 Ansible

要使用 ansible-playbook 需要 2 个文件:

  • Hosts 包含主机信息的文件
  • Playbook 文件,其中包含您需要 Ansible 执行的操作

示例主机文件:

[minikube_env]  
minikube ansible_host=IP_ADDRESS ansible_ssh_private_key_file=./id_rsa

[minikube_env:vars]
ansible_user=docker
ansible_port=22

ansible_ssh_private_key_file=./id_rsa 将告诉 Ansible 使用文件中的 ssh 密钥,该密钥具有此 minikube 实例的正确密钥。 请注意,此声明需要 id_rsa 文件与其余文件位于同一位置。

示例剧本:

- name: Playbook for checking connection between hosts  
  hosts: all  
  gather_facts: no  

  tasks:
  - name: Task to check the connection  
    ping:

您可以通过调用命令来测试连接:

$ ansible-playbook -i hosts_file ping.yaml

以上命令应该会失败,因为没有安装 Python 解释器。

fatal: [minikube]: FAILED! => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "module_stderr": "Shared connection to 192.168.99.101 closed.\r\n", "module_stdout": "/bin/sh: /usr/bin/python: No such file or directory\r\n", "msg": "The module failed to execute correctly, you probably need to set the interpreter.\nSee stdout/stderr for the exact error", "rc": 127}

Ansible 和 minikube 之间连接成功,但没有 Python 解释器支持。

有一种方法可以在没有 Python 解释器的情况下使用 Ansible。

这个Ansible documentation是在解释raw模块的使用。