zoukankan      html  css  js  c++  java
  • playbook变量(五)

    一、playbook变量
    变量名:字母数字和下划线

    二、变量来源

    1.ansible 主机 -m setup|less所有主机都可以调用

    #过滤-a 'filter=*address*'

    1.1例子创建一个hostname 的log文件

    ansible date -m setup -a 'filter=ansible_fqdn*'
    
    [root@linux-node1 ansible]# cat var.yaml 
    ---
    - hosts: date
      remote_user: root
    
      tasks:
        - name: create log file
          file: name=/data/{{ ansible_fqdn }}.log state=touch mode=600 owner=zjy
    

      2. 在/etc/ansible/hosts

     2.1 在host配置文件定义http_port变量

    [root@linux-node1 ansible]# cat hostname.yaml 
    ---
    - hosts: date
      remote_user: root
    
      tasks:
        - name: set hostname
          hostname: name=www.{{http_port}}.123
    

    2.2为组设置固定格式

    [root@linux-node1 ansible]# cat hostname1.yaml 
    ---
    - hosts: date
      remote_user: root
    
      tasks:
        - name: set hostname
          hostname: name={{nodename}}.{{http_port}}.{{dominname}}
    

    3、通过命令行指定变量、优先级最高

    [root@linux-node1 ansible]# cat app.yaml 
    ---
    - hosts: date
      remote_user: root
    
      tasks:
        - name: install package
          yum: name={{ pkname }}
        - name: start service
          service: name={{ pkname }} state=started enabled=yes
    

    ansible-playbook -e 'pkname=vsftpd'  app.yaml

     

     3.1定义多个变量

    [root@linux-node1 ansible]# cat app1.yaml 
    ---
    - hosts: date
      remote_user: root
    
      tasks:
        - name: install package
          yum: name={{ pkname1 }}
        - name: install package
          yum: name={{ pkname2 }}
    

    4、 在playbook中定义
    vars:
    - var1: value1
    - var2: value2

    [root@linux-node1 ansible]# cat app2.yaml
    ---
    - hosts: date
      remote_user: root
      vars:
        - pkname1: httpd
        - pkname2: vsftpd
    
      tasks:
        - name: install package
          yum: name={{ pkname1 }}
        - name: install package
          yum: name={{ pkname2 }}
    

     5、定义变量文件

    [root@linux-node1 ansible]# cat vars.yaml 
    var1: httpd
    var2: nginx
    
    #playbook
    [root@linux-node1 ansible]# cat testvar.yaml 
    ---
    - hosts: date
      remote_user: root
      vars_files:
        - vars.yaml
    
      tasks:
        - name: install package
          yum: name={{ var1 }}
        - name: create file
          file: name=/data/{{ var2 }}.log state=touch
    

    ansible-playbook  testvar.yaml

  • 相关阅读:
    在 docker 容器中捕获信号
    python入门二维码生成
    SSH 端口转发
    Python之模块与包
    滑块验证demo示例
    上下界网络流初探
    大整数模板
    计算几何模板
    关于差分约束系统的脑洞
    并查集,以及可拆分并查集
  • 原文地址:https://www.cnblogs.com/zhaojingyu/p/12115861.html
Copyright © 2011-2022 走看看