4、Ansible变量

版权声明:原创作品,谢绝转载!否则将追究法律责任。

当你的才华还撑不起你的野心的时候,你就应该静下心来学习。
当你的能力还驾驭不了你的目标的时候,你就应该沉下心来历练。
问问自己,想要怎样的人生。

 

变量概述

变量提供了便捷的方式来管理Ansible playbook的每一个项目中的动态值,比如 nginx‐1.6.3 这个软件包的版本,在其它地方或许会反复使用,那么如果讲此值设置为变量,然后再在其他的playbook中调用,会方便许多。如此一来还方便维护,减少维护的成本。


定义变量的方式

1.通过命令行进行变量定义

2.在play文件中进行变量定义

3.通过Inventory主机信息文件中进行变量定义


变量的优先级

如果在定义变量时,变量冲突了

在上述的三个地方分别设置了:

1.命令行中:age=11

2.play文件中:age=12

3.Inventory中:age=13

那么,最终的age结果一定是11

变量的读取优先级为:

命令行 > playbook文件 > Inventory文件


变量定义

【playbook中vars定义变量】

playbook变量可以通过多种方式进行定义,最简单的方式就是在playbook的开头通过vars进行定义。

 #方法一:
‐ hosts: web_group
  vars:
    packages:
      ‐ httpd
      ‐ mariadb‐server
      ‐ php
      ‐ php‐mysql
      ‐ php‐pdo
  tasks:
    ‐ name: Install httpd mariadb php Server
      yum:
        name: "{{ packages }}"

#方法二:
‐ hosts: web_group
  vars:
    ‐ web_server: httpd
    ‐ db_server: mariadb‐server
    ‐ php_server: php,php‐mysql,php‐pdo
  tasks:
    ‐ name: Install httpd mariadb php Server
      yum:
        name:
          ‐ "{{ web_server }}"
          ‐ "{{ db_server }}"
          ‐ "{{ php_server }}"

【使用vars_file定义变量】

刚才我们学到在playbook中使用 vars 定义变量,有一个缺陷,就是其他的playbook无法使用该变量。所以我们可以采取第二种定义变量的方式,在 vars_file 中定义变量。

#定义阶段
[root@m01 ~]# cat vars1.yml
web_server: httpd
[root@m01 ~]# cat vars2.yml
db_server: mariadb‐server

#调用阶段
‐ hosts: web_group
  vars_files: -./vars1.yml
  tasks:
  ‐ name: Install httpd mariadb php Server
    yum:
      name: "{{ web_server }}"
#定义阶段
[root@m01 ~]# cat vars1.yml
web_server: httpd
[root@m01 ~]# cat vars2.yml
db_server: mariadb‐server

#调用阶段
‐ hosts: web_group
  vars_file:
    ‐ ./vars1.yml
    ‐ ./vars2.yml
  ‐ name: Install httpd mariadb php Server
    yum:
      name:
        ‐ "{{ web_server }}"
        ‐ "{{ db_server }}"

#获取Ansible内置变量
‐ hosts: web_group
  vars:
    ‐ remote_ip: "{{ansible_default_ipv4['address'] }}"
    ‐ remote_hostname: "{{ ansible_fqdn }}"
  tasks:
    ‐ name: Touch IP File
      file:
        path: /root/{{ remote_ip }}
        state: touch

    ‐ name: Touch Hostname File
      file:
        path: /root/{{ remote_hostname }}
        state: touch

【在Inventory中定义变量】

注意:在Inventory中定义变量,主机的变量要高于主机组的变量,所以该方法不推荐使用,容易将环境弄乱。

#定义阶段
[root@m01 ~]# vim /etc/ansible/hosts
[web_group]
web01 ansible_ssh_host=10.0.0.7
web02 ansible_ssh_host=10.0.0.8
[web_group:vars]
web_server=httpd
index_file=index.html

#调用阶段
‐ hosts: web_group
  tasks:
  ‐ name: Install httpd Server
    yum:
      name: "{{ web_server }}"
  ‐ name: Create Index File
  file:
    path: /tmp/{{ index_file }}
    state: touch

之前的几种变量定义都不是很好用,比较好用的是在Ansible项目目录下创建两个变量目录:

host_vars

group_vars

切记,目录名字一定要一致,不能做任何修改。

1.主机组定义变量

#定义阶段
[root@m01 ~]# mkdir group_vars

#切记定义变量的文件必须以组名为文件名
[root@m01 ~]# vim /root/group_vars/web_group
web_server: httpd

