---
hosts: all
vars:
global_variable: 0
tasks:
- name: increment variable
set_var:
global_variable: "{{ global_variable + 1 }}"
-debug: global_variable
Это не сработает, так как вы получите свежий экземпляр global_variable для каждого хоста.выходные данные отладки всегда будут одинаковыми вместо увеличения.Я пытался использовать локальные хосты localhost для совместного использования переменной чтения / записи, но вы не можете назначить ее с помощью set_fact: (как иначе вы бы присвоили ей значение?) Например,
- name: update global variable
delegate_to: localhost
connection: local
set_fact:
hostvars['localhost']['global_variable']: "{{ hostvars['localhost']['global_variable'] + 1 }}"
В результате выдается ошибка:
FAILED! => {"changed": false, "msg": "The variable name 'hostvars['localhost']['global_variable']' is not valid. Variables must start with a letter or underscore character, and contain only letters, numbers and underscores."}
Идеи о том, как заставить это работать?