Ansible:使用 inventory_hostname 获取变量
Ansible: Get Variable with inventory_hostname
我有以下密码文件 vault.yml
:
---
server1: "pass1"
server2: "pass2"
server3: "pass3"
我正在将这些值加载到一个名为 passwords
:
的变量中
- name: Get Secrets
set_fact:
passwords: "{{ lookup('template', './vault.yml')|from_yaml }}"
delegate_to: localhost
- name: debug it
debug:
var: passwords.{{ inventory_hostname }}
调试任务的结果显示了我想要得到的结果:特定主机的密码。
但是如果我在变量文件中设置以下内容:
---
ansible_user: root
ansible_password: passwords.{{ inventory_hostname }}
这不会给我想要的结果。 ansible_password
从字面上理解“密码”而不是变量。
如何获得与调试 passwords.{{ inventory_hostname }}
时相同的结果?
关于部分
... if I set the following in a variables file ...
我不确定,因为我遗漏了一些关于您的用例和数据流的信息。但是,通常语法 ansible_password: "{{ PASSWORDS[inventory_hostname] }}"
可能适合您。
---
- hosts: localhost
become: false
gather_facts: false
vars:
PASSWORDS:
SERVER1: "pass1"
SERVER2: "pass2"
SERVER3: "pass3"
localhost: "pass_local"
tasks:
- name: Debug var
debug:
var: PASSWORDS
- name: Set Fact 'ansible_password'
set_fact:
ansible_password: "{{ PASSWORDS[inventory_hostname] }}"
- name: Debug var
debug:
var: ansible_password
这样您就可以通过名称访问元素。
我有以下密码文件 vault.yml
:
---
server1: "pass1"
server2: "pass2"
server3: "pass3"
我正在将这些值加载到一个名为 passwords
:
- name: Get Secrets
set_fact:
passwords: "{{ lookup('template', './vault.yml')|from_yaml }}"
delegate_to: localhost
- name: debug it
debug:
var: passwords.{{ inventory_hostname }}
调试任务的结果显示了我想要得到的结果:特定主机的密码。
但是如果我在变量文件中设置以下内容:
---
ansible_user: root
ansible_password: passwords.{{ inventory_hostname }}
这不会给我想要的结果。 ansible_password
从字面上理解“密码”而不是变量。
如何获得与调试 passwords.{{ inventory_hostname }}
时相同的结果?
关于部分
... if I set the following in a variables file ...
我不确定,因为我遗漏了一些关于您的用例和数据流的信息。但是,通常语法 ansible_password: "{{ PASSWORDS[inventory_hostname] }}"
可能适合您。
---
- hosts: localhost
become: false
gather_facts: false
vars:
PASSWORDS:
SERVER1: "pass1"
SERVER2: "pass2"
SERVER3: "pass3"
localhost: "pass_local"
tasks:
- name: Debug var
debug:
var: PASSWORDS
- name: Set Fact 'ansible_password'
set_fact:
ansible_password: "{{ PASSWORDS[inventory_hostname] }}"
- name: Debug var
debug:
var: ansible_password
这样您就可以通过名称访问元素。