【问题标题】:/ect/ansible file is not available in Mac OS/ect/ansible 文件在 Mac OS 中不可用
【发布时间】:2020-04-05 16:16:09
【问题描述】:

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

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

[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

如何解决这个问题?

【问题讨论】:

  • 您是否使用 Virtualbox Hypervisor 来运行 minikube?
  • VirtualBox @DawidKruk
  • GiHu La 请看一下我在下面提供的答案,并告诉我它是否令人满意。

标签: macos kubernetes ansible minikube


【解决方案1】:

我研究了这个问题,使用Ansible 管理minikube 不是一个容易的话题。让我详细说明一下:

主要问题如下:

在 POSIX 环境下执行的大多数 Ansible 模块需要目标主机上的 Python 解释器。除非另有配置,否则 Ansible 将尝试在每个目标主机上第一次为该主机执行 Python 模块时发现合适的 Python 解释器。 -- Ansible Docs

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

重现步骤:

  • 安装 Ansible
  • 安装 Virtualbox
  • 安装 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 解释器。

致命:[minikube]:失败! => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "module_stderr": "与 192.168.99.101 的共享连接已关闭。\r\n", "module_stdout" : "/bin/sh: /usr/bin/python: 没有那个文件或目录\r\n", "msg": "模块执行失败,你可能需要设置解释器。\n见stdout/stderr对于确切的错误", "rc": 127}

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

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

Ansible documentation 正在解释 raw 模块的使用。

【讨论】:

  • 非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多