MacOS下通过Ansible向GCP云VM执行YUM命令失败如何解决
问题根因说明
1. yum模块执行失败
你当前所有任务默认执行目标都是localhost(也就是你本地的Mac系统),而yum/dnf是仅适用于RHEL系Linux发行版的包管理器,MacOS本身不支持该模块,也无法安装python-dnf依赖。你需要把安装nginx的任务放到刚创建的GCP Rocky Linux虚拟机上执行,而不是本地。
对应解决步骤
- 拆分原playbook的任务,新增一个针对
new_instances主机组的play,专门执行虚拟机内的配置操作 - 原play的
hosts保持localhost不变,到add_host任务为止即可 - 新增play参考配置如下,Rocky Linux镜像默认SSH用户为
rocky:
# 原有创建GCP资源的play结束后,新增如下内容 - name: 配置GCP虚拟机 hosts: new_instances gather_facts: yes remote_user: rocky become: yes tasks: - name: nginx | 安装最新版nginx yum: name: nginx state: latest
- 如果没有配置虚拟机SSH密钥,需要在
gcp_compute_instance模块中添加metadata参数注入公钥,示例:
metadata: ssh-keys: "rocky:{{ lookup('file', '~/.ssh/id_rsa.pub') }}"
2. ansible-playbook执行PermissionError报错
该报错是因为你当前执行命令的工作目录没有读取权限,或者~/.ansible.cfg/系统hosts文件的权限配置错误导致的:
- 先切换到当前用户有读权限的目录再执行playbook,比如执行
cd ~回到用户主目录 - 修复ansible配置文件权限:
chmod 644 ~/.ansible.cfg - 如果你修改过系统hosts文件权限,执行修复:
sudo chmod 644 /etc/hosts
内容的提问来源于stack exchange,提问作者Mr Pickles
相关产品推荐
相关产品推荐

