Azure Cloud Shell执行sudo mkdir /etc/ansible报错sudo命令未找到
sudo创建/etc/ansible的问题 我懂你现在遇到的问题——在Azure Cloud Shell里想跑sudo mkdir /etc/ansible结果直接报sudo: command not found,确实头疼。你已经调研得很清楚了:Cloud Shell默认就是普通用户权限,压根不支持sudo,而且除了$HOME目录外的操作都是临时的,重启就没。不过既然你已经在~/ansible这个$HOME下的目录里,完全可以绕开系统级的/etc/ansible,用自定义配置的方式搞定,具体步骤如下:
在当前用户目录下创建Ansible专属配置目录
既然$HOME是持久化的,我们直接在这儿建自己的配置结构就行:# 如果你已经在~/ansible目录下,直接执行这个 mkdir -p etc # 或者用绝对路径确保准确 mkdir -p ~/ansible/etc创建自定义Ansible配置文件
接下来创建ansible.cfg文件,用来告诉Ansible使用我们自己的目录:touch ~/ansible/etc/ansible.cfg编辑这个文件,添加基础配置(可以根据你的需求补充更多项):
[defaults] # 指定清单文件的路径,你可以后续在~/ansible下创建inventory文件 inventory = ~/ansible/inventory # 指定角色存放的路径 roles_path = ~/ansible/roles # 禁用主机密钥检查(可选,方便测试) host_key_checking = False让Ansible识别自定义配置
我们需要告诉Ansible去哪里找这个配置文件,有两种方式:- 临时生效:适用于当前会话
export ANSIBLE_CONFIG=~/ansible/etc/ansible.cfg - 永久生效:下次登录Cloud Shell自动加载,把配置加到bashrc里
echo 'export ANSIBLE_CONFIG=~/ansible/etc/ansible.cfg' >> ~/.bashrc source ~/.bashrc
- 临时生效:适用于当前会话
验证配置是否生效
执行以下命令,查看输出里的config file项是否指向你刚才创建的文件:ansible --version如果显示类似
config file = /home/peter/ansible/etc/ansible.cfg,就说明配置成功了,接下来你就可以在~/ansible目录下管理所有Ansible相关的文件、清单和角色了。
额外提醒:因为$HOME目录是Azure Cloud Shell唯一持久化的区域,所以你在这里创建的所有内容都会被保留,完全不用担心重启后丢失,也不需要任何sudo权限。
内容的提问来源于stack exchange,提问作者peter

