平时使用Windows的WSL(Windows Subsystem for Linux),在WSL上安装Ansible后使用Ansible部署环境。使用WLS可节省,在PC上安装VMPlayer等虚拟化软件后,下载及安装Linux系统的步骤。

WSL是Ubuntu系统,可以直接访问Windows的C盘,Ubuntu上的挂载点为/mnt/c,但需要注意访问权限。

使用的环境如下。

  • Windows Windows 11 Enterprise 21H2
  • WSL为Ubuntu22.04.1 LTS
  • Ansible 2.13.7

安装Ansible

在WSL上安装Ansible,按照Ansible安装手册执行apt命令即可。

apt-get update
apt-get install software-properties-common
apt-add-repository --yes --update ppa:ansible/ansible
apt-get install ansible

使用文本编辑器编辑C盘ansible_tutorial文件夹(C:\ansible_tutorial)下的Ansible相关文件,编辑后无需上传至服务器直接访问系统的 /mnt/c 目录即可。

编辑完Ansible的文件后,执行Ansible开始部署环境。

C盘权限问题

在这里ansible.cfg文件的路径为C:\ansible_tutorial\ansible.cfg时,在WSL上执行以下命令。这时候因Windows的C盘权限问题,无法读取/mnt/c目录下的ansible.cfg文件。

# cd /mnt/c/ansible_tutorial
# ansible --version
[WARNING]: Ansible is being run in a world writable directory (/mnt/c/ansible_tutorial), ignoring it as an ansible.cfg
source. For more information see https://docs.ansible.com/ansible/devel/reference_appendices/config.html#cfg-in-world-
writable-dir
ansible [core 2.13.7]
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3/dist-packages/ansible
  ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/bin/ansible
  python version = 3.10.6 (main, Aug 10 2022, 11:40:04) [GCC 11.3.0]
  jinja version = 3.0.3
  libyaml = True

确认 ansible –version 执行结果里的config file = /etc/ansible/ansible.cfg,发现并没有读取当前目录下的ansible.cfg文件。

因为无法修改/mnt/c目录的访问权限,执行chmod命令无法解决改问题。这时设定环境变量ANSIBLE_CONFIG可解决上述问题。

# cd /mnt/c/ansible_tutorial
# export ANSIBLE_CONFIG=$(pwd)

或者使用下面的方法重新挂载C盘,就可修改访问权限。这是从Windows 10 Build 17063(正式版本1803)后开始支持的功能。

# umount /mnt/c
# mount -t drvfs C: /mnt/c -o metadata

重新挂载之后,使用chmod命令修改权限。

# chmod 755 /mnt/c/ansible_tutorial

介绍了在WLS上执行Ansible时,挂载Widnows C盘无法修改访问权限时的解决方法。