Ansible varialbes

1.什么是变量?

以一个固定的字符串,表示一个不固定的值 version: 1.12

2.定义变量?

1.在playbook中定义变量?

  • vars 关键字
[root@manager project1]# cat f2.yml 
- hosts: webservers
  vars:
    - file_name: playbook_vars

  tasks:
    - name: Create New File
      file:
        path: /tmp/{{ file_name }}
        state: touch
  • vars_file 属于一种共享的方式


    image.png
[root@manager project1]# cat vars_file.yml 
web_packages: httpd
ftp_packages: vsftpd

[root@manager project1]# cat f2.yml 
- hosts: webservers
  vars:
    - file_name: playbook_vars

 #调用共享vars_file文件,只不过刚好文件名叫vars_file
  vars_files: ./vars_file.yml

  tasks:
    - name: Create New File
      file:
        path: /tmp/{{ file_name }}
        state: touch

    - name: Installed Packages {{ web_packages }}
      yum:
        name: "{{ web_packages }}"
        state: present

2.在inventory主机清单中定义变量?

  • 1.清单文件中直接定义 hosts文件定义
[webservers]
172.16.1.7
172.16.1.8 
[webservers:vars]
file_name=hostsfile_group_vars
  • 2.创建hosts_vars group_vars 目录
[root@manager project1]# mkdir hosts_vars   #单个主机
[root@manager project1]# mkdir group_vars   #主机组


1.单个主机定义和使用方式 (host_vars能分别对不同的主机定义变量)
[root@manager project1]# cat host_vars/172.16.1.7 
host_vars_name: 172.16.1.7

[root@manager project1]# cat host_vars/172.16.1.8 
host_vars_name: 172.16.1.8

[root@manager project1]# cat f4.yml 
- hosts: webservers

  tasks:
    - name: Create New File
      file:
        path: /opt/{{ host_vars_name }}
        state: touch

2.针对主机组定义的方式 
#给指定的webserver组设定变量.其他组主机无法使用该变量
[root@manager project1]# cat group_vars/webservers 
group_host_vars: webservers

[root@manager project1]# cat f5.yml 
- hosts: webservers
  tasks:
    - name: Create New File {{ group_host_vars }}
      file:
        path:  /opt/{{ group_host_vars }}
        state: touch


3.针对主机组定义的方式  (给所有的主机和主机组设定变量)
[root@manager project1]# cat group_vars/all 
group_host_vars: all

[root@manager project1]# cat f5.yml 
- hosts: webservers
  tasks:
    - name: Create New File {{ group_host_vars }}
      file:
        path:  /opt/{{ group_host_vars }}
        state: touch
  • 3.通过外置传参定义变量? -e
[root@manager project1]# ansible-playbook -i hosts f6.yml  -e "web_vars=123"

3.变量冲突,优先级?

定义相同的变量不同的值,来测试变量的优先级。操作步骤如下   file_name:
  1)在plabook中定义vars变量
  2)在playbook中定义vars_files变量
  3)在inventory主机定义变量
  4)在inventory主机组定义变量
  5)在host_vars中定义变量
  6)在group_vars中定义变量  组      all组
  7)通过执行命令传递变量
 
 
优先级测试:
外置传入参数优先级最高 (e)
---> playbook ( vars_files(共享)
---> vars(私有) )  
---> host_vars  
---> group_vars/group_name 
---> group_vars/all

4.变量注册

[root@manager project1]# cat f8.yml 
- hosts: webservers
  tasks:
        # System_Status=$(netstat -lntp)
    - name: Get Network Status
      shell: netstat -lntp | grep "nginx"
      register: System_Status

        # echo "$System_Status"
    - name: Debug output Variables
      debug:
        msg: "{{ System_Status.stdout_lines }}"

5.facts变量

1.根据主机的cpu信息,生成不同的配置.
    A: 1核心    work_process 1;
    B: 2核心    work_process 2;
    
2.根据主机名称设定不同配置文件
    zabbix_agent
        Server:   ===> 指向172.16.1.61
        Hostname:      web01   web02

[root@manager project1]# cat ./file/zabbix_agent.conf.j2 
Server={{ zabbix_server_ip }}
ServerActive={{ zabbix_server_ip }}
Hostname={{ ansible_hostname }}

[root@manager project1]# cat f11.yml 
- hosts: webservers
  vars:
    - zabbix_server_ip: 172.16.1.61
  tasks:
    - name: Configure zabbix-agent.conf
      template:
        src: ./file/zabbix_agent.conf.j2
        dest: /tmp/zabbix-agent.conf
        
        
3.根据主机的内存生成不同的配置文件,memcached
[root@manager project1]# cat f12.yml 
- hosts: webservers
  tasks:
    - name: Installed Memcached Server
      yum:
        name: memcached
        state: present

    - name: Configure Memcached Server
      template:
        src: ./file/memcached.j2
        dest: /etc/sysconfig/memcached
      notify: Restart Memcached Server

    - name: System Memcached Server
      systemd:
        name: memcached
        state: started
        enabled: yes

  handlers:
    - name: Restart Memcached Server
      systemd:
        name: memcached
        state: restarted

[root@manager project1]# cat file/memcached.j2 
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="{{ ansible_memtotal_mb //2 }}"
OPTIONS=""


1.根据cpu
2.根据内存
3.根据主机名
4.Redis配置文件     bind本地地址
5.操作系统不统一

        变量可以进行运算  + - * // 
        
        
        
        
1.定义变量
    playbook
        vars            私有
        vars_files      共享
    inventory
        host_vars   
        group_vars
            group_vars/group_name
            group_vars/all
    外置传参
        -e
2.测试优先级
    在不改变playbook变量的情况下,使用新的值测试.

3.变量注册register
    1.将任务执行的结果存储至特定的变量中
    2.可以使用debug模块将变量进行打印输出
    
    python: 字典
    json 格式化数据
    {
        k1: v1
        k2: v2
    }
4.facts 
[root@manager project1]# cat f13.yml 
- hosts: webservers
  tasks:
    - name: RANDOM
      shell:  echo "$RANDOM"
      register: System_SJ

    - name: Debug 
      debug:
        msg: "web_{{ System_SJ.stdout }}"

1.提取facts变量中的IP地址   mac地址  UUID 等等  只要唯一
    ansible_default_ipv4.address
[root@manager project1]# cat f14.yml 
- hosts: webservers
  tasks:

    - name: Debug 
      debug:
        msg: "web_{{ ansible_default_ipv4.address }}"
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,324评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,356评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,328评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,147评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,160评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,115评论 1 296
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,025评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,867评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,307评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,528评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,688评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,409评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,001评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,657评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,811评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,685评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,573评论 2 353

推荐阅读更多精彩内容