В чем разница между ansible_architecture и ansible_machine в Ansible?

Я пытаюсь найти архитектуру машины с помощью Ansible Facts.

Мы можем собрать информацию о машине, выполнив команду ansible -m setup <host-name>. Как описано в документации: Обнаружение переменных: факты и магические переменные — Ansible Documentation.

Но кажется, что ansible_architecture и ansible_machine - это одно и то же значение. Я не уверен, что разница между ними. Пример в приведенной выше документации показывает следующие два значения, которые имеют одинаковые значения:

    "ansible_architecture": "x86_64",
    "ansible_machine": "x86_64",

На моем MacBook M1 результат такой же:

shuuji3@momo mac-dev-playbook
> ansible -m setup localhost | egrep '_architecture|_machine'
        "ansible_architecture": "arm64",
        "ansible_machine": "arm64",

Можем ли мы использовать эти значения взаимозаменяемо? Или они могут иметь другие значения в другом случае?


person shuuji3    schedule 27.03.2021    source источник


Ответы (1)


Согласно коду (https://github.com/ansible/ansible/blob/devel/lib/ansible/module_utils/facts/system/platform.py) почти всегда одно и то же.

Значение может отличаться в Solaris, AIX и OpenBSD.

Я предполагаю, что ansible_machine должна быть архитектурой машины (значение platform.machine() https://docs.python.org/3/library/platform.html), а ansible_architecture больше соответствует архитектуре ОС?

person zigarn    schedule 27.03.2021
comment
Спасибо за ясное объяснение. Я могу понять, почему названия машины и архитектуры. - person shuuji3; 28.03.2021
comment
Я обнаружил, что x86_64 возвращается при эмуляции Rosetta 2 (режим Intel). См. также: stackoverflow.com/q/66839206/1204782 и stackoverflow.com/q/65970469/1204782 - person shuuji3; 28.03.2021