我在RHEL7上运行Anble2.9.18。
我使用hvac从Hashicorp保险库检索用户名和密码。
vars:
- creds: "{{ lookup('hashi_vault', 'secret=tst2/data/cisco token= url=http://10.80.23.81:8200') }}"
tasks:
- name: set Cisco creds
set_fact:
cisco: "{{ creds['data'] }}"
- name: Get nxos facts
nxos_command:
username: "{{ cisco['username'] }}"
password: "{{ cisco['password'] }}"
commands: show ver
timeout: 30
register: ver_out
- debug: msg="{{ ver_out.stdout }}"但是用户名和密码是不推荐的,我正试图找出如何将用户名、密码作为“提供者”变量传递。这个代码不起作用:
vars:
asa_api:
- creds: "{{ lookup('hashi_vault', 'secret=tst2/data/cisco token= url=http://10.80.23.81:8200') }}"
set_fact:
cisco: "{{ creds['data'] }}"
username: "{{ cisco['username'] }}"
password: "{{ cisco['password'] }}"
tasks:
- name: show run
asa_command:
commands: show run
provider: "{{ asa_api }}"
register: run
become: yes
tags:
- show_run我无法理解如何使用语法来实现这个功能。我非常感谢你的帮助。
谢谢,史蒂夫
发布于 2021-03-12 09:23:18
免责声明:这是一个通用的答案。我没有任何网络设备来对此进行全面测试,因此您可能需要在阅读文档之后进行一些调整。
你走错路了。您根本不需要set_fact,而且您试图使用的这两种方法(用户/pass或provider dict)实际上都不推荐使用。Ansible将您的网络设备视为任何主机,并将使用您配置的可用用户和密码(如果它们存在)。
在下面的示例中,我假设您的剧本只针对网络设备,并且存储在您的保险库中的登录/传递在所有设备上都是相同的。
- name: Untested network device connection configuration demo
hosts: my_network_device_group
vars:
# This indicates which connection plugin to use. Default is ssh
# An other possible value is httpapi. See above documentation link
ansible_connection: network_cli
vault_secret: tst2/data/cisco
vault_token: verysecret
vault_url: http://10.80.23.81:8200
vault_options: "secret={{ vault_secret }} token={{ vault_token }} url={{ vault_url }}"
creds: "{{ lookup('hashi_vault', vault_options).data }}"
# These are the user and pass used for connection.
ansible_user: "{{ creds.username }}"
ansible_password: "{{ creds.password }}"
tasks:
- name: Get nxos version
nxos_command:
commands: show ver
timeout: 30
register: ver_cmd
- name: show version
debug:
msg: "NXOS version on {{ inventory_hostname }} is {{ ver_cmd.stdout }}"
- name: An other task to play on targets
debug:
msg: "Task played on {{ inventory_hostname }}"与其在游戏级别上使用vars,不如将这些信息存储在所有主机或特定组的库存中,即使每个主机也是如此。如果要使用该功能,请参见如何组织组和主机变量。
https://stackoverflow.com/questions/66590987
复制相似问题