Ansible 使用其他变量的值定义新变量

Ansible define new variable with value from other

我需要一些关于 Ansible 变量的帮助。

---
- name: create remote ansible account
  hosts: all
  gather_facts: false
  remote_user: admin
  vars:
    ansible_ssh_pass: mypassword
    ansible_become_pass: mypassword
    publickey: "{{ inputvalue }}"

  vars_files:
    - publickey_file.yml

roles:
  - create account

publickey_file.yml 看起来像这样:

entry1: ssh-rsa AAAAB3....
entry2: ssh-rsa AAAAC3....

角色中的具体任务如下所示: 反洗钱

- name: install SSH Key
  authorized_key: 
    user: ansible
    key: '{{ publickey }}'
  become: yes

我想在使用 ansible-playbook 指定变量时按下特定的 public 键。

我试过了,但没用:

ansible-playbook -i inventory.yml myplaybook.yml -e 'inputvalue=entry1'

这不会插入值 "{{ entry1 }}",而只会插入单词 'entry1',因此,在 authorized_key.

模块中插入的密钥不正确

如何在 publickey 中插入变量值 "{{ entry1 }}" 而不是 'entry1'

您需要 vars lookup 才能找到以变量 inputvalue 中包含的字符串命名的变量:

publickey: "{{ lookup('vars', inputvalue) }}"