#调用阶段
‐ hosts: web_group
  tasks:
  ‐ name: Install httpd Server
    yum:
      name: "{{ web_server }}"

如果我想要所有组都能使用变量,该如何做?

2.主机定义变量

#定义阶段
[root@m01 ~]# mkdir host_vars
#切记定义变量的文件必须以主机名为文件名
[root@m01 ~]# vim /root/host_vars/web01
web_server: nginx

#调用阶段
‐ hosts: web_group
  tasks:
  ‐ name: Install httpd Server
    yum:
     name: "{{ web_server }}"

【命令行定义变量 】

通过命令行覆盖变量,Inventory的变量会被playbook文件中覆盖,这两种方式的变量都会被命令行直接指定变量所覆

盖,使用 ‐‐extra‐vars 或者 ‐e 设置变量

 

[root@m01 ~]# vim test.yml
‐ hosts: web_group
  tasks:
  ‐ name: Install httpd Server
    yum:
      name: "{{ web_server }}"

#定义阶段
[root@m01 ~]# ansible‐playbook test.yml ‐e "web_server=vsftpd"[root@m01 ~]# vim test.yml
‐ hosts: web_group
  tasks:
  ‐ name: Install httpd Server
    yum:
      name:
        ‐ "{{ web_server }}"
        ‐ "{{ db_server }}"

#定义阶段
[root@m01 ~]# ansible‐playbook test.yml ‐e "web_server=vsftpd" ‐e "db_server=mariadb‐server"

【变量优先级测试】

[root@m01 ~]# vim touch_file.yml
‐ hosts: web_group
  vars:
    filename: vars
  vars_files:
    ‐ ./vars1.yml
  tasks:
    ‐ name: Touch vars File
      file:
        path: /root/{{ filename }}
        state: directory

#定义vars_files
[root@m01 ~]# vim vars1.yml
filename: vars_files

#定义group_vars中的web_group
[root@m01 ~]# vim group_vars/web_group
filename: group_vars_web_group

#定义host_vars中的web01
[root@m01 ~]# vim host_vars/web01
[root@m01 ~]# vim host_vars/web01
filename: host_vars

#定义group_vars中的all
[root@m01 ~]# vim group_vars/all
filename: group_vars_all

#测试命令行
[root@m01 ~]# ansible‐playbook touch_file.yml ‐e "filename=vars_command"

#测试所有
[root@m01 ~]# ansible‐playbook touch_file.yml

变量注册

为什么要学变量注册?】

当 absible 的模块在运行之后,其实都会返回一些 result 结果,就像是执行脚本,我们有的时候需要脚本给我们一些 return 返回值,我们才知道,上一步是否可以执行成功,但是…默认情况下, ansible 的 result 并不会显示出来,所以,我们可以把这些返回值’存储’到变量中,这样我们就能通过’调用’对应的变量名,从而获取到这些 result ,这种将模块的返回值,写入到变量中的方法被称为变量注册

 

那么咋样将返回值注册到变量,如下一个 playbook 示例:

#编辑剧本
[root@m01 ~]# vim register.yml
‐ hosts: web_group
  tasks:
    ‐ name: Test Register Vars
      shell: "ls ‐l /"

#查看执行结果
[root@m01 ~]# ansible‐playbook register.yml
PLAY [web_group]
********************************************************************************************
********************************************************************************************
*************************************
TASK [Gathering Facts]
********************************************************************************************
********************************************************************************************
*******************************
ok: [web02]
ok: [web01]
TASK [Test Register Vars]
********************************************************************************************
********************************************************************************************
****************************
changed: [web01]
changed: [web02]
PLAY RECAP
***********************************************************************************************************************************************************************************************************************************
web01 : ok=2 changed=1 unreachable=0 failed=0 skipped=0
rescued=0 ignored=0
web02 : ok=2 changed=1 unreachable=0 failed=0 skipped=0
rescued=0 ignored=0

如上执行结果可见,当我们使用shell模块执行 ls ‐l / 时,ansible给我们返回的只有changed我们无法看到执行之后的结果,所以此时我们需要使用到 变量注册

playbook如下:

#编辑playbook
[root@m01 ~]# vim register.yml
‐ hosts: web_group
  tasks:
    ‐ name: Test Register Vars
      shell: "ls ‐l /"
      register: list_dir
    ‐ name: Return Result
      debug:
        msg: "{{ list_dir }}"

