美文网首页
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

    ansible中变量的优先级 extra vars (-e 选项指定的变量)最高inventory 主机清单中定义...

网友评论

      本文标题:Ansible_variables

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