美文网首页
Ansible_variables

Ansible_variables

作者: 魔曦帝天 | 来源:发表于2019-10-14 20:42 被阅读0次

    ansible中变量的优先级

    extra vars (-e 选项指定的变量)最高
    inventory 主机清单中定义的变量(ansible_ssh_user等)
    play剧本中vars、vars_files定义的变量
    系统的facts变量
    角色定义的默认变量 最低 {{ }}

    facts :可直接调用

    facters我们可以使用setup模块来获取,然后直接放入我们的剧本中调用即可

    ansible_all_ipv4_addresses:仅显示ipv4的信息 ---> [u'192.168.95.143']
    ansible_eth0['ipv4']['address']:仅显示ipv4的信息 ---> eth0 的ip地址
    ansible_devices:仅显示磁盘设备信息
    ansible_distribution:显示是什么系统,例:centos,suse等
    ansible_distribution_version:仅显示系统版本
    ansible_machine:显示系统类型,例:32位,还是64位
    ansible_eth0:仅显示eth0的信息
    ansible_hostname:仅显示主机名
    ansible_kernel:仅显示内核版本
    ansible_lvm:显示lvm相关信息
    ansible_memtotal_mb:显示系统总内存
    ansible_memfree_mb:显示可用系统内存
    ansible_memory_mb:详细显示内存情况
    ansible_swaptotal_mb:显示总的swap内存
    ansible_swapfree_mb:显示swap内存的可用内存
    ansible_mounts:显示系统磁盘挂载情况
    ansible_processor:显示cpu个数(具体显示每个cpu的型号)
    ansible_processor_vcpus:显示cpu个数(只显示总的个数)
    ansible_python_version:显示python版本

    用户自定义变量

    ansible-playbook命令的命令行中的-e VARS, --extra-vars=VARS,这样就可以直接把自定义的变量传入。(优先级最高)

    直接在playbook中定义我们的变量

    vars:
      - var1: value1
      - var2: value2

    hosts清单文件

    [web:vars] #给名为webservers的组定义一个变量,:vars是固定格式
    ansible_ssh_port=22
    ansible_ssh_user='root'
    ansible_ssh_pass='1234.com'

    j2语法

    when语句:在task中使用,jinja2的语法格式。
    tasks:
    - name: install conf file to centos7
      template: src=files/nginx.conf.c7.j2
      when: ansible_distribution_major_version == "7"
    - name: install conf file to centos6
      template: src=files/nginx.conf.c6.j2
      when: ansible_distribution_major_version == "6"
    
    循环:迭代,需要重复执行的任务;
    对迭代项的引用,固定变量名为"item",而后,要在task中使用with_items给定要迭代的元素列表;
    tasks:
    - name: unstall web packages
      yum: name={{ item }} state=absent
      with_items:
      - httpd
      - php
      - php-mysql
    ansible playbook 支持字典功能
    - name: add some users
      user: name={{ item.name }} group={{ item.group }} state=present
      with_items:
        - { name: 'user11', group: 'group11' }
        - { name: 'user12', group: 'group12' }
        - { name: 'user13', group: 'group13' }
    

    批量修改hosts文件

    ---
    - hosts: web  
      vars:        
        IP: "{{ ansible_eth0['ipv4']['address'] }}"  
      tasks:        
      - name: 将原有的hosts文件备份          
        shell: cp /etc/hosts /etc/hosts_bak        
      - name: 将ansible端的hosts复制到各自机器上          
        copy: src=/root/hosts dest=/etc/ force=yes owner=root group=root mode=0644        
      - name: 在新的hosts文件后面追加各自机器内网ip和hostname          
        lineinfile: dest=/etc/hosts line="{{ IP }}  {{ ansible_hostname }}"
    
    ---
    - hosts: web
      vars:
        IP: "{{ ansible_eth0['ipv4']['address'] }}"
        DNS: "www.tianyun.com"
      tasks:
        - name: backup hosts
          shell: cp /etc/hosts /etc/hosts_bak
        - name: cp ansible hosts to node hosts
          copy: src=/etc/hosts dest=/etc/hosts2 force=yes
        - name: add ip and hostname to node hosts
          lineinfile: dest=/etc/hosts2 line="{{ IP }}  {{ ansible_hostname }}  {{ DNS }}"
    

    相关文章

      网友评论

          本文标题:Ansible_variables

          本文链接:https://www.haomeiwen.com/subject/hrkdmctx.html