TPP*_*PPZ 0 ssh networking ansible
我有一个与此类似的ansiblehost文件(称为my_host_file):
[my_group_name]
MY_PUBLIC_IP_FOR_VM_XYZ
Run Code Online (Sandbox Code Playgroud)
然后我在my_playbook.yml类似于此的 YAML 剧本(称为)中尝试了几种不同的方法:
---
- hosts: my_group_name
sudo: yes
tasks:
- debug: var=hostvars
- setup:
register: allfacts
- debug: var=allfacts
- debug: var=ansible_default_ipv4.address
- debug: var=ansible_hostname
- command: bash -c "dig +short myip.opendns.com @resolver1.opendns.com"
register: my_public_ip_as_ansible_var
Run Code Online (Sandbox Code Playgroud)
我像这样运行一切: ansible-playbook -v -i my_host_file my_playbook.yml
我想在运行时以不同于使用命令然后将其存储到变量中的方式获取my_host_file文件 ( MY_PUBLIC_IP_FOR_VM_XYZ)中的公共 IP 地址。digopendnsmy_public_ip_as_ansible_var
毕竟这个已经被ansible自己用来建立SSH会话了,所以可能会存放在某个地方。
我也找不到此信息:
hostvars(实际上在这里我可以在这里找到它,但我也可以看到所有其他主机,所以我无法从主机组中识别当前的 SSH 会话)allfacts(using setup: [...]) 变量中(只有专用网络中的 IP 地址,以及有关该 VM 的许多有用信息,例如磁盘大小、网络、操作系统内核版本等)ansible_default_ipv4.address(这是私网的IP)ansible_hostname(这是主机名,不是我在其中使用的公共 IP my_host_file)是否有更简洁的方式/更可靠的方式来让主机在来自 的 SSH 会话期间使用my_host_file?
inventory_hostname :在您的清单中声明的主机名(可以是 IP、DNS 或逻辑名称)inventory_hostname_short :相同,但在第一个点之后删除所有内容ansible_nodename:主机的主机名(命令的结果hostname)ansible_hostname:主机的短主机名(命令的结果hostname --short)ansible_fqdn:主机的完整主机名(带域)(命令结果hostname --fqdn)ansible_default_ipv4.address:8.8.8.8从主机访问的 IPv4 地址ansible_ethX.ipv4.address :主机ethX接口的IPV4地址ansible_ssh_host:用于通过 SSH 访问主机的主机名或 IP(如果在清单中定义)例子 :
# hosts
[mygroup]
myremote.foo.bar ansible_ssh_host=my-machine.mydomain.com
Run Code Online (Sandbox Code Playgroud)
inventory_hostname: myremote.foo.barinventory_hostname_short: 远程ansible_nodename: 我的主机ansible_hostname: 我的主机ansible_fqdn: my-host.domain.localansible_default_ipv4.address: 1.2.3.4ansible_eth1.ipv4.address: 5.6.7.8ansible_ssh_host: my-machine.mydomain.com| 归档时间: |
|
| 查看次数: |
4935 次 |
| 最近记录: |