(1)变量类型

    1.1在playbook文件中的play使用变量

      [root@m01 project1]# cat vars_1.yml

        - hosts: oldboy

         vars:

          - web_packages: httpd-2.4.6

          - ftp_packages: vsftpd-3.0.2

        tasks:

        - name: Installed {{ web_packages }} {{ ftp_packages }}

           yum:

          name:

           - "{{ web_packages }}"

            - "{{ ftp_packages }}"

          state: present

     1.2.通过定义一个变量文件,然后使用playbook进行调用

        [root@m01 project1]# cat vars_public.yml

          web_packages: httpd-2.4.6

          ftp_packages: vsftpd-3.0.2

        [root@m01 project1]# cat vars_1.yml

          - hosts: oldboy

           vars_files: ./vars_public.yml

          tasks:

           - name: Installed {{ web_packages }} {{ ftp_packages }}

          yum:

          name:

          - "{{ web_packages }}"

           - "{{ ftp_packages }}"

          state: present

-------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------------

    2.通过inventory主机清单进行变量定义

      在项目目录下创建两个变量的目录,host_vars group_vars

      #1)在当前的项目目录中创建两个变量的目录

        [root@ansible project1]# mkdir host_vars

        [root@ansible project1]# mkdir group_vars

      #2)在group_vars目录中创建一个文件,文件名与inventory清单中的组名称要保持完全一致。

        [root@ansible project1]# cat group_vars/oldboy

          web_packages: wget

          ftp_packages: tree

      #3)编写playbook,只需在playbook文件中使用变量即可。

        [root@ansible project1]# cat f4.yml

          - hosts: oldboy

          tasks:

          - name: Install Rpm Packages "{{ web_packages }}" "{{ ftp_packages }}"

          yum:

          name:

          - "{{ web_packages }}"

          - "{{ ftp_packages }}"

             state: present

注意: 默认情况下,group_vars目录中文件名与hosts清单中的组名保持一致.

比如在group_vars目录中创建了oldboy组的变量,其他组是无法使用oldboy组的变量

系统提供了一个特殊组,all,只需要在group_vars目录下建立一个all文件,编写好变量,所有组都可使用.

#---------------------hosts_vars----------------       

      #1)在host_vars目录中创建一个文件,文件名与inventory清单中的主机名称要保持完全一致

        [root@ansible project1]# cat hosts

          [oldboy]

          172.16.1.7

          172.16.1.8

      #2)在host_vars目录中创建文件,给172.16.1.7主机定义变量

        [root@ansible project1]# cat host_vars/172.16.1.7

          web_packages: zlib-static

          ftp_packages: zmap

      #3)准备一个playbook文件调用host主机变量

        [root@ansible project1]# cat f4.yml

          - hosts: 172.16.1.7

          tasks:

          - name: Install Rpm Packages "{{ web_packages }}" "{{ ftp_packages }}"

          yum:

          name:

          - "{{ web_packages }}"

          - "{{ ftp_packages }}"

          state: present

          - hosts: 172.16.1.8

          tasks:

          - name: Install Rpm Packages "{{ web_packages }}" "{{ ftp_packages }}"

          yum:

          name:

          - "{{ web_packages }}"

          - "{{ ftp_packages }}"

          state: present

      host_vars 特殊的变量目录,针对单个主机进行变量.

      group_vars 特殊的变量目录,针对inventory主机清单中的组进行变量定义. 对A组定义的变量 B组无法调用

      group_vars/all 特殊的变量文件,可以针对所有的主机组定义变量.

--------------------------------------------------------------------------------

      3.通过执行playbook时使用-e参数指定变量

        [root@m01 project1]# cat vars_7.yml

          - hosts: "{{ hosts }}"   #注意:这是一个变量名称

          tasks:

          - name: Install Rpm Packages "{{ web_packages }}" "{{ ftp_packages }}"

          yum:

          name:

          - "{{ web_packages }}"

          - "{{ ftp_packages }}"

          state: present

        [root@m01 project1]# #ansible-playbook -i hosts  vars_7.yml -e "hosts=oldboy"

--------------------------------------------------------------------------------------

-----------------------------------------------------------------------------------

    (2)变量优先级

        外置传参--->playbook(vars_files--->vars)--->inventory(host_vars-->group_vars/group_name--->group_vars-all)

    (3)register注册(输出shell的结果用debug模块)

        - hosts: oldboy

        tasks:

        - name: Installed Httpd Server

        yum: name=httpd state=present

        - name: Service Httpd Server

        service: name=httpd state=started

        - name: Check Httpd Server

              shell: ps aux|grep httpd

              register: check_httpd

 

            - name: OutPut Variables

              debug:

                msg: "{{ check_httpd.stdout_lines }}"

    (4)ansible facts变量

用来采集被控端的状态指标,比如: IP地址  主机名称  cpu信息  内存  等等

默认情况的facts变量名都已经预先定义好了, 只需要采集被控端的信息,然后传递至facts变量即可.

  # ansible 172.16.1.8 -m setup -a "filter=ansible_memtotal_mb" -i hosts

ansible笔记第二章(ansible-varable变量)的更多相关文章

  1. 《DOM Scripting》学习笔记-——第二章 js语法

    <Dom Scripting>学习笔记 第二章 Javascript语法 本章内容: 1.语句. 2.变量和数组. 3.运算符. 4.条件语句和循环语句. 5.函数和对象. 语句(stat ...

  2. The Road to learn React书籍学习笔记(第二章)

    The Road to learn React书籍学习笔记(第二章) 组件的内部状态 组件的内部状态也称为局部状态,允许保存.修改和删除在组件内部的属性,使用ES6类组件可以在构造函数中初始化组件的状 ...

  3. Spring学习笔记 - 第二章 - 注解开发、配置管理第三方Bean、注解管理第三方Bean、Spring 整合 MyBatis 和 Junit 案例

    Spring 学习笔记全系列传送门: Spring学习笔记 - 第一章 - IoC(控制反转).IoC容器.Bean的实例化与生命周期.DI(依赖注入) [本章]Spring学习笔记 - 第二章 - ...

  4. Android群英传笔记——第二章:Android开发工具新接触

    Android群英传笔记--第二章:Android开发工具新接触 其实这一章并没什么可讲的,前面的安装Android studio的我们可以直接跳过,如果有兴趣的,可以去看看Google主推-Andr ...

  5. 深入理解 C 指针阅读笔记 -- 第二章

    Chapter2.h #ifndef __CHAPTER_2_ #define __CHAPTER_2_ /*<深入理解C指针>学习笔记 -- 第二章*/ /* 内存泄露的两种形式 1.忘 ...

  6. [HeadFrist-HTMLCSS学习笔记]第二章深入了解超文本:认识HTML中的“HT”

    [HeadFrist-HTMLCSS学习笔记]第二章深入了解超文本:认识HTML中的"HT" 敲黑板!!! 创建HTML超链接 <a>链接文本(此处会有下划线,可以单击 ...

  7. SpringMVC学习笔记 - 第二章 - SSM整合案例 - 技术整合、统一结果封装、统一异常处理、前后联调、拦截器

    [前置内容]Spring 学习笔记全系列传送门: Spring学习笔记 - 第一章 - IoC(控制反转).IoC容器.Bean的实例化与生命周期.DI(依赖注入) Spring学习笔记 - 第二章 ...

  8. ansible for devops 读书笔记第二章Ad-Hoc Commands

    参数 参数 说明 -a ‘Arguments’, —args=’Arguments’ 命令行参数 -m NAME, —module-name=NAME 执行模块的名字,默认使用 command 模块, ...

  9. 《C++ Primer》读书笔记—第二章 变量和基本类型

    声明: 文中内容收集整理自<C++ Primer 中文版 (第5版)>,版权归原书所有. 学习一门程序设计语言最好的方法就是练习编程. 1.8比特的char类型计算机表示的实际范围是-12 ...

  10. STL源码分析读书笔记--第二章--空间配置器(allocator)

    声明:侯捷先生的STL源码剖析第二章个人感觉讲得蛮乱的,而且跟第三章有关,建议看完第三章再看第二章,网上有人上传了一篇读书笔记,觉得这个读书笔记的内容和编排还不错,我的这篇总结基本就延续了该读书笔记的 ...

随机推荐

  1. Linux命令-用户、权限管理

      Linux命令-用户.权限管理 用户是Unix/Linux系统工作中重要的一环,用户管理包括用户与组账号的管理. 在Unix/Linux系统中,不论是由本机或是远程登录系统,每个系统都必须拥有一个 ...

  2. Java的注释和标识符

    java 的注释规则 1. 单行注释 语法:// 描述://用于当行注释,与JavaScript一样 //这是一个代码注释 2. javadoc注释 语法: /** *注释内容 / 描述:多行注释中可 ...

  3. Vulnhub:maskcrafter-1.1靶机

    kali:192.168.111.111 靶机:192.168.111.187 信息收集 端口扫描 nmap -A -v -sV -T5 -p- --script=http-enum 192.168. ...

  4. Kotlin相关语法

    1.Kotlin的匿名函数 { val  a = 1 val b = 2 a+b } 就是一个不带名字的函数体 2.Kotlin的函数类型 函数类型:用来声明一个函数参数和返回值形式的 特殊数据类型声 ...

  5. containerd.service containerd-1.6.8-linux-amd64.tar.gz cni-plugins-linux-amd64-v1.1.1.tgz 标准文件下载

    配置K8S时 可能会用到#systemcd来管理containerd,这https://raw.githubusercontent.com/containerd/containerd/main/con ...

  6. celery+redis的使用(异步任务、定时任务)

    目录 celery理解 安装celery+redis 异步任务使用 1.基础使用 新建task.py文件 在项目文件目录下执行python交互式编程 在项目文件目录下创建worker消费任务 2.使用 ...

  7. 解决windows下使用vscode没有函数提示的问题

    vscode支持非常多的扩展,包括支持protobuf语法,非常方便. 笔者近期在使用vscode打开工程(文件夹)情况下,困扰于没有函数提示,例如不同路径的头文件中的函数不提示,库函数不提示,试尽各 ...

  8. 访问第三方接口带Authorization认证

    第一种方式 HttpHeaders httpHeaders = new HttpHeaders(); httpHeaders.add("Authorization", " ...

  9. vue常用插件集合(常用,但一般UI库又不太能满足)

    # v-base-plugins   ``` bash # install  npm i v-base-plugins --save  npm start #引入 import myPlugin fr ...

  10. git提交到代码到远程仓库,合并分支提示entirely different commit histories(备忘)

    最近提交代码到github,合并分支的时候提示"master and main are entirely different commit histories" master为本地 ...