首页 > 其他分享 >ansible笔记第二章(ansible-varable变量)

ansible笔记第二章(ansible-varable变量)

时间:2022-09-01 19:33:54浏览次数:64  
标签:ftp 第二章 name vars web varable ansible packages 变量

(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

标签:ftp,第二章,name,vars,web,varable,ansible,packages,变量
From: https://www.cnblogs.com/leiyunfengsheng/p/16647602.html

相关文章

  • absible笔记第一章 (ansibles基础与playbook常用模块)
    一、ansibles基础与playbook     1.优先级问题            ANSIBLE_CONFIG            ansible.cfg ......
  • Openshift Setup with Ansible
    Nodes:master:ocmaster.eastasia.cloudapp.azure.comcompute:occompute.eastasia.cloudapp.azure.cominfra:ocinfra.eastasia.cloudapp.azure.com#Nodesall......
  • ansible 002 连接被控端 inventory ansible.cfg ansible-adhoc ansible原理
    ssh用普通用户连接被控端配置主机清单(/etc/hosts域名解析为前提)[root@workstationansible]#cathostsserveraserverb[root@workstationansible]#pwd/etc/ans......
  • ansible学习
     一、常用模块1.ping模块用于确认与对象机器是否能够ping通,正常情况返回pong。可以设置data不是ICMPping,只是一个简单的模块对于windows目标,请改用win_ping模块对......
  • 《关于程序猿也得刷行测题的这一天》——第二章:行测题把握不住
    ASYOUCANSEE,菜鸡程序猿经历了上次的社会毒打后,感到非常挫折。在家除了睡,就是吃,除了吃,就是睡,除了睡,就是吃。。。。好的,让我们继续回到程序猿找工作的问题。后面他经......
  • 数字信号处理--第二章/离散时间信号和离散时间系统
    离散时间信号--数字序列离散时间信号的表示概述对于x(n):n为整数时有对应数值,n非整数时,x(n)没有定义,不可认定为0单位取样序列δ(n):n=0时值为1;单位冲激函数δ(t):n=0时值为∞......
  • ansible工具使用
    1.ansible工具介绍  自动化运维工具,基于python开发,功能主要有批量系统配置、批量程序部署、批量运行命令   官网:https://www.ansible.com/  官方文档:https://do......
  • 第二章、框架设计的核心要素
    1.提升用户的开发体验开发体验是衡量一个框架的指标之一关于快速定位问题和打印警告信息和其他重要信息 Vue.js3  源码中使用 init......
  • 第二章 函数
    函数函数头函数参数Unit函数匿名函数和隐式返回函数类型匿名函数参数和it关键字匿名函数的类型推断定义参数是函数的函数函数内联函数引用函数类型作为返回类......
  • rh358 002 fact变量获取 ansible配置网络 service_facts
    通过ansible获取网络信息1.如何获取fact事实变量方式1:ansibleservera-mservera方式2:剧本[root@workstationansible]#catake.yaml----name:getallfac......