gpt4 book ai didi

ssh - 查找 ansible ssh 用户

转载 作者:行者123 更新时间:2023-12-04 14:45:48 24 4
gpt4 key购买 nike

我正在使用 User~/.ssh/config文件来指定 ansible 用来访问远程服务器的用户名,例如:

Host 123.234.098.076
User my_local_user_name

有没有办法在 Ansible 中找到该用户名?在以下剧本中 ansible_user被定义为:
---
- hosts: "all"
tasks:
- name: "perform whoami"
shell: whoami
register: whoami
- set_fact:
ansible_user: "{{ whoami.stdout }}"
- debug:
msg: "I am user: {{ ansible_user }}" # will display: "I am user: my_local_user_name"

但是,我不确定设置 ansible_user 会产生任何意外后果。直接而不是使用 remote_user在剧本、 list 或 ansible 配置中进行设置,例如:
---
- hosts: "all"
remote_user: my_local_user_name
tasks:
#- name: "perform whoami"
# shell: whoami
# register: whoami
#- set_fact:
# ansible_user: "{{ whoami.stdout }}"
- debug:
msg: "I am user: {{ ansible_user }}" # will display: "I am user: my_local_user_name"

最佳答案

如果您需要在建立连接后获取 ssh 用户并且有关目标主机的信息可用,您可以使用 ansible_user_id事实。

如果您想在建立连接之前了解 ssh 用户,这里有一个技巧:

---
- hosts: all
gather_facts: no
tasks:
- name: Save our destination host
set_fact: dest_host="{{ ansible_host }}"

- name: Get user from local ssh config
local_action: shell ssh -G {{ dest_host }} | awk '/^user /{ print $2 }'
changed_when: false
register: ssh_user

- name: Print forced ansible_user if defined or username from ssh config otherwize
debug: msg="Ansible will connect with {{ ansible_user | default(ssh_user.stdout) }}"

- hosts: all
gather_facts: yes
tasks:
- name: Print our remote name
debug: msg="Ansible connected with {{ ansible_user_id }}"

不确定是否 ssh -G在每个系统上都可用。

如果您不指定 remote_user在 Ansible playbook 或 list 中,它依赖 ssh 建立连接,因此知道用户名的唯一方法是解析 ssh 配置文件,其中 -G选项派上用场。

关于ssh - 查找 ansible ssh 用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42094547/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com