Вариант 1: используйте lookup('env')
в пьесе
Просто используйте "{{ lookup('env', 'ENV_VAR_NAME')}}"
Например, для вашего случая:
---
- name: create vm from template on ESX
hosts: localhost
gather_facts: no
become: yes
tasks:
- name: clone the template
vmware_guest:
hostname: "{{ lookup('env', 'IP_ADDRESS')}}"
Вариант 2: pass var через CLI
args
Вы можете передать значение Env var, используя --extra-vars
CLI
аргумент
Для вашего случая:
playbook.yml
...
- name: clone the template
vmware_guest:
hostname: "{{ ip_address }}"
user: "{{ user }}"
использование:
ansible-playbook playbook.yml --extra-vars="user={{ lookup('env', 'USER') }}, ip_address='10.10.10.10'"
Вариант 3: используйте vars_files
в playbook
Для вашего случая:
playbook.yml:
---
- name: create vm from template on ESX
hosts: localhost
gather_facts: no
become: yes
vars_files:
- "vars/vars.yml"
tasks:
- name: clone the template
vmware_guest:
hostname: "{{ hostname }}"
vars / vars.yml:
---
hostname: "host.example.com"
Давайте объединим их все:
Предположим, у вас есть два разных окружения:
staging
для постановки среда prod
для продуктивной среды
Затем мы создаем два разных vars
файла:
vars / staging.yml
---
hostname: "staging.domain.com"
vars / prod.yml
---
hostname: "prod.domain.com"
playbook.yml:
---
- name: create vm from template on ESX
y6uu hosts: localhost
gather_facts: no
become: yes
vars_files:
- "vars/{{ env }}.yml"
tasks:
- name: clone the template
vmware_guest:
hostname: "{{ hostname }}"
Использование