在 M1 Mac 上的 Rosetta 2 模拟下,Ansible 返回的“ansible_machine”和“ansible_architecture”是什么

shu*_*ji3 6 ansible ansible-facts apple-m1

在 M1 MacBook 上,ansible_architectureansible_machine返回相同的值arm64

shuuji3@momo mac-dev-playbook
> ansible -m setup localhost | egrep '_architecture|_machine'
        "ansible_architecture": "arm64",
        "ansible_machine": "arm64",
Run Code Online (Sandbox Code Playgroud)

在 M1 Mac 上的 Rosetta 2 仿真下怎么样?

shu*_*ji3 4

在 M1 Mac 上使用 Rosetta 2 仿真(Intel 模式)时,Ansible 返回x86_64与之前的 intel Mac 类似的值:

shuuji3@momo ~ % ansible -m setup localhost | egrep '_architecture|_machine'
        "ansible_architecture": "arm64",
        "ansible_machine": "arm64",

# Run the shell on the Intel mode
shuuji3@momo ~ % env /usr/bin/arch -x86_64 /bin/zsh --login

shuuji3@momo ~ % ansible -m setup localhost | egrep '_architecture|_machine'
        "ansible_architecture": "x86_64",
        "ansible_machine": "x86_64",
        "ansible_userspace_architecture": "x86_64",
Run Code Online (Sandbox Code Playgroud)

请注意,Ansible 添加了这一ansible_userspace_architecture事实。

参考

  • 正如你将在[源代码](https://github.com/ansible/ansible/blob/devel/lib/ansible/module_utils/facts/system/platform.py)中看到的,ansible基本上返回`platform的结果除非您在 AIX 或 Solaris 上运行,否则这两个变量中都包含“platform”Python 模块的 .machine()`。 (3认同)