#查看执行结果
[root@m01 ~]# ansible‐playbook register.yml
PLAY [web_group]********************************************************************************************
********************************************************************************************
*************************************
TASK [Gathering Facts]
********************************************************************************************
********************************************************************************************
*******************************
ok: [web01]
ok: [web02]
TASK [Test Register Vars]
********************************************************************************************
************************************************************************************************************************
changed: [web01]
changed: [web02]
TASK [Return Result]
*************************************************************************************************************************************************************************************************************************
ok: [web01] => {
    "msg": {
        "changed": true,
        "cmd": "ls ‐l /",
        "delta": "0:00:00.005536",
        "end": "2019‐09‐16 11:52:16.492946",
        "failed": false,
        "rc": 0,
        "start": "2019‐09‐16 11:52:16.487410",
        "stderr": "",
        "stderr_lines": [],
        "stdout": "总用量 28\nlrwxrwxrwx. 1 root root 7 3月 9 2019 bin ‐> usr/bin\ndr‐
xr‐xr‐x. 5 root root 4096 3月 9 2019 boot\ndrwxr‐xr‐x. 20 root root 3280 9月 8 12:25
dev\ndrwxr‐xr‐x. 80 root root 8192 9月 10 20:52 etc\ndrwxr‐xr‐x. 5 root root 41 9月
8 16:22 home\nlrwxrwxrwx. 1 root root 7 3月 9 2019 lib ‐> usr/lib\nlrwxrwxrwx. 1
root root 9 3月 9 2019 lib64 ‐> usr/lib64\ndrwxr‐xr‐x. 2 root root 6 4月 11 2018
media\ndrwxr‐xr‐x. 2 root root 6 4月 11 2018 mnt\ndrwxr‐xr‐x. 2 www www 6 9月
10 15:31 opt\ndr‐xr‐xr‐x. 128 root root 0 9月 8 12:25 proc\ndr‐xr‐x‐‐‐. 9 root root
4096 9月 10 21:16 root\ndrwxr‐xr‐x. 25 root root 740 9月 10 20:52 run\nlrwxrwxrwx. 1
root root 8 3月 9 2019 sbin ‐> usr/sbin\ndrwxr‐xr‐x. 2 root root 6 4月 11 2018
srv\ndr‐xr‐xr‐x. 13 root root 0 9月 8 12:25 sys\ndrwxrwxrwt. 15 root root 4096 9月
16 11:52 tmp\ndrwxr‐xr‐x. 13 root root 155 3月 9 2019 usr\ndrwxr‐xr‐x. 21 root root
4096 9月 10 20:52 var",
       "stdout_lines": [
            "总用量 28",
            "lrwxrwxrwx. 1 root root 7 3月 9 2019 bin ‐> usr/bin",
            "dr‐xr‐xr‐x. 5 root root 4096 3月 9 2019 boot",
            "drwxr‐xr‐x. 20 root root 3280 9月 8 12:25 dev",
            "drwxr‐xr‐x. 80 root root 8192 9月 10 20:52 etc",
            "drwxr‐xr‐x. 5 root root 41 9月 8 16:22 home",
            "lrwxrwxrwx. 1 root root 7 3月 9 2019 lib ‐> usr/lib",
            "lrwxrwxrwx. 1 root root 9 3月 9 2019 lib64 ‐> usr/lib64",
            "drwxr‐xr‐x. 2 root root 6 4月 11 2018 media",
            "drwxr‐xr‐x. 2 root root 6 4月 11 2018 mnt",
            "drwxr‐xr‐x. 2 www www 6 9月 10 15:31 opt",
            "dr‐xr‐xr‐x. 128 root root 0 9月 8 12:25 proc",
            "dr‐xr‐x‐‐‐. 9 root root 4096 9月 10 21:16 root",
            "drwxr‐xr‐x. 25 root root 740 9月 10 20:52 run",
            "lrwxrwxrwx. 1 root root 8 3月 9 2019 sbin ‐> usr/sbin",
            "drwxr‐xr‐x. 2 root root 6 4月 11 2018 srv",
            "dr‐xr‐xr‐x. 13 root root 0 9月 8 12:25 sys",
            "drwxrwxrwt. 15 root root 4096 9月 16 11:52 tmp",
            "drwxr‐xr‐x. 13 root root 155 3月 9 2019 usr",
            "drwxr‐xr‐x. 21 root root 4096 9月 10 20:52 var"
        ]
    }
}
ok: [web02] => {
    "msg": {
      "changed": true,
      "cmd": "ls ‐l /",
      "delta": "0:00:00.005813",
      "end": "2019‐09‐16 11:52:16.495422",
      "failed": false,
      "rc": 0,
      "start": "2019‐09‐16 11:52:16.489609",
      "stderr": "",
      "stderr_lines": [],
      "stdout": "总用量 24\nlrwxrwxrwx. 1 root root 7 3月 9 2019 bin ‐> usr/bin\ndr‐
xr‐xr‐x. 5 root root 4096 3月 9 2019 boot\ndrwxr‐xr‐x. 20 root root 3260 9月 10 09:47
dev\ndrwxr‐xr‐x. 80 root root 8192 9月 10 20:52 etc\ndrwxr‐xr‐x. 5 root root 41 9月
8 16:22 home\nlrwxrwxrwx. 1 root root 7 3月 9 2019 lib ‐> usr/lib\nlrwxrwxrwx. 1
root root 9 3月 9 2019 lib64 ‐> usr/lib64\ndrwxr‐xr‐x. 2 root root 6 4月 11 2018
media\ndrwxr‐xr‐x. 2 root root 6 4月 11 2018 mnt\ndrwxr‐xr‐x. 2 www www 6 9月
10 15:31 opt\ndr‐xr‐xr‐x. 128 root root 0 8月 15 15:10 proc\ndr‐xr‐x‐‐‐. 6 root root
180 9月 10 21:16 root\ndrwxr‐xr‐x. 25 root root 740 9月 10 20:52 run\nlrwxrwxrwx. 1
root root 8 3月 9 2019 sbin ‐> usr/sbin\ndrwxr‐xr‐x. 2 root root 6 4月 11 2018
srv\ndr‐xr‐xr‐x. 13 root root 0 8月 15 15:10 sys\ndrwxrwxrwt. 14 root root 4096 9月
16 11:52 tmp\ndrwxr‐xr‐x. 13 root root 155 3月 9 2019 usr\ndrwxr‐xr‐x. 21 root root
4096 9月 10 20:52 var",
        "stdout_lines": [
            "总用量 24",
            "lrwxrwxrwx. 1 root root 7 3月 9 2019 bin ‐> usr/bin",
            "dr‐xr‐xr‐x. 5 root root 4096 3月 9 2019 boot",
            "drwxr‐xr‐x. 20 root root 3260 9月 10 09:47 dev",
            "drwxr‐xr‐x. 80 root root 8192 9月 10 20:52 etc",
            "drwxr‐xr‐x. 5 root root 41 9月 8 16:22 home",
            "lrwxrwxrwx. 1 root root 7 3月 9 2019 lib ‐> usr/lib",
            "lrwxrwxrwx. 1 root root 9 3月 9 2019 lib64 ‐> usr/lib64",
            "drwxr‐xr‐x. 2 root root 6 4月 11 2018 media",
            "drwxr‐xr‐x. 2 root root 6 4月 11 2018 mnt",
            "drwxr‐xr‐x. 2 www www 6 9月 10 15:31 opt",
            "dr‐xr‐xr‐x. 128 root root 0 8月 15 15:10 proc",
            "dr‐xr‐x‐‐‐. 6 root root 180 9月 10 21:16 root",
            "drwxr‐xr‐x. 25 root root 740 9月 10 20:52 run",
            "lrwxrwxrwx. 1 root root 8 3月 9 2019 sbin ‐> usr/sbin",
            "drwxr‐xr‐x. 2 root root 6 4月 11 2018 srv",
            "dr‐xr‐xr‐x. 13 root root 0 8月 15 15:10 sys",
            "drwxrwxrwt. 14 root root 4096 9月 16 11:52 tmp",
            "drwxr‐xr‐x. 13 root root 155 3月 9 2019 usr",
            "drwxr‐xr‐x. 21 root root 4096 9月 10 20:52 var"
       ]
    }
}
PLAY RECAP
********************************************************************************************
********************************************************************************************
*******************************************
web01 : ok=3 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
web02 : ok=3 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
#只输出自己想要的内容
[root@m01 ~]# vim register.yml‐ hosts: web_group
  tasks:
    ‐ name: Test Register Vars
      shell: "ls ‐l /"
      register: list_dir

    ‐ name: Return Result
      debug:
        msg: "{{ list_dir.stdout_lines }}"

