• Playbook剧本之facts变量


    facts变量是Ansible用于采集被控端硬件、系统、服务、资源信息等的一个功能,Playbook执行时第一步就是facts采集信息。

    toc

    查询facts变量

    ## 查看web主机所有facts变量(太多,就不展示了)
    [root@Ansible project]# ansible web -m setup
    ## 用filter查看指定信息
    [root@Ansible project]# ansible web -m setup -a 'filter=*eth0*'
    web1 | SUCCESS => {
        "ansible_facts": {
            "ansible_eth0": {
                "active": true, 
                "device": "eth0", 
                "features": {
                    "busy_poll": "off [fixed]", 
                    "fcoe_mtu": "off [fixed]", 
                    "generic_receive_offload": "on", 
                    "generic_segmentation_offload": "on", 
                    "highdma": "off [fixed]", 
                    "hw_tc_offload": "off [fixed]", 
                    "l2_fwd_offload": "off [fixed]", 
                    "large_receive_offload": "off [fixed]", 
                    "loopback": "off [fixed]", 
                    "netns_local": "off [fixed]", 
                    "ntuple_filters": "off [fixed]", 
                    "receive_hashing": "off [fixed]", 
                    "rx_all": "off", 
                    "rx_checksumming": "off", 
                    "rx_fcs": "off", 
                    "rx_udp_tunnel_port_offload": "off [fixed]", 
                    "rx_vlan_filter": "on [fixed]", 
                    "rx_vlan_offload": "on", 
                    "rx_vlan_stag_filter": "off [fixed]", 
                    "rx_vlan_stag_hw_parse": "off [fixed]", 
                    "scatter_gather": "on", 
                    "tcp_segmentation_offload": "on", 
                    "tx_checksum_fcoe_crc": "off [fixed]", 
                    "tx_checksum_ip_generic": "on", 
                    "tx_checksum_ipv4": "off [fixed]", 
                    "tx_checksum_ipv6": "off [fixed]", 
                    "tx_checksum_sctp": "off [fixed]", 
                    "tx_checksumming": "on", 
                    "tx_fcoe_segmentation": "off [fixed]", 
                    "tx_gre_csum_segmentation": "off [fixed]", 
                    "tx_gre_segmentation": "off [fixed]", 
                    "tx_gso_partial": "off [fixed]", 
                    "tx_gso_robust": "off [fixed]", 
                    "tx_ipip_segmentation": "off [fixed]", 
                    "tx_lockless": "off [fixed]", 
                    "tx_nocache_copy": "off", 
                    "tx_scatter_gather": "on", 
                    "tx_scatter_gather_fraglist": "off [fixed]", 
                    "tx_sctp_segmentation": "off [fixed]", 
                    "tx_sit_segmentation": "off [fixed]", 
                    "tx_tcp6_segmentation": "off [fixed]", 
                    "tx_tcp_ecn_segmentation": "off [fixed]", 
                    "tx_tcp_mangleid_segmentation": "off", 
                    "tx_tcp_segmentation": "on", 
                    "tx_udp_tnl_csum_segmentation": "off [fixed]", 
                    "tx_udp_tnl_segmentation": "off [fixed]", 
                    "tx_vlan_offload": "on [fixed]", 
                    "tx_vlan_stag_hw_insert": "off [fixed]", 
                    "udp_fragmentation_offload": "off [fixed]", 
                    "vlan_challenged": "off [fixed]"
                }, 
                "hw_timestamp_filters": [], 
                "ipv4": {
                    "address": "192.168.1.2", 
                    "broadcast": "192.168.1.255", 
                    "netmask": "255.255.255.0", 
                    "network": "192.168.1.0"
                }, 
                "ipv6": [
                    {
                        "address": "fe80::61a2:3896:f282:44e4", 
                        "prefix": "64", 
                        "scope": "link"
                    }
                ], 
                "macaddress": "00:0c:29:98:a3:d9", 
                "module": "e1000", 
                "mtu": 1500, 
                "pciid": "0000:02:01.0", 
                "promisc": false, 
                "speed": 1000, 
                "timestamping": [
                    "tx_software", 
                    "rx_software", 
                    "software"
                ], 
                "type": "ether"
            }
        }, 
        "changed": false
    }

    使用和关闭facts变量

    可以在Playbook直接使用这些facts变量

    ## 受控端的系统
    '{{ ansible_distribution }}'
    ## 受控端eth0的ip
    '{{ ansible_eth0.ipv4.address }}'
    ## 受控端主机名
    '{{ ansible_hostname }}'
    ## 受控端内存大小
    '{{ ansible_memtotal_mb }}'

    Playbook剧本每次执行facts采集都变量,这会耗费资源和时间。主机少的时候影响不大,当主机多的会严重耗费性能。所以不需要的时候可以关闭

    - hosts: web
      gather_facts: no      ## 关闭facts变量

    受控端自定义facts变量

    ## 受控端创建目录
    [root@web ~]# mkdir /etc/ansible/facts.d/ -p
    ## 目录里创建文件后缀为.fact
    [root@web ~]# vim /etc/ansible/facts.d/username.fact
    [user]
    name_one=dasha
    name_two=ersha
    ## 在控制端查看自定义facts变量
    [root@Ansible project]# ansible web -m setup -a "filter=ansible_local"
    web1 | SUCCESS => {
        "ansible_facts": {
            "ansible_local": {
                "username": {
                    "user": {
                        "name_one": "dasha", 
                        "name_two": "ersha"
                    }
                }
            }
        }, 
        "changed": false
    }
    ## 调用这些变量
    '{{ ansible_local.username.user.name_one }}'
    '{{ ansible_local.username.user.name_two }}'
  • 相关阅读:
    webview学习
    Android中webview html5 自动播放本地视频
    Android中使用WebView实现全屏切换播放网页视频
    Android中实现Activity的透明背景效果
    App过大
    Android 9.0网络权限适配
    Android中自定义环形图2
    Android中自定义环形图
    Android中自定义水球
    vue学习指南:第五篇(详细)
  • 原文地址:https://www.cnblogs.com/songguoyou/p/11883322.html
Copyright © 2020-2023  润新知