当前位置: 首页 > news >正文

ansible的变量详解

变量分类

定义变量分为如下三种方式:

  1. 通过命令行进行变量定义
  2. 在playbook文件中进行定义变量
  3. 通过inventory在主机组或单个主机中设置变量

变量生效的优先级

命令行定义的变量---->play文件定义的变量---->inventory文件定义的变量。

定义变量

注意: 如果变量是开头的时候 加上双引号 ""

key: value 形式

cat 05.yml 
- hosts: lbvars:- soft01: nc- soft02: nmaptasks:- name: Install Software nc nmapyum:name:- "{{ soft01 }}"- "{{ soft02 }}"state: present

vars_files指定文件

cat vars.yml
soft01: nc
soft02: nmapcat 06.yml 
- hosts: lbvars_files: ./vars.ymltasks:- name: Install Software nc nmapyum:name:- "{{ soft01 }}"- "{{ soft02 }}"state: present

在命令行指定变量

ansible-playbook 08.yml -e "file_name=zqf_extra-vars"

变量的层级定义

cat vars_file.yml 
lamp:web:web_package: httpddb_package: mariadb-serverphp_package: phpcat test.yml 
---
- hosts: allvars_files:- vars_file.ymltasks:- name: Installed httpdyum: name={{ lamp['web']['web_package'] }}- name: Install Mariadbyum: name={{ lamp.web.db_package }}

变量注册

register关键字可以将某个task任务结果存储至变量中,最后使用debug输出变量内容,可以用于后续排障

register 类似于命令行的 $?, 取出本模块的执行情况

cat 10.yml 
- hosts: lbtasks:- name: print ip addrshell: hostname -Iregister: ip_addr- name: echodebug:msg: "you ip address is {{ ip_addr.stdout }}"# 比如变量叫做ip_addr
# ip_addr.stdout_lines: 取出ip
# ip_addr.rc: 返回值 return code $?
# ip_addr.stdout: 标准输出, 屏幕上面的输出
# ip_addr.stderr: 标准错误输出,错误信息.# 另一个案例:
- hosts: system_kylinbecome: yesremote_user: roottasks:- name: 检查 Docker 版本shell: docker --versionregister: docker_version  # 变量名应使用下划线而非连字符- name: 输出 Docker 版本信息debug:var: docker_version.stdout  # 直接输出命令的标准输出

facts变量

Ansible facts是在被管理主机上通过ansible自动采集发现的变量。facts包含每台特定的主机信息。比如:被控端主机的主机名、IP地址、系统版本、CPU数量、内存状态、磁盘状态等等。

显示所有 ansible facts:

ansible mysql  -m setup

facts基本用法,比如获取被控端的主机名与IP地址

cat 12.yml 
- hosts: lbtasks:- name: echodebug:msg:- "所有的ip地址 {{ ansible_all_ipv4_addresses }}"- "默认的ip地址 {{ ansible_default_ipv4.address }}"- "you interface is {{ansible_default_ipv4.interface }}"- "time is {{ ansible_date_time.date }}"- "mem total is {{ ansible_memtotal_mb }}"- "you system is {{ ansible_distribution }} version is {{ ansible_distribution_version }}"ansible-playbook -C 12.yml PLAY [lb] ********************************************************************************************************************************************************************************TASK [Gathering Facts] *******************************************************************************************************************************************************************
ok: [10.0.0.43]
ok: [10.0.0.42]TASK [echo] ******************************************************************************************************************************************************************************
ok: [10.0.0.42] => {"msg": ["所有的ip地址 [u'10.0.0.197', u'10.0.0.42']", "默认的ip地址 10.0.0.42", "you interface is ens33", "time is 2024-01-29", "mem total is 972", "you system is CentOS version is 7.9"]
}
ok: [10.0.0.43] => {"msg": ["所有的ip地址 [u'10.0.0.197', u'10.0.0.43']", "默认的ip地址 10.0.0.43", "you interface is ens33", "time is 2024-01-29", "mem total is 972", "you system is CentOS version is 7.9"]
}PLAY RECAP *******************************************************************************************************************************************************************************
10.0.0.42                  : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
10.0.0.43                  : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

关闭facts

facts开启后会影响Ansible主机的性能,如果没有采集被控端主机需求可选择关闭

cat 13.yml
- hosts: webgather_facts: no # 关闭信息采集tasks:- name: install nginxyum: name=nginx state=present

查找facts变量

# 通过filter进行过滤 显示我们索要的facts
ansible   lb   -m setup -a 'filter="*ens33*"'

几个常用的facts变量

ansible_default_ipv4.address    # 默认的网卡ip eth0
ansible_distribution            # 系统发行版本名字 CentOS  Ubuntu Debian ...
ansible_memtotal_mb             # 内存大小
ansible_processor_vcpus         # 表示主机的虚拟CPU(vCPU)数量
ansible_processor_cores         # 表示主机的实际物理核心数。
ansible_date_time.date          # 表示主机当前的日期
ansible_hostname                # 主机名
ansible_host                    # ip

案例

使用facts根据不同的内存生成不同Memcached配置文件

# memcached配置文件如下
cat memcached.j2
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="{{ ansible_memtotal_mb //2 }}" #根据内存状态生成不同的配置(支持+-*/运算)
OPTIONS=""#playbook如下
cat 11.yml
- hosts: webserverstasks:- name: Installed Memcachedyum: name=memcached state=present- name: Configure Memcachedtemplate: src=./memcached.j2  dest=/etc/sysconfig/memcached- name: Start Memcachedservice: name=memcached state=started enabled=yes
http://www.sczhlp.com/news/31415/

相关文章:

  • 公司企业宣传片视频搜索引擎优化百度
  • 网站内部优化工具代做网页设计平台
  • 青海省公路建设管理局网站点击器免费版
  • 上海网站建设培训网络整合营销策划书
  • 做游戏网站年入百万类似58的推广平台有哪些平台
  • 电商网站html模板下载论坛优化seo
  • 绍兴企业自助建站线上营销推广方式有哪些
  • 大丰做网站找哪家好营业推广案例
  • 织梦网站做自适应网站关键词排名手机优化软件
  • 有什么做衣服的网站黄山seo排名优化技术
  • Linux防止rm误操作防护方案
  • 北京学生做兼职的网站seo优化方法网站快速排名推广渠道
  • 网络品牌网站建设2021最火营销方案
  • 怎么在自己电脑上建网站网站客服
  • 福田做网站报价石家庄做网站推广排名的公司
  • 宁波做网站优化哪家好最简短的培训心得
  • 网站seo和sem是什么意思百度官网认证入口
  • 湖北网站建设免费百度一下首页百度
  • 外贸黄页seo简单速排名软件
  • 莱芜四中网站产品设计
  • 东莞市做网站的最好的是哪家的seo在哪可以学
  • 虚拟主机网站淘客网站建设竞价排名的定义
  • 网站维护管理千万别在百度上搜别人的名字
  • 北京科技网站建设公司谷歌浏览器下载手机版官网中文
  • 定制开发app方案seo查询系统源码
  • jmeter测试kingbase高可用集群业务恢复时间
  • 优酷专门给马天宇做的网站优化系统的软件
  • 个体户 建设网站软文广告平台
  • 建设银行江苏省分行网站网站综合查询工具
  • 专门做2手手机的网站老铁外链工具