#查看结果
[root@m01 ~]# ansible‐playbook register.yml
PLAY [web_group]
*****************************************************************************************************************************************************************************************************************************
TASK [Gathering Facts]
***********************************************************************************************************************************************************************************************************************
ok: [web02]
ok: [web01]
TASK [Test Register Vars]
********************************************************************************************************************************************************************************************************************
changed: [web01]
changed: [web02]
TASK [Return Result]
*************************************************************************************************************************************************************************************************************************
ok: [web01] => {
    "msg": [
      "总用量 28",
        "lrwxrwxrwx. 1 root root 7 3月 9 2019 bin ‐> usr/bin",
        "dr‐xr‐xr‐x. 5 root root 4096 3月 9 2019 boot",
        "drwxr‐xr‐x. 20 root root 3280 9月 8 12:25 dev",
        "drwxr‐xr‐x. 80 root root 8192 9月 10 20:52 etc",
        "drwxr‐xr‐x. 5 root root 41 9月 8 16:22 home",
        "lrwxrwxrwx. 1 root root 7 3月 9 2019 lib ‐> usr/lib",
        "lrwxrwxrwx. 1 root root 9 3月 9 2019 lib64 ‐> usr/lib64",
        "drwxr‐xr‐x. 2 root root 6 4月 11 2018 media",
        "drwxr‐xr‐x. 2 root root 6 4月 11 2018 mnt",
        "drwxr‐xr‐x. 2 www www 6 9月 10 15:31 opt",
        "dr‐xr‐xr‐x. 128 root root 0 9月 8 12:25 proc",
        "dr‐xr‐x‐‐‐. 9 root root 4096 9月 10 21:16 root",
        "drwxr‐xr‐x. 25 root root 740 9月 10 20:52 run",
        "lrwxrwxrwx. 1 root root 8 3月 9 2019 sbin ‐> usr/sbin",
        "drwxr‐xr‐x. 2 root root 6 4月 11 2018 srv",
        "dr‐xr‐xr‐x. 13 root root 0 9月 8 12:25 sys",
        "drwxrwxrwt. 15 root root 4096 9月 16 11:54 tmp",
        "drwxr‐xr‐x. 13 root root 155 3月 9 2019 usr",
        "drwxr‐xr‐x. 21 root root 4096 9月 10 20:52 var"
    ]
}
ok: [web02] => {
    "msg": [
      "总用量 24",
        "lrwxrwxrwx. 1 root root 7 3月 9 2019 bin ‐> usr/bin",
        "dr‐xr‐xr‐x. 5 root root 4096 3月 9 2019 boot",
        "drwxr‐xr‐x. 20 root root 3260 9月 10 09:47 dev",
        "drwxr‐xr‐x. 80 root root 8192 9月 10 20:52 etc",
        "drwxr‐xr‐x. 5 root root 41 9月 8 16:22 home",
        "lrwxrwxrwx. 1 root root 7 3月 9 2019 lib ‐> usr/lib",
        "lrwxrwxrwx. 1 root root 9 3月 9 2019 lib64 ‐> usr/lib64",
        "drwxr‐xr‐x. 2 root root 6 4月 11 2018 media",
        "drwxr‐xr‐x. 2 root root 6 4月 11 2018 mnt",
        "drwxr‐xr‐x. 2 www www 6 9月 10 15:31 opt",
        "dr‐xr‐xr‐x. 128 root root 0 8月 15 15:10 proc",
        "dr‐xr‐x‐‐‐. 6 root root 180 9月 10 21:16 root",
        "drwxr‐xr‐x. 25 root root 740 9月 10 20:52 run",
        "lrwxrwxrwx. 1 root root 8 3月 9 2019 sbin ‐> usr/sbin",
        "drwxr‐xr‐x. 2 root root 6 4月 11 2018 srv",
        "dr‐xr‐xr‐x. 13 root root 0 8月 15 15:10 sys",
        "drwxrwxrwt. 14 root root 4096 9月 16 11:54 tmp",
        "drwxr‐xr‐x. 13 root root 155 3月 9 2019 usr",
        "drwxr‐xr‐x. 21 root root 4096 9月 10 20:52 var"
    ]
}
PLAY RECAP
********************************************************************************************
********************************************************************************************
*******************************************
web01 : ok=3 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
web02 : ok=3 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
#debug模块常用参数
msg: #调试输出的消息
var: #将某个任务执行的输出作为变量传递给debug模块,debug会直接将其打印输出
verbosity: #debug的级别(默认是0级,全部显示)

