Skip to content
SRE运维进阶之路SRE运维进阶之路
github icon
  • Jenkins

    • Jenkins 学习笔记
      • 1 Jenkins 简介

        • 1.1 DevOps、CI、CD都是什么鬼?
          • 1.2 Jenkins简介
          • 2 安装 Jenkins

            • 2.1 yum 安装 jenkins
              • 2.2 war 包安装 jenkins
                • 2.3 使用 ansible 安装 jenkins
                  • 2.4 使用docker安装jenkins
                  • 3 使用 Jenkins

                    • 3.1 Jenkins用户权限管理
                      • 3.2 访问 API
                      • 4 流水线核心语法

                        • 4.1 开始编写Jenkinsfile
                          • 4.2 Jenkins流水线语法
                            • 4.3 Groovy 简明教程
                              • 4.4 Jenkins共享库应用
                                • 4.5 共享库之钉钉消息推送
                                  • 4.6 流水线开发工具
                                    • 4.7 pipeline 生产配置实例
                                      • 4.8 在 VS Code 中校验 Jenkinsfile
                                      • 5 流水线集成篇

                                        • 5.1 构建发布工具集成
                                          • 5.2 用户认证系统集成
                                          • 6 管理 jenkins

                                            • 6.1 Jenkins 关闭和重启的实现方式
                                            • 7 日常维护

                                              • 7.1 Jenkins Job迁移
                                              • 8 Jenkins 常见问题
                                              • Ansible

                                                • Ansible 学习笔记
                                                  • 1 初识Ansible
                                                    • 2 Ansible Inventory配置详解
                                                      • 3 Ansible Ad-hoc命令集

                                                        • 3.1 Ansible Ad-hoc 常用命令集
                                                          • 3.2 Ansible lineinfile模块详解
                                                          • 4 Ansible Playbook

                                                            • 4.1 Playbook的结构及handler用法
                                                              • 4.2 Playbook循环语句
                                                                • 4.3 Playbook条件语句
                                                                  • 4.4 Playbook高级用法
                                                                    • 4.5 Playbook之tags
                                                                      • 4.6 巧用Roles
                                                                        • 4.7 Jinja2 模板
                                                                          • 4.8 yaml语法
                                                                          • 5 Ansible变量

                                                                            • 5.1 自定义变量
                                                                              • 5.2 Fact变量
                                                                                • 1 fact简介
                                                                                  • 2 自定义fact(Local Facts)
                                                                                    • 2.1 手动设置fact
                                                                                      • 2.2 使用set_fact模块定义新的变量
                                                                                      • 3 手动采集fact
                                                                                        • 4 启用fact缓存
                                                                                          • 4.1 Json文件fact缓存后端
                                                                                            • 4.2 Redis fact缓存后端
                                                                                              • 4.3 Memcached fact缓存后端
                                                                                              • 5 关闭fact
                                                                                                • 6 委托Facts
                                                                                                • 5.3 魔法变量
                                                                                                  • 5.4 使用lookup生成变量
                                                                                                    • 5.5 使用vault配置加密
                                                                                                    • 6 Ansible使用优化
                                                                                                      • 7 常见问题

                                                                                                      5.2 Fact变量

                                                                                                      author iconClaycalendar icon2020年3月20日category icon
                                                                                                      • 自动化工具
                                                                                                      tag icon
                                                                                                      • Ansible
                                                                                                      timer icon大约 14 分钟

                                                                                                      此页内容
                                                                                                      • 1 fact简介
                                                                                                      • 2 自定义fact(Local Facts)
                                                                                                        • 2.1 手动设置fact
                                                                                                        • 2.2 使用set_fact模块定义新的变量
                                                                                                      • 3 手动采集fact
                                                                                                      • 4 启用fact缓存
                                                                                                        • 4.1 Json文件fact缓存后端
                                                                                                        • 4.2 Redis fact缓存后端
                                                                                                        • 4.3 Memcached fact缓存后端
                                                                                                      • 5 关闭fact
                                                                                                      • 6 委托Facts

                                                                                                      # 5.2 Fact变量

                                                                                                      # 1 fact简介

                                                                                                      为了让Ansible更了解目标节点,可以让它去收集目标节点的信息,比如获取对方的主机名、系统版本、IP地址或其它网卡信息、分区挂载信息等等。在Ansible中,收集到的这些节点信息称为Facts。

                                                                                                      有了这些信息,用户可以更好的控制管理节点,比如当IP地址为xxx时就怎样怎样,当系统是CentOS 6时怎样怎样,是CentOS 7时怎样怎样,等等。

                                                                                                      有这些信息当然好,但是收集这些信息是有代价的,而且代价很大:因为要收集的信息量很大,所以收集的过程非常慢。所以,如果在playbook中用不上这些信息时,应当禁用收集行为,这也是一个非常有效的效率优化手段。

                                                                                                      ansible两个模块叫setup、gather_facts,用于获取远程主机的相关信息,并可以将这些信息作为变量在playbook里进行调用。而setup模块获取这些信息的方法就是依赖于fact。

                                                                                                      $ ansible localhost -m setup
                                                                                                      $ ansible localhost -m gather_facts
                                                                                                      
                                                                                                      1
                                                                                                      2

                                                                                                      简单说明一下setup模块和gather_facts模块的区别。setup模块是早就存在的模块,而gather_facts模块是Ansible 2.8才提供的,它是一个二次封装的模块,内部很可能就是调用setup模块,但为何还要提供gather_facts模块呢?也许原因就在于gather_facts模块相比setup模块多的一个功能:并行收集多个节点的信息,而且在探测到要收集多个节点信息时会自动并行。

                                                                                                      既然setup和gather_facts是模块,那么它们也可以在playbook中当作任务来执行。但是playbook专门为此提供了一个play级别的指令:gather_facts。

                                                                                                      # ansible test -m setup
                                                                                                      10.1.61.187 | SUCCESS => {
                                                                                                          "ansible_facts": {
                                                                                                              "ansible_all_ipv4_addresses": [
                                                                                                                  "10.1.61.187"
                                                                                                              ],
                                                                                                              "ansible_all_ipv6_addresses": [
                                                                                                                  "fe80::f816:3eff:fe4f:6611"
                                                                                                              ],
                                                                                                              "ansible_apparmor": {
                                                                                                                  "status": "disabled"
                                                                                                              },
                                                                                                              "ansible_architecture": "x86_64",
                                                                                                              "ansible_bios_date": "04/01/2014",
                                                                                                              "ansible_bios_version": "Ubuntu-1.8.2-1ubuntu1~cloud0",
                                                                                                              
                                                                                                              ...output omitted...
                                                                                                      }
                                                                                                      
                                                                                                      1
                                                                                                      2
                                                                                                      3
                                                                                                      4
                                                                                                      5
                                                                                                      6
                                                                                                      7
                                                                                                      8
                                                                                                      9
                                                                                                      10
                                                                                                      11
                                                                                                      12
                                                                                                      13
                                                                                                      14
                                                                                                      15
                                                                                                      16
                                                                                                      17
                                                                                                      18

                                                                                                      setup获取的这些信息,都是可用于该主机的变量。

                                                                                                      # 2 自定义fact(Local Facts)

                                                                                                      # 2.1 手动设置fact

                                                                                                      ansible除了能获取到预定义的fact的内容,还支持手动为某个主机定制fact。称之为本地fact。本地fact默认存放于被控端的/etc/ansible/facts.d目录下,如果文件为ini格式或者json格式,ansible会自动识别。以这种形式加载的fact是key为ansible_local的特殊变量。

                                                                                                      下面是一个简单的示例,在ansibler主控端定义一个ini格式的custom.fact文件内容如下:

                                                                                                      [general]
                                                                                                      package = httpd
                                                                                                      service = httpd
                                                                                                      state = started
                                                                                                      
                                                                                                      1
                                                                                                      2
                                                                                                      3
                                                                                                      4

                                                                                                      然后我们编写一个playbook文件名为setup_facts.yml内容如下:

                                                                                                      ---
                                                                                                      - name: Install remote facts
                                                                                                        hosts: test
                                                                                                        vars: 
                                                                                                          remote_dir: /etc/ansible/facts.d
                                                                                                          facts_file: custom.fact
                                                                                                        tasks:
                                                                                                          - name: Create the remote directory
                                                                                                            file:
                                                                                                              state: directory
                                                                                                              recurse: yes
                                                                                                              path: "{{ remote_dir }}"
                                                                                                          - name: Install the new facts
                                                                                                            copy:
                                                                                                              src: "{{ facts_file }}"
                                                                                                              dest: "{{ remote_dir }}"
                                                                                                      
                                                                                                      1
                                                                                                      2
                                                                                                      3
                                                                                                      4
                                                                                                      5
                                                                                                      6
                                                                                                      7
                                                                                                      8
                                                                                                      9
                                                                                                      10
                                                                                                      11
                                                                                                      12
                                                                                                      13
                                                                                                      14
                                                                                                      15
                                                                                                      16

                                                                                                      执行该playbook,完成facts的推送:

                                                                                                      ansible-playbook setup_facts.yml
                                                                                                      
                                                                                                      1

                                                                                                      此时,我们可以在被控端看到新的facts已经生成:

                                                                                                      # ansible test -m setup        
                                                                                                      10.1.61.187 | SUCCESS => {
                                                                                                          "ansible_facts": {
                                                                                                          
                                                                                                              ...output omitted...
                                                                                                              
                                                                                                              "ansible_local": {
                                                                                                                  "custom": {
                                                                                                                      "general": {
                                                                                                                          "package": "httpd",
                                                                                                                          "service": "httpd",
                                                                                                                          "state": "started"
                                                                                                                      }
                                                                                                                  }
                                                                                                              },
                                                                                                      
                                                                                                              ...output omitted...
                                                                                                        
                                                                                                      }
                                                                                                      
                                                                                                      1
                                                                                                      2
                                                                                                      3
                                                                                                      4
                                                                                                      5
                                                                                                      6
                                                                                                      7
                                                                                                      8
                                                                                                      9
                                                                                                      10
                                                                                                      11
                                                                                                      12
                                                                                                      13
                                                                                                      14
                                                                                                      15
                                                                                                      16
                                                                                                      17
                                                                                                      18
                                                                                                      19

                                                                                                      我们可以写一个简单的playbook来使用这些facts:

                                                                                                      - name: Install Apache and starts the service
                                                                                                        hosts: test
                                                                                                        tasks:
                                                                                                          - name: Install the required package
                                                                                                            yum: 
                                                                                                              name: "{{ ansible_facts.ansible_local.custom.general.package }}"
                                                                                                              state: latest
                                                                                                          - name: Start the service
                                                                                                            service: 
                                                                                                              name: "{{ ansible_facts.ansible_local.custom.general.service }}"
                                                                                                              state: "{{ ansible_facts.ansible_local.custom.general.state }}"
                                                                                                      
                                                                                                      1
                                                                                                      2
                                                                                                      3
                                                                                                      4
                                                                                                      5
                                                                                                      6
                                                                                                      7
                                                                                                      8
                                                                                                      9
                                                                                                      10
                                                                                                      11

                                                                                                      # 2.2 使用set_fact模块定义新的变量

                                                                                                      set_fact模块可以自定义facts,这些自定义的facts可以通过template或者变量的方式在playbook中使用。如果你想要获取一个进程使用的内存的百分比,则必须通过set_fact来进行计算之后得出其值,并将其值在playbook中引用。

                                                                                                      下面是一个set_fact模块的应用示例:

                                                                                                      - name: set_fact example
                                                                                                        hosts: test
                                                                                                        tasks:
                                                                                                          - name: Calculate InnoDB buffer pool size
                                                                                                            set_fact: innodb_buffer_pool_size_mb="{{ ansible_memtotal_mb / 2 |int }}"
                                                                                                            
                                                                                                          - debug: var=innodb_buffer_pool_size_mb
                                                                                                      
                                                                                                      1
                                                                                                      2
                                                                                                      3
                                                                                                      4
                                                                                                      5
                                                                                                      6
                                                                                                      7

                                                                                                      执行playbook如下:

                                                                                                      # ansible-playbook set_fact_ex.yaml 
                                                                                                      
                                                                                                      PLAY [set_fact example] *****************************************************************************************************************************************************
                                                                                                      
                                                                                                      TASK [Gathering Facts] ******************************************************************************************************************************************************
                                                                                                      ok: [10.1.61.187]
                                                                                                      
                                                                                                      TASK [Calculate InnoDB buffer pool size] ************************************************************************************************************************************
                                                                                                      ok: [10.1.61.187]
                                                                                                      
                                                                                                      TASK [debug] ****************************************************************************************************************************************************************
                                                                                                      ok: [10.1.61.187] => {
                                                                                                          "innodb_buffer_pool_size_mb": "3911.0"
                                                                                                      }
                                                                                                      
                                                                                                      PLAY RECAP ******************************************************************************************************************************************************************
                                                                                                      10.1.61.187                : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
                                                                                                      
                                                                                                      1
                                                                                                      2
                                                                                                      3
                                                                                                      4
                                                                                                      5
                                                                                                      6
                                                                                                      7
                                                                                                      8
                                                                                                      9
                                                                                                      10
                                                                                                      11
                                                                                                      12
                                                                                                      13
                                                                                                      14
                                                                                                      15
                                                                                                      16
                                                                                                      17

                                                                                                      这种设置方式只在当前playbook当中有效

                                                                                                      # 3 手动采集fact

                                                                                                      收集到目标节点信息之后,各信息都保存在一个名为ansible_facts的变量中,所以可以直接debug去查看这个变量里保存了什么东西,也即收集了目标节点的哪些信息。

                                                                                                      - name: info in ansible_facts
                                                                                                        debug:
                                                                                                          var: ansible_facts
                                                                                                      
                                                                                                      1
                                                                                                      2
                                                                                                      3

                                                                                                      此外也可以直接使用下面的方式来查看Facts中收集了哪些信息:

                                                                                                      $ ansible localhost -m 'setup'
                                                                                                      
                                                                                                      1

                                                                                                      下面是收集到的部分Facts信息:

                                                                                                      localhost | SUCCESS => {
                                                                                                          "ansible_facts": {
                                                                                                              "ansible_all_ipv4_addresses": [
                                                                                                                  "192.168.135.234"
                                                                                                              ],
                                                                                                              "ansible_all_ipv6_addresses": [
                                                                                                                  "fe80::c38:ea5:1598:8169"
                                                                                                              ],
                                                                                                              "ansible_apparmor": {
                                                                                                                  "status": "disabled"
                                                                                                              },
                                                                                                              "ansible_architecture": "x86_64",
                                                                                                              "ansible_bios_date": "04/01/2014",
                                                                                                              "ansible_bios_version": "1.11.0-2.el7",
                                                                                                              "ansible_cmdline": {
                                                                                                                  "BOOT_IMAGE": "/vmlinuz-3.10.0-957.el7.x86_64",
                                                                                                                  "biosdevname": "0",
                                                                                                                  "crashkernel": "auto",
                                                                                                                  "net.ifnames": "0",
                                                                                                                  "quiet": true,
                                                                                                                  "rhgb": true,
                                                                                                                  "ro": true,
                                                                                                                  "root": "UUID=120cca73-ddab-4aac-b751-7421263b55ad"
                                                                                                              },
                                                                                                              "ansible_date_time": {
                                                                                                                  "date": "2021-03-16",
                                                                                                                  "day": "16",
                                                                                                                  "epoch": "1615886206",
                                                                                                                  "hour": "17",
                                                                                                                  "iso8601": "2021-03-16T09:16:46Z",
                                                                                                                  "iso8601_basic": "20210316T171646952201",
                                                                                                                  "iso8601_basic_short": "20210316T171646",
                                                                                                                  "iso8601_micro": "2021-03-16T09:16:46.952201Z",
                                                                                                                  "minute": "16",
                                                                                                                  "month": "03",
                                                                                                                  "second": "46",
                                                                                                                  "time": "17:16:46",
                                                                                                                  "tz": "CST",
                                                                                                                  "tz_offset": "+0800",
                                                                                                                  "weekday": "Tuesday",
                                                                                                                  "weekday_number": "2",
                                                                                                                  "weeknumber": "11",
                                                                                                                  "year": "2021"
                                                                                                              },
                                                                                                              "ansible_default_ipv4": {
                                                                                                                  "address": "192.168.135.234",
                                                                                                                  "alias": "eth0",
                                                                                                                  "broadcast": "192.168.135.255",
                                                                                                                  "gateway": "192.168.135.254",
                                                                                                                  "interface": "eth0",
                                                                                                                  "macaddress": "fa:16:3e:7e:9b:47",
                                                                                                                  "mtu": 1500,
                                                                                                                  "netmask": "255.255.255.0",
                                                                                                                  "network": "192.168.135.0",
                                                                                                                  "type": "ether"
                                                                                                              },
                                                                                                              "ansible_default_ipv6": {},
                                                                                                              "ansible_device_links": {
                                                                                                                  "ids": {
                                                                                                                      "sr0": [
                                                                                                                          "ata-QEMU_DVD-ROM_QM00002"
                                                                                                                      ],
                                                                                                                      "sr1": [
                                                                                                                          "ata-QEMU_DVD-ROM_QM00004"
                                                                                                                      ],
                                                                                                                      "vda": [
                                                                                                                          "virtio-c1672133-7ae6-4318-8"
                                                                                                                      ],
                                                                                                                      "vda1": [
                                                                                                                          "virtio-c1672133-7ae6-4318-8-part1"
                                                                                                                      ],
                                                                                                                      "vda2": [
                                                                                                                          "virtio-c1672133-7ae6-4318-8-part2"
                                                                                                                      ]
                                                                                                                  },
                                                                                                                  "labels": {
                                                                                                                      "sr1": [
                                                                                                                          "config-2"
                                                                                                                      ]
                                                                                                                  },
                                                                                                                  "masters": {},
                                                                                                                  "uuids": {
                                                                                                                      "sr1": [
                                                                                                                          "2021-03-08-14-55-38-00"
                                                                                                                      ],
                                                                                                                      "vda1": [
                                                                                                                          "fef1f8c8-02fb-440c-b8aa-8fec6bfb4a88"
                                                                                                                      ],
                                                                                                                      "vda2": [
                                                                                                                          "120cca73-ddab-4aac-b751-7421263b55ad"
                                                                                                                      ]
                                                                                                                  }
                                                                                                              },
                                                                                                              "ansible_devices": {
                                                                                                                  "sr0": {
                                                                                                                      "holders": [],
                                                                                                                      "host": "",
                                                                                                                      "links": {
                                                                                                                          "ids": [
                                                                                                                              "ata-QEMU_DVD-ROM_QM00002"
                                                                                                                          ],
                                                                                                                          "labels": [],
                                                                                                                          "masters": [],
                                                                                                                          "uuids": []
                                                                                                                      },
                                                                                                                      "model": "QEMU DVD-ROM",
                                                                                                                      "partitions": {},
                                                                                                                      "removable": "1",
                                                                                                                      "rotational": "1",
                                                                                                                      "sas_address": null,
                                                                                                                      "sas_device_handle": null,
                                                                                                                      "scheduler_mode": "deadline",
                                                                                                                      "sectors": "2097151",
                                                                                                                      "sectorsize": "512",
                                                                                                                      "size": "1024.00 MB",
                                                                                                                      "support_discard": "0",
                                                                                                                      "vendor": "QEMU",
                                                                                                                      "virtual": 1
                                                                                                                  },
                                                                                                                  "sr1": {
                                                                                                                      "holders": [],
                                                                                                                      "host": "",
                                                                                                                      "links": {
                                                                                                                          "ids": [
                                                                                                                              "ata-QEMU_DVD-ROM_QM00004"
                                                                                                                          ],
                                                                                                                          "labels": [
                                                                                                                              "config-2"
                                                                                                                          ],
                                                                                                                          "masters": [],
                                                                                                                          "uuids": [
                                                                                                                              "2021-03-08-14-55-38-00"
                                                                                                                          ]
                                                                                                                      },
                                                                                                                      "model": "QEMU DVD-ROM",
                                                                                                                      "partitions": {},
                                                                                                                      "removable": "1",
                                                                                                                      "rotational": "1",
                                                                                                                      "sas_address": null,
                                                                                                                      "sas_device_handle": null,
                                                                                                                      "scheduler_mode": "deadline",
                                                                                                                      "sectors": "964",
                                                                                                                      "sectorsize": "2048",
                                                                                                                      "size": "482.00 KB",
                                                                                                                      "support_discard": "0",
                                                                                                                      "vendor": "QEMU",
                                                                                                                      "virtual": 1
                                                                                                                  },
                                                                                                                  "vda": {
                                                                                                                      "holders": [],
                                                                                                                      "host": "",
                                                                                                                      "links": {
                                                                                                                          "ids": [
                                                                                                                              "virtio-c1672133-7ae6-4318-8"
                                                                                                                          ],
                                                                                                                          "labels": [],
                                                                                                                          "masters": [],
                                                                                                                          "uuids": []
                                                                                                                      },
                                                                                                                      "model": null,
                                                                                                                      "partitions": {
                                                                                                                          "vda1": {
                                                                                                                              "holders": [],
                                                                                                                              "links": {
                                                                                                                                  "ids": [
                                                                                                                                      "virtio-c1672133-7ae6-4318-8-part1"
                                                                                                                                  ],
                                                                                                                                  "labels": [],
                                                                                                                                  "masters": [],
                                                                                                                                  "uuids": [
                                                                                                                                      "fef1f8c8-02fb-440c-b8aa-8fec6bfb4a88"
                                                                                                                                  ]
                                                                                                                              },
                                                                                                                              "sectors": "1024000",
                                                                                                                              "sectorsize": 512,
                                                                                                                              "size": "500.00 MB",
                                                                                                                              "start": "2048",
                                                                                                                              "uuid": "fef1f8c8-02fb-440c-b8aa-8fec6bfb4a88"
                                                                                                                          },
                                                                                                                          "vda2": {
                                                                                                                              "holders": [],
                                                                                                                              "links": {
                                                                                                                                  "ids": [
                                                                                                                                      "virtio-c1672133-7ae6-4318-8-part2"
                                                                                                                                  ],
                                                                                                                                  "labels": [],
                                                                                                                                  "masters": [],
                                                                                                                                  "uuids": [
                                                                                                                                      "120cca73-ddab-4aac-b751-7421263b55ad"
                                                                                                                                  ]
                                                                                                                              },
                                                                                                                              "sectors": "208689152",
                                                                                                                              "sectorsize": 512,
                                                                                                                              "size": "99.51 GB",
                                                                                                                              "start": "1026048",
                                                                                                                              "uuid": "120cca73-ddab-4aac-b751-7421263b55ad"
                                                                                                                          }
                                                                                                                      },
                                                                                                                      "removable": "0",
                                                                                                                      "rotational": "1",
                                                                                                                      "sas_address": null,
                                                                                                                      "sas_device_handle": null,
                                                                                                                      "scheduler_mode": "mq-deadline",
                                                                                                                      "sectors": "209715200",
                                                                                                                      "sectorsize": "512",
                                                                                                                      "size": "100.00 GB",
                                                                                                                      "support_discard": "0",
                                                                                                                      "vendor": "0x1af4",
                                                                                                                      "virtual": 1
                                                                                                                  }
                                                                                                              },
                                                                                                              "ansible_distribution": "CentOS",
                                                                                                              "ansible_distribution_file_parsed": true,
                                                                                                              "ansible_distribution_file_path": "/etc/redhat-release",
                                                                                                              "ansible_distribution_file_variety": "RedHat",
                                                                                                              "ansible_distribution_major_version": "7",
                                                                                                              "ansible_distribution_release": "Core",
                                                                                                              "ansible_distribution_version": "7.6",
                                                                                                              "ansible_dns": {
                                                                                                                  "nameservers": [
                                                                                                                      "202.96.209.5",
                                                                                                                      "114.114.114.114"
                                                                                                                  ],
                                                                                                                  "search": [
                                                                                                                      "openstacklocal"
                                                                                                                  ]
                                                                                                              },
                                                                                                              "ansible_domain": "",
                                                                                                              "ansible_effective_group_id": 0,
                                                                                                              "ansible_effective_user_id": 0,
                                                                                                              "ansible_env": {
                                                                                                                  "CLASSPATH": ".::/opt/jdk1.8.0_144/lib:/opt/jdk1.8.0_144/jre/lib",
                                                                                                                  "HISTCONTROL": "ignoredups",
                                                                                                                  "HISTSIZE": "1000",
                                                                                                                  "HOME": "/root",
                                                                                                                  "HOSTNAME": "host-192-168-135-234",
                                                                                                                  "JAVA_HOME": "/opt/jdk1.8.0_144",
                                                                                                                  "JRE_HOME": "/opt/jdk1.8.0_144/jre",
                                                                                                                  "LANG": "en_US.UTF-8",
                                                                                                                  "LESSOPEN": "||/usr/bin/lesspipe.sh %s",
                                                                                                                  "LOGNAME": "root",
                                                                                                                  "LS_COLORS": "rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:",
                                                                                                                  "MAIL": "/var/spool/mail/root",
                                                                                                                  "PATH": "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/jdk1.8.0_144/bin:/opt/jdk1.8.0_144/jre/bin:/root/bin",
                                                                                                                  "PWD": "/etc/ansible/playbooks",
                                                                                                                  "SHELL": "/bin/bash",
                                                                                                                  "SHLVL": "3",
                                                                                                                  "SSH_CLIENT": "192.168.135.72 6220 22",
                                                                                                                  "SSH_CONNECTION": "192.168.135.72 6220 192.168.135.234 22",
                                                                                                                  "SSH_TTY": "/dev/pts/0",
                                                                                                                  "TERM": "xterm",
                                                                                                                  "USER": "root",
                                                                                                                  "XDG_RUNTIME_DIR": "/run/user/0",
                                                                                                                  "XDG_SESSION_ID": "5879",
                                                                                                                  "_": "/usr/bin/python3"
                                                                                                              },
                                                                                                              "ansible_eth0": {
                                                                                                                  "active": true,
                                                                                                                  "device": "eth0",
                                                                                                                  "features": {
                                                                                                                      "busy_poll": "off [fixed]",
                                                                                                                      "fcoe_mtu": "off [fixed]",
                                                                                                                      "generic_receive_offload": "on",
                                                                                                                      "generic_segmentation_offload": "on",
                                                                                                                      "highdma": "on [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 [fixed]",
                                                                                                                      "rx_checksumming": "on [fixed]",
                                                                                                                      "rx_fcs": "off [fixed]",
                                                                                                                      "rx_gro_hw": "off [fixed]",
                                                                                                                      "rx_udp_tunnel_port_offload": "off [fixed]",
                                                                                                                      "rx_vlan_filter": "on [fixed]",
                                                                                                                      "rx_vlan_offload": "off [fixed]",
                                                                                                                      "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": "on",
                                                                                                                      "tx_tcp_ecn_segmentation": "on",
                                                                                                                      "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": "off [fixed]",
                                                                                                                      "tx_vlan_stag_hw_insert": "off [fixed]",
                                                                                                                      "udp_fragmentation_offload": "on",
                                                                                                                      "vlan_challenged": "off [fixed]"
                                                                                                                  },
                                                                                                                  "hw_timestamp_filters": [],
                                                                                                                  "ipv4": {
                                                                                                                      "address": "192.168.135.234",
                                                                                                                      "broadcast": "192.168.135.255",
                                                                                                                      "netmask": "255.255.255.0",
                                                                                                                      "network": "192.168.135.0"
                                                                                                                  },
                                                                                                                  "ipv6": [
                                                                                                                      {
                                                                                                                          "address": "fe80::c38:ea5:1598:8169",
                                                                                                                          "prefix": "64",
                                                                                                                          "scope": "link"
                                                                                                                      }
                                                                                                                  ],
                                                                                                                  "macaddress": "fa:16:3e:7e:9b:47",
                                                                                                                  "module": "virtio_net",
                                                                                                                  "mtu": 1500,
                                                                                                                  "pciid": "virtio0",
                                                                                                                  "promisc": false,
                                                                                                                  "timestamping": [
                                                                                                                      "rx_software",
                                                                                                                      "software"
                                                                                                                  ],
                                                                                                                  "type": "ether"
                                                                                                              },
                                                                                                              "ansible_fibre_channel_wwn": [],
                                                                                                              "ansible_fips": false,
                                                                                                              "ansible_form_factor": "Other",
                                                                                                              "ansible_fqdn": "host-192-168-135-234",
                                                                                                              "ansible_hostname": "host-192-168-135-234",
                                                                                                              "ansible_hostnqn": "",
                                                                                                              "ansible_interfaces": [
                                                                                                                  "lo",
                                                                                                                  "eth0"
                                                                                                              ],
                                                                                                              "ansible_is_chroot": false,
                                                                                                              "ansible_iscsi_iqn": "",
                                                                                                              "ansible_kernel": "3.10.0-957.el7.x86_64",
                                                                                                              "ansible_kernel_version": "#1 SMP Thu Nov 8 23:39:32 UTC 2018",
                                                                                                              "ansible_lo": {
                                                                                                                  "active": true,
                                                                                                                  "device": "lo",
                                                                                                                  "features": {
                                                                                                                      "busy_poll": "off [fixed]",
                                                                                                                      "fcoe_mtu": "off [fixed]",
                                                                                                                      "generic_receive_offload": "on",
                                                                                                                      "generic_segmentation_offload": "on",
                                                                                                                      "highdma": "on [fixed]",
                                                                                                                      "hw_tc_offload": "off [fixed]",
                                                                                                                      "l2_fwd_offload": "off [fixed]",
                                                                                                                      "large_receive_offload": "off [fixed]",
                                                                                                                      "loopback": "on [fixed]",
                                                                                                                      "netns_local": "on [fixed]",
                                                                                                                      "ntuple_filters": "off [fixed]",
                                                                                                                      "receive_hashing": "off [fixed]",
                                                                                                                      "rx_all": "off [fixed]",
                                                                                                                      "rx_checksumming": "on [fixed]",
                                                                                                                      "rx_fcs": "off [fixed]",
                                                                                                                      "rx_gro_hw": "off [fixed]",
                                                                                                                      "rx_udp_tunnel_port_offload": "off [fixed]",
                                                                                                                      "rx_vlan_filter": "off [fixed]",
                                                                                                                      "rx_vlan_offload": "off [fixed]",
                                                                                                                      "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 [fixed]",
                                                                                                                      "tx_checksum_ipv4": "off [fixed]",
                                                                                                                      "tx_checksum_ipv6": "off [fixed]",
                                                                                                                      "tx_checksum_sctp": "on [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": "on [fixed]",
                                                                                                                      "tx_nocache_copy": "off [fixed]",
                                                                                                                      "tx_scatter_gather": "on [fixed]",
                                                                                                                      "tx_scatter_gather_fraglist": "on [fixed]",
                                                                                                                      "tx_sctp_segmentation": "on",
                                                                                                                      "tx_sit_segmentation": "off [fixed]",
                                                                                                                      "tx_tcp6_segmentation": "on",
                                                                                                                      "tx_tcp_ecn_segmentation": "on",
                                                                                                                      "tx_tcp_mangleid_segmentation": "on",
                                                                                                                      "tx_tcp_segmentation": "on",
                                                                                                                      "tx_udp_tnl_csum_segmentation": "off [fixed]",
                                                                                                                      "tx_udp_tnl_segmentation": "off [fixed]",
                                                                                                                      "tx_vlan_offload": "off [fixed]",
                                                                                                                      "tx_vlan_stag_hw_insert": "off [fixed]",
                                                                                                                      "udp_fragmentation_offload": "on",
                                                                                                                      "vlan_challenged": "on [fixed]"
                                                                                                                  },
                                                                                                                  "hw_timestamp_filters": [],
                                                                                                                  "ipv4": {
                                                                                                                      "address": "127.0.0.1",
                                                                                                                      "broadcast": "",
                                                                                                                      "netmask": "255.0.0.0",
                                                                                                                      "network": "127.0.0.0"
                                                                                                                  },
                                                                                                                  "ipv6": [
                                                                                                                      {
                                                                                                                          "address": "::1",
                                                                                                                          "prefix": "128",
                                                                                                                          "scope": "host"
                                                                                                                      }
                                                                                                                  ],
                                                                                                                  "mtu": 65536,
                                                                                                                  "promisc": false,
                                                                                                                  "timestamping": [
                                                                                                                      "rx_software",
                                                                                                                      "software"
                                                                                                                  ],
                                                                                                                  "type": "loopback"
                                                                                                              },
                                                                                                              "ansible_local": {},
                                                                                                              "ansible_lsb": {},
                                                                                                              "ansible_machine": "x86_64",
                                                                                                              "ansible_machine_id": "5da37d186bbc4fab946458f383820cc2",
                                                                                                              "ansible_memfree_mb": 5793,
                                                                                                              "ansible_memory_mb": {
                                                                                                                  "nocache": {
                                                                                                                      "free": 6652,
                                                                                                                      "used": 1150
                                                                                                                  },
                                                                                                                  "real": {
                                                                                                                      "free": 5793,
                                                                                                                      "total": 7802,
                                                                                                                      "used": 2009
                                                                                                                  },
                                                                                                                  "swap": {
                                                                                                                      "cached": 0,
                                                                                                                      "free": 0,
                                                                                                                      "total": 0,
                                                                                                                      "used": 0
                                                                                                                  }
                                                                                                              },
                                                                                                              "ansible_memtotal_mb": 7802,
                                                                                                              "ansible_mounts": [
                                                                                                                  {
                                                                                                                      "block_available": 25154087,
                                                                                                                      "block_size": 4096,
                                                                                                                      "block_total": 26073407,
                                                                                                                      "block_used": 919320,
                                                                                                                      "device": "/dev/vda2",
                                                                                                                      "fstype": "xfs",
                                                                                                                      "inode_available": 52034972,
                                                                                                                      "inode_total": 52172288,
                                                                                                                      "inode_used": 137316,
                                                                                                                      "mount": "/",
                                                                                                                      "options": "rw,relatime,attr2,inode64,noquota",
                                                                                                                      "size_available": 103031140352,
                                                                                                                      "size_total": 106796675072,
                                                                                                                      "uuid": "120cca73-ddab-4aac-b751-7421263b55ad"
                                                                                                                  },
                                                                                                                  {
                                                                                                                      "block_available": 93950,
                                                                                                                      "block_size": 4096,
                                                                                                                      "block_total": 127145,
                                                                                                                      "block_used": 33195,
                                                                                                                      "device": "/dev/vda1",
                                                                                                                      "fstype": "xfs",
                                                                                                                      "inode_available": 255673,
                                                                                                                      "inode_total": 256000,
                                                                                                                      "inode_used": 327,
                                                                                                                      "mount": "/boot",
                                                                                                                      "options": "rw,relatime,attr2,inode64,noquota",
                                                                                                                      "size_available": 384819200,
                                                                                                                      "size_total": 520785920,
                                                                                                                      "uuid": "fef1f8c8-02fb-440c-b8aa-8fec6bfb4a88"
                                                                                                                  }
                                                                                                              ],
                                                                                                              "ansible_nodename": "host-192-168-135-234",
                                                                                                              "ansible_os_family": "RedHat",
                                                                                                              "ansible_pkg_mgr": "yum",
                                                                                                              "ansible_proc_cmdline": {
                                                                                                                  "BOOT_IMAGE": "/vmlinuz-3.10.0-957.el7.x86_64",
                                                                                                                  "biosdevname": [
                                                                                                                      "0",
                                                                                                                      "0",
                                                                                                                      "0"
                                                                                                                  ],
                                                                                                                  "crashkernel": "auto",
                                                                                                                  "net.ifnames": [
                                                                                                                      "0",
                                                                                                                      "0",
                                                                                                                      "0"
                                                                                                                  ],
                                                                                                                  "quiet": true,
                                                                                                                  "rhgb": true,
                                                                                                                  "ro": true,
                                                                                                                  "root": "UUID=120cca73-ddab-4aac-b751-7421263b55ad"
                                                                                                              },
                                                                                                              "ansible_processor": [
                                                                                                                  "0",
                                                                                                                  "GenuineIntel",
                                                                                                                  "QEMU Virtual CPU version (cpu64-rhel6)",
                                                                                                                  "1",
                                                                                                                  "GenuineIntel",
                                                                                                                  "QEMU Virtual CPU version (cpu64-rhel6)",
                                                                                                                  "2",
                                                                                                                  "GenuineIntel",
                                                                                                                  "QEMU Virtual CPU version (cpu64-rhel6)",
                                                                                                                  "3",
                                                                                                                  "GenuineIntel",
                                                                                                                  "QEMU Virtual CPU version (cpu64-rhel6)"
                                                                                                              ],
                                                                                                              "ansible_processor_cores": 1,
                                                                                                              "ansible_processor_count": 4,
                                                                                                              "ansible_processor_threads_per_core": 1,
                                                                                                              "ansible_processor_vcpus": 4,
                                                                                                              "ansible_product_name": "ArStack",
                                                                                                              "ansible_product_serial": "ed734a0c-5e92-45e4-8491-1f2882a28b98",
                                                                                                              "ansible_product_uuid": "E9D04AFD-381C-4EF2-8523-A5F2177334A9",
                                                                                                              "ansible_product_version": "2020.5.15-1.el7.centos",
                                                                                                              "ansible_python": {
                                                                                                                  "executable": "/usr/bin/python3",
                                                                                                                  "has_sslcontext": true,
                                                                                                                  "type": "cpython",
                                                                                                                  "version": {
                                                                                                                      "major": 3,
                                                                                                                      "micro": 8,
                                                                                                                      "minor": 6,
                                                                                                                      "releaselevel": "final",
                                                                                                                      "serial": 0
                                                                                                                  },
                                                                                                                  "version_info": [
                                                                                                                      3,
                                                                                                                      6,
                                                                                                                      8,
                                                                                                                      "final",
                                                                                                                      0
                                                                                                                  ]
                                                                                                              },
                                                                                                              "ansible_python_version": "3.6.8",
                                                                                                              "ansible_real_group_id": 0,
                                                                                                              "ansible_real_user_id": 0,
                                                                                                              "ansible_selinux": {
                                                                                                                  "status": "Missing selinux Python library"
                                                                                                              },
                                                                                                              "ansible_selinux_python_present": false,
                                                                                                              "ansible_service_mgr": "systemd",
                                                                                                              "ansible_ssh_host_key_ecdsa_public": "AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBNxkCyohIHmaY5FLaLU4NRenQ6QE9qcjzbs87lvJhhH7TpWKHw3/NOVLks1amivsFJ1CQsgzk+XkU/YLfDFGNRo=",
                                                                                                              "ansible_ssh_host_key_ed25519_public": "AAAAC3NzaC1lZDI1NTE5AAAAILGRRrB9EPLkKsnOkyTzCpIyfWuIPEh7Qy9l2H0O+k4U",
                                                                                                              "ansible_ssh_host_key_rsa_public": "AAAAB3NzaC1yc2EAAAADAQABAAABAQDXqv9l/aw5jmEeKMRIVCUSUCpAPSUYyiVzfe7MNGDJ/Wd/ZHBMScAKgPq31z5OXJBpzDzIULZ5Di3WwmIdRHU6f4+PQ7E2LHQN4SDQvk7Flz7ivUv/aGtwUft929llVyT7/jrVFzWeR3ABtc6Roux2UMwWZANDwGWLkv+R6qluFNZ4yGTmYr7i/WTa0IXqI0AgZbAjGcSxqwGpgC7+NW8UVn975sz2pBRgCz9PG0mTWLKjcpESPpeypX0D0liq3rkwCjmU3OutwrTOYX1Di5n9miufUvZeSauWfska++t8xSYcOvbkzWidCOWOYtmx6VqrbKSSQiEDAbWJipIGcX+T",
                                                                                                              "ansible_swapfree_mb": 0,
                                                                                                              "ansible_swaptotal_mb": 0,
                                                                                                              "ansible_system": "Linux",
                                                                                                              "ansible_system_capabilities": [
                                                                                                                  "cap_chown",
                                                                                                                  "cap_dac_override",
                                                                                                                  "cap_dac_read_search",
                                                                                                                  "cap_fowner",
                                                                                                                  "cap_fsetid",
                                                                                                                  "cap_kill",
                                                                                                                  "cap_setgid",
                                                                                                                  "cap_setuid",
                                                                                                                  "cap_setpcap",
                                                                                                                  "cap_linux_immutable",
                                                                                                                  "cap_net_bind_service",
                                                                                                                  "cap_net_broadcast",
                                                                                                                  "cap_net_admin",
                                                                                                                  "cap_net_raw",
                                                                                                                  "cap_ipc_lock",
                                                                                                                  "cap_ipc_owner",
                                                                                                                  "cap_sys_module",
                                                                                                                  "cap_sys_rawio",
                                                                                                                  "cap_sys_chroot",
                                                                                                                  "cap_sys_ptrace",
                                                                                                                  "cap_sys_pacct",
                                                                                                                  "cap_sys_admin",
                                                                                                                  "cap_sys_boot",
                                                                                                                  "cap_sys_nice",
                                                                                                                  "cap_sys_resource",
                                                                                                                  "cap_sys_time",
                                                                                                                  "cap_sys_tty_config",
                                                                                                                  "cap_mknod",
                                                                                                                  "cap_lease",
                                                                                                                  "cap_audit_write",
                                                                                                                  "cap_audit_control",
                                                                                                                  "cap_setfcap",
                                                                                                                  "cap_mac_override",
                                                                                                                  "cap_mac_admin",
                                                                                                                  "cap_syslog",
                                                                                                                  "35",
                                                                                                                  "36+ep"
                                                                                                              ],
                                                                                                              "ansible_system_capabilities_enforced": "True",
                                                                                                              "ansible_system_vendor": "Huayun",
                                                                                                              "ansible_uptime_seconds": 571792,
                                                                                                              "ansible_user_dir": "/root",
                                                                                                              "ansible_user_gecos": "root",
                                                                                                              "ansible_user_gid": 0,
                                                                                                              "ansible_user_id": "root",
                                                                                                              "ansible_user_shell": "/bin/bash",
                                                                                                              "ansible_user_uid": 0,
                                                                                                              "ansible_userspace_architecture": "x86_64",
                                                                                                              "ansible_userspace_bits": "64",
                                                                                                              "ansible_virtualization_role": "guest",
                                                                                                              "ansible_virtualization_type": "kvm",
                                                                                                              "gather_subset": [
                                                                                                                  "all"
                                                                                                              ],
                                                                                                              "module_setup": true
                                                                                                          },
                                                                                                          "changed": false
                                                                                                      }
                                                                                                      
                                                                                                      1
                                                                                                      2
                                                                                                      3
                                                                                                      4
                                                                                                      5
                                                                                                      6
                                                                                                      7
                                                                                                      8
                                                                                                      9
                                                                                                      10
                                                                                                      11
                                                                                                      12
                                                                                                      13
                                                                                                      14
                                                                                                      15
                                                                                                      16
                                                                                                      17
                                                                                                      18
                                                                                                      19
                                                                                                      20
                                                                                                      21
                                                                                                      22
                                                                                                      23
                                                                                                      24
                                                                                                      25
                                                                                                      26
                                                                                                      27
                                                                                                      28
                                                                                                      29
                                                                                                      30
                                                                                                      31
                                                                                                      32
                                                                                                      33
                                                                                                      34
                                                                                                      35
                                                                                                      36
                                                                                                      37
                                                                                                      38
                                                                                                      39
                                                                                                      40
                                                                                                      41
                                                                                                      42
                                                                                                      43
                                                                                                      44
                                                                                                      45
                                                                                                      46
                                                                                                      47
                                                                                                      48
                                                                                                      49
                                                                                                      50
                                                                                                      51
                                                                                                      52
                                                                                                      53
                                                                                                      54
                                                                                                      55
                                                                                                      56
                                                                                                      57
                                                                                                      58
                                                                                                      59
                                                                                                      60
                                                                                                      61
                                                                                                      62
                                                                                                      63
                                                                                                      64
                                                                                                      65
                                                                                                      66
                                                                                                      67
                                                                                                      68
                                                                                                      69
                                                                                                      70
                                                                                                      71
                                                                                                      72
                                                                                                      73
                                                                                                      74
                                                                                                      75
                                                                                                      76
                                                                                                      77
                                                                                                      78
                                                                                                      79
                                                                                                      80
                                                                                                      81
                                                                                                      82
                                                                                                      83
                                                                                                      84
                                                                                                      85
                                                                                                      86
                                                                                                      87
                                                                                                      88
                                                                                                      89
                                                                                                      90
                                                                                                      91
                                                                                                      92
                                                                                                      93
                                                                                                      94
                                                                                                      95
                                                                                                      96
                                                                                                      97
                                                                                                      98
                                                                                                      99
                                                                                                      100
                                                                                                      101
                                                                                                      102
                                                                                                      103
                                                                                                      104
                                                                                                      105
                                                                                                      106
                                                                                                      107
                                                                                                      108
                                                                                                      109
                                                                                                      110
                                                                                                      111
                                                                                                      112
                                                                                                      113
                                                                                                      114
                                                                                                      115
                                                                                                      116
                                                                                                      117
                                                                                                      118
                                                                                                      119
                                                                                                      120
                                                                                                      121
                                                                                                      122
                                                                                                      123
                                                                                                      124
                                                                                                      125
                                                                                                      126
                                                                                                      127
                                                                                                      128
                                                                                                      129
                                                                                                      130
                                                                                                      131
                                                                                                      132
                                                                                                      133
                                                                                                      134
                                                                                                      135
                                                                                                      136
                                                                                                      137
                                                                                                      138
                                                                                                      139
                                                                                                      140
                                                                                                      141
                                                                                                      142
                                                                                                      143
                                                                                                      144
                                                                                                      145
                                                                                                      146
                                                                                                      147
                                                                                                      148
                                                                                                      149
                                                                                                      150
                                                                                                      151
                                                                                                      152
                                                                                                      153
                                                                                                      154
                                                                                                      155
                                                                                                      156
                                                                                                      157
                                                                                                      158
                                                                                                      159
                                                                                                      160
                                                                                                      161
                                                                                                      162
                                                                                                      163
                                                                                                      164
                                                                                                      165
                                                                                                      166
                                                                                                      167
                                                                                                      168
                                                                                                      169
                                                                                                      170
                                                                                                      171
                                                                                                      172
                                                                                                      173
                                                                                                      174
                                                                                                      175
                                                                                                      176
                                                                                                      177
                                                                                                      178
                                                                                                      179
                                                                                                      180
                                                                                                      181
                                                                                                      182
                                                                                                      183
                                                                                                      184
                                                                                                      185
                                                                                                      186
                                                                                                      187
                                                                                                      188
                                                                                                      189
                                                                                                      190
                                                                                                      191
                                                                                                      192
                                                                                                      193
                                                                                                      194
                                                                                                      195
                                                                                                      196
                                                                                                      197
                                                                                                      198
                                                                                                      199
                                                                                                      200
                                                                                                      201
                                                                                                      202
                                                                                                      203
                                                                                                      204
                                                                                                      205
                                                                                                      206
                                                                                                      207
                                                                                                      208
                                                                                                      209
                                                                                                      210
                                                                                                      211
                                                                                                      212
                                                                                                      213
                                                                                                      214
                                                                                                      215
                                                                                                      216
                                                                                                      217
                                                                                                      218
                                                                                                      219
                                                                                                      220
                                                                                                      221
                                                                                                      222
                                                                                                      223
                                                                                                      224
                                                                                                      225
                                                                                                      226
                                                                                                      227
                                                                                                      228
                                                                                                      229
                                                                                                      230
                                                                                                      231
                                                                                                      232
                                                                                                      233
                                                                                                      234
                                                                                                      235
                                                                                                      236
                                                                                                      237
                                                                                                      238
                                                                                                      239
                                                                                                      240
                                                                                                      241
                                                                                                      242
                                                                                                      243
                                                                                                      244
                                                                                                      245
                                                                                                      246
                                                                                                      247
                                                                                                      248
                                                                                                      249
                                                                                                      250
                                                                                                      251
                                                                                                      252
                                                                                                      253
                                                                                                      254
                                                                                                      255
                                                                                                      256
                                                                                                      257
                                                                                                      258
                                                                                                      259
                                                                                                      260
                                                                                                      261
                                                                                                      262
                                                                                                      263
                                                                                                      264
                                                                                                      265
                                                                                                      266
                                                                                                      267
                                                                                                      268
                                                                                                      269
                                                                                                      270
                                                                                                      271
                                                                                                      272
                                                                                                      273
                                                                                                      274
                                                                                                      275
                                                                                                      276
                                                                                                      277
                                                                                                      278
                                                                                                      279
                                                                                                      280
                                                                                                      281
                                                                                                      282
                                                                                                      283
                                                                                                      284
                                                                                                      285
                                                                                                      286
                                                                                                      287
                                                                                                      288
                                                                                                      289
                                                                                                      290
                                                                                                      291
                                                                                                      292
                                                                                                      293
                                                                                                      294
                                                                                                      295
                                                                                                      296
                                                                                                      297
                                                                                                      298
                                                                                                      299
                                                                                                      300
                                                                                                      301
                                                                                                      302
                                                                                                      303
                                                                                                      304
                                                                                                      305
                                                                                                      306
                                                                                                      307
                                                                                                      308
                                                                                                      309
                                                                                                      310
                                                                                                      311
                                                                                                      312
                                                                                                      313
                                                                                                      314
                                                                                                      315
                                                                                                      316
                                                                                                      317
                                                                                                      318
                                                                                                      319
                                                                                                      320
                                                                                                      321
                                                                                                      322
                                                                                                      323
                                                                                                      324
                                                                                                      325
                                                                                                      326
                                                                                                      327
                                                                                                      328
                                                                                                      329
                                                                                                      330
                                                                                                      331
                                                                                                      332
                                                                                                      333
                                                                                                      334
                                                                                                      335
                                                                                                      336
                                                                                                      337
                                                                                                      338
                                                                                                      339
                                                                                                      340
                                                                                                      341
                                                                                                      342
                                                                                                      343
                                                                                                      344
                                                                                                      345
                                                                                                      346
                                                                                                      347
                                                                                                      348
                                                                                                      349
                                                                                                      350
                                                                                                      351
                                                                                                      352
                                                                                                      353
                                                                                                      354
                                                                                                      355
                                                                                                      356
                                                                                                      357
                                                                                                      358
                                                                                                      359
                                                                                                      360
                                                                                                      361
                                                                                                      362
                                                                                                      363
                                                                                                      364
                                                                                                      365
                                                                                                      366
                                                                                                      367
                                                                                                      368
                                                                                                      369
                                                                                                      370
                                                                                                      371
                                                                                                      372
                                                                                                      373
                                                                                                      374
                                                                                                      375
                                                                                                      376
                                                                                                      377
                                                                                                      378
                                                                                                      379
                                                                                                      380
                                                                                                      381
                                                                                                      382
                                                                                                      383
                                                                                                      384
                                                                                                      385
                                                                                                      386
                                                                                                      387
                                                                                                      388
                                                                                                      389
                                                                                                      390
                                                                                                      391
                                                                                                      392
                                                                                                      393
                                                                                                      394
                                                                                                      395
                                                                                                      396
                                                                                                      397
                                                                                                      398
                                                                                                      399
                                                                                                      400
                                                                                                      401
                                                                                                      402
                                                                                                      403
                                                                                                      404
                                                                                                      405
                                                                                                      406
                                                                                                      407
                                                                                                      408
                                                                                                      409
                                                                                                      410
                                                                                                      411
                                                                                                      412
                                                                                                      413
                                                                                                      414
                                                                                                      415
                                                                                                      416
                                                                                                      417
                                                                                                      418
                                                                                                      419
                                                                                                      420
                                                                                                      421
                                                                                                      422
                                                                                                      423
                                                                                                      424
                                                                                                      425
                                                                                                      426
                                                                                                      427
                                                                                                      428
                                                                                                      429
                                                                                                      430
                                                                                                      431
                                                                                                      432
                                                                                                      433
                                                                                                      434
                                                                                                      435
                                                                                                      436
                                                                                                      437
                                                                                                      438
                                                                                                      439
                                                                                                      440
                                                                                                      441
                                                                                                      442
                                                                                                      443
                                                                                                      444
                                                                                                      445
                                                                                                      446
                                                                                                      447
                                                                                                      448
                                                                                                      449
                                                                                                      450
                                                                                                      451
                                                                                                      452
                                                                                                      453
                                                                                                      454
                                                                                                      455
                                                                                                      456
                                                                                                      457
                                                                                                      458
                                                                                                      459
                                                                                                      460
                                                                                                      461
                                                                                                      462
                                                                                                      463
                                                                                                      464
                                                                                                      465
                                                                                                      466
                                                                                                      467
                                                                                                      468
                                                                                                      469
                                                                                                      470
                                                                                                      471
                                                                                                      472
                                                                                                      473
                                                                                                      474
                                                                                                      475
                                                                                                      476
                                                                                                      477
                                                                                                      478
                                                                                                      479
                                                                                                      480
                                                                                                      481
                                                                                                      482
                                                                                                      483
                                                                                                      484
                                                                                                      485
                                                                                                      486
                                                                                                      487
                                                                                                      488
                                                                                                      489
                                                                                                      490
                                                                                                      491
                                                                                                      492
                                                                                                      493
                                                                                                      494
                                                                                                      495
                                                                                                      496
                                                                                                      497
                                                                                                      498
                                                                                                      499
                                                                                                      500
                                                                                                      501
                                                                                                      502
                                                                                                      503
                                                                                                      504
                                                                                                      505
                                                                                                      506
                                                                                                      507
                                                                                                      508
                                                                                                      509
                                                                                                      510
                                                                                                      511
                                                                                                      512
                                                                                                      513
                                                                                                      514
                                                                                                      515
                                                                                                      516
                                                                                                      517
                                                                                                      518
                                                                                                      519
                                                                                                      520
                                                                                                      521
                                                                                                      522
                                                                                                      523
                                                                                                      524
                                                                                                      525
                                                                                                      526
                                                                                                      527
                                                                                                      528
                                                                                                      529
                                                                                                      530
                                                                                                      531
                                                                                                      532
                                                                                                      533
                                                                                                      534
                                                                                                      535
                                                                                                      536
                                                                                                      537
                                                                                                      538
                                                                                                      539
                                                                                                      540
                                                                                                      541
                                                                                                      542
                                                                                                      543
                                                                                                      544
                                                                                                      545
                                                                                                      546
                                                                                                      547
                                                                                                      548
                                                                                                      549
                                                                                                      550
                                                                                                      551
                                                                                                      552
                                                                                                      553
                                                                                                      554
                                                                                                      555
                                                                                                      556
                                                                                                      557
                                                                                                      558
                                                                                                      559
                                                                                                      560
                                                                                                      561
                                                                                                      562
                                                                                                      563
                                                                                                      564
                                                                                                      565
                                                                                                      566
                                                                                                      567
                                                                                                      568
                                                                                                      569
                                                                                                      570
                                                                                                      571
                                                                                                      572
                                                                                                      573
                                                                                                      574
                                                                                                      575
                                                                                                      576
                                                                                                      577
                                                                                                      578
                                                                                                      579
                                                                                                      580
                                                                                                      581
                                                                                                      582
                                                                                                      583
                                                                                                      584
                                                                                                      585
                                                                                                      586
                                                                                                      587
                                                                                                      588
                                                                                                      589
                                                                                                      590
                                                                                                      591
                                                                                                      592
                                                                                                      593
                                                                                                      594
                                                                                                      595
                                                                                                      596
                                                                                                      597
                                                                                                      598
                                                                                                      599
                                                                                                      600
                                                                                                      601
                                                                                                      602
                                                                                                      603
                                                                                                      604
                                                                                                      605
                                                                                                      606
                                                                                                      607
                                                                                                      608
                                                                                                      609
                                                                                                      610
                                                                                                      611
                                                                                                      612
                                                                                                      613
                                                                                                      614
                                                                                                      615
                                                                                                      616
                                                                                                      617
                                                                                                      618
                                                                                                      619
                                                                                                      620
                                                                                                      621

                                                                                                      收集到的信息量非常大,但很幸运,只需关注其中常见的几项即可,比如系统版本号、主机名、IP地址、分区信息、挂载信息。

                                                                                                      有了这些信息,就可以去访问这些信息。由于它们都存放在ansible_facts变量中,所以通过这个变量去访问即可。但需要注意的是,对于收集到的绝大多数Facts信息,都有两种访问方式:

                                                                                                      (1).一种是debug查看ansible_facts变量得到的结果,这也是真正存储这些信息的方式

                                                                                                      (2).一种是命令行执行setup模块输出的方式

                                                                                                      直接使用debug模块去输出ansible_facts变量,即可知如何访问这些信息。例如:

                                                                                                      要获取eth0的ipv4地址:

                                                                                                      debug:
                                                                                                        var: ansible_facts.eth0.ipv4.address
                                                                                                      
                                                                                                      1
                                                                                                      2

                                                                                                      再看在ansible命令行中执行setup模块的输出信息,会发现原本ansible_facts内几乎所有顶级的key现在都以ansible_开头,例如:

                                                                                                      debug:
                                                                                                        var: ansible_all_ipv4_addresses
                                                                                                      
                                                                                                      1
                                                                                                      2

                                                                                                      之所以可以这样直接访问,是因为Ansible将Facts中绝大多数的顶级key都注入到了Ansible自身维护的变量表(即hostvars)中,这样访问它们就方便的多。

                                                                                                      至于采用何种方式访问,这无所谓,但是要知道的是,虽然绝大多数Facts信息都单独定义了变量,但并非所有(主要是那些可能产生歧义或冲突的变量)。

                                                                                                      另外再多提醒一句,ansible_facts自身也是变量,它也保存在各自节点的hostvars变量中,所以也可以通过hostvars去访问Facts信息。例如:

                                                                                                      debug:
                                                                                                        var: hostvars['logstash2']['ansible_facts'].eth0.ipv4.address
                                                                                                      
                                                                                                      1
                                                                                                      2

                                                                                                      通常情况下,我们在运行play的时候,ansible会先尝试ssh到被控端采集fact,如果此时,被控制端的ssh还没有完全启动,就会导致整个play执行失败。这个时候,我们可以先显示的关闭fact采集,然后在task中通过wait_for等待被控端ssh端口被正常监听,再在task中使用setup模块来手动采集fact:

                                                                                                      - name: Deploy apps
                                                                                                        hosts: webservers
                                                                                                        gather_facts: false
                                                                                                        tasks:
                                                                                                          - name: wait for ssh to be running
                                                                                                            local_action: wait_for port=22 host="{{ inventory_hostname }}" search_regex=OpenSSH
                                                                                                          - name: gather facts
                                                                                                            setup:
                                                                                                          ......
                                                                                                      
                                                                                                      1
                                                                                                      2
                                                                                                      3
                                                                                                      4
                                                                                                      5
                                                                                                      6
                                                                                                      7
                                                                                                      8
                                                                                                      9

                                                                                                      # 4 启用fact缓存

                                                                                                      如果在play中需要引入fact,则可以开启fact缓存。fact缓存目前支持三种存储方式,分别为JSON、memcached、redis。

                                                                                                      redis:缓存在redis服务中,直到目前(Ansible 2.9)为止,Ansible还不支持指定连接redis的端口、密码等

                                                                                                      1.gathering:控制Ansible是否自动收集Facts,它有三种值:

                                                                                                      (1).implicit:这是默认值,表示执行play时会自动收集Facts,除非显式指定gather_facts: false禁止收集

                                                                                                      (2).explicit:不自动收集Facts,除非显式指定gather_facts: true开启收集

                                                                                                      (3).smart:自动收集Facts,但如果已存在(缓存)则不重复收集

                                                                                                      # 4.1 Json文件fact缓存后端

                                                                                                      使用JSON文件作为fact缓存后端的时候,ansible将会把采集的fact写入到控制主机的文件中。

                                                                                                      ansible.cfg配置如下:

                                                                                                      [defaults]
                                                                                                      gathering = smart
                                                                                                      #缓存时间,单位为秒
                                                                                                      fact_caching_timeout = 86400    
                                                                                                      fact_caching = jsonfile
                                                                                                      #指定ansible包含fact的json文件位置,如果目录不存在,会自动创建
                                                                                                      fact_caching_connection = /tmp/ansible_fact_cache    
                                                                                                      
                                                                                                      1
                                                                                                      2
                                                                                                      3
                                                                                                      4
                                                                                                      5
                                                                                                      6
                                                                                                      7

                                                                                                      # 4.2 Redis fact缓存后端

                                                                                                      使用redis作为fact缓存后端,需要在控制主机上安装redis服务并保持运行。需要安装python操作redis的软件包。

                                                                                                      ansible.cfg配置如下:

                                                                                                      [defaults]
                                                                                                      gathering = smart
                                                                                                      fact_caching_timeout = 86400 
                                                                                                      fact_caching = redis
                                                                                                      
                                                                                                      1
                                                                                                      2
                                                                                                      3
                                                                                                      4

                                                                                                      # 4.3 Memcached fact缓存后端

                                                                                                      使用memcached作为fact缓存后端,需要在控制主机上安装Memcached服务并保持运行,需要安装python操作memcached的软件包。

                                                                                                      ansible.cfg配置如下:

                                                                                                      [defaults]
                                                                                                      gathering = smart
                                                                                                      fact_caching_timeout = 86400 
                                                                                                      fact_caching = memcached
                                                                                                      
                                                                                                      1
                                                                                                      2
                                                                                                      3
                                                                                                      4

                                                                                                      # 5 关闭fact

                                                                                                      如果不想从fact中获取变量,或者说整个playbook当中都没有使用到fact变量,可以通过如下方法关闭fact以提升执行效率:

                                                                                                      - hosts: test
                                                                                                        gather_facts: false
                                                                                                      
                                                                                                      1
                                                                                                      2

                                                                                                      也可以在ansible.cfg中添加如下配置:

                                                                                                      [defaults]
                                                                                                      gathering = explicit
                                                                                                      
                                                                                                      1
                                                                                                      2

                                                                                                      # 6 委托Facts

                                                                                                      略:我暂时还没有用到

                                                                                                      edit icon编辑此页open in new window
                                                                                                      上次编辑于: 2022/4/27 15:33:00
                                                                                                      贡献者: clay-wangzhi
                                                                                                      上一页
                                                                                                      5.1 自定义变量
                                                                                                      下一页
                                                                                                      5.3 魔法变量
                                                                                                      备案号:冀ICP备2021007336号
                                                                                                      Copyright © 2022 Clay