ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-09-01 19:31:31  阅读:205  来源: 互联网

标签: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,变量
来源: https://www.cnblogs.com/leiyunfengsheng/p/16647602.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有