【层级定义变量】

#编辑变量文件
[root@m01 ~]# vim vars_file.yml
lamp:
  framework:
    web_package: httpd
    db_package: mariadb‐server
    php_package: php

lnmp:
  framework:
    web_package: nginx
    db_package: mysql
    php_package: php

lnmt:
  framework:
    web_package: nginx
    db_package: mysql
    java_package: tomcat

#编辑playbook文件
[root@m01 ~]# vim test.yml
‐ hosts: web_group
  vars_files: ./vars_file.yml
  tasks:
    ‐ name: Install LAMP httpd
      yum:
        name: "{{ lamp.framework.web_package }}"
    ‐ name: Install LAMP mariadb‐server
      yum:
        name: "{{ lamp.framework.db_package }}"
    ‐ name: Install LAMP php
      yum:
        name: "{{ lamp.framework.php_package }}"

#官方推荐写法
[root@m01 ~]# vim test.yml
‐ hosts: web_group
  vars_files: ./vars_file.yml
  tasks:
    ‐ name: Install LAMP httpd
      yum:
        name: "{{ lamp['framework']['web_package'] }}"
    ‐ name: Install LAMP mariadb‐server
      yum:
        name: "{{ lamp['framework']['db_package'] }}"
    ‐ name: Install LAMP php
      yum:
        name: "{{ lamp['framework']['php_package'] }}"

#执行playbook
[root@m01 ~]# ansible‐playbook test.yml
PLAY [web_group]
********************************************************************************************
********************************************************************************************
*************************************
TASK [Gathering Facts]
********************************************************************************************
********************************************************************************************
*******************************
ok: [web01]
ok: [web02]
TASK [Install LAMP httpd]
********************************************************************************************
********************************************************************************************
****************************
ok: [web02]
ok: [web01]
TASK [Install LAMP mariadb‐server]
***********************************************************************************************************************************************************************************************************
ok: [web02]
ok: [web01]
TASK [Install LAMP php]
**********************************************************************************************************************************************************************************************************************
ok: [web02]
ok: [web01]
PLAY RECAP
****************************************************************************************************************************************************************************************
*******************************************
web01 : ok=4 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
web02 : ok=4 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

facts缓存

Ansible facts是在被管理追击上通过Ansible自动采集发现的变量。 facts 包含每台特定的主机信息。比如:被控端的主机名、IP地址、系统版本、CPU数量、内存状态、磁盘状态等等。

 


【facts使用场景】

1.通过 facts 缓存检查CPU,来生成对应的nginx配置文件

2.通过 facts 缓存检查主机名,生成不同的zabbix配置文件

3.通过 facts 缓存检索物理机的内存大小来生成不通的mysql配置文件

综上所述的Ansible facts类似于 saltstack 中的 grains 对于做自动化的小伙伴是非常有用滴。


【facts基本用法】

#编辑
[root@m01 ~]# vim facts.yml
‐ hosts: web_group
  tasks:
    ‐ name: Get Host Info
      debug:
        msg: >
          Hostname "{{ ansible_fqdn }}" and IP "{{ ansible_default_ipv4.address }}"

#执行
[root@m01 ~]# ansible‐playbook facts.yml
[root@m01 ~]# ansible‐playbook facts.yml
PLAY [web_group]
********************************************************************************************
********************************************************************************************
*************************************
TASK [Gathering Facts]
********************************************************************************************
********************************************************************************************
*******************************
ok: [web02]
ok: [web01]
TASK [Get Host Info]
********************************************************************************************
*****************************************************************************************************************************
ok: [web01] => {
"msg": "Hostname \"web01\" and IP \"10.0.0.7\"\n"
}
ok: [web02] => {
"msg": "Hostname \"web02\" and IP \"10.0.0.8\"\n"}
PLAY RECAP
********************************************************************************************
********************************************************************************************
*******************************************
web01 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
web02 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

【关闭facts 】

[root@m01 ~]# vim facts.yml
‐ hosts: web_group
  gather_facts: no #关闭信息采集
  tasks: 

【facts生成zabbix配置文件】

‐ hosts: db_group
  tasks:
    ‐ name: Install mysql server
      yum:
        name: mariadb‐server
        state: present

    ‐ name: copy mysql conf
      template:
        src: ./my.cnf
        dest: /etc/my.cnf

[root@m01 ~]# vim /etc/my.cnf
[mysqld]
basedir=/usr
datadir=/var/lib/mysql/
socket=/var/lib/mysql/mysql.sock
log_error=/var/log/mariadb/mariadb.log
innodb_buffer_pool_size={{ ansible_memtotal_mb * 0.8 }}
posted @ 2022-04-12 21:39  kirin(麒麟)  阅读(65)  评论(0编辑  收藏  举报
Δ