/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
尝试通过调用命令登录 minikube
:
ssh -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模块的使用。
我使用 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
尝试通过调用命令登录 minikube
:
ssh -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模块的使用。