• ansible变量


    ansible中定义变量可以使用vars关键字,变量由字母、数字、下划线组成,开头必须是字母。

    先看一个简单的事例

    [root@tiandong tiandong]# vim var.yml
    ---
    - hosts: all
      vars:
       testvar1: testfile
      remote_user: root
      tasks:
      - name: task1
        file:
          path: /testdir/{{testvar1}}
          state: touch

    在被控制端查看生成的文件

    [root@winter testdir]# pwd
    /testdir
    [root@winter testdir]# ll
    total 0
    -rw-r--r-- 1 root root 0 Jul  4 02:38 testfile

    当我们要使用变量时使用{{testvar1}}就可以引用了,当然也可以定义多个变量

    vars:
       testvar1: testfile
       testvar2: testfule2
    当定义多个变量的时候有两种方法可以引用

    方法一:

    {{vars.testvar1}}
    方法二:

    {{vars['testvar1']}}

    注:当使用冒号为参数赋值时,若变量前面没有路径的话就必须给变量加引号(path:"{{vars.testvar1}}"),前面有路径的话就不需要加引号(path:/testdir/{{vars.testvar1}})

    当使用“=”为参数赋值时,就可以忽略该问题。

    提示用户输入信息并写入变量:

    有时候需要用户输入进行交互,可以使用如下方法:

    [root@tiandong tiandong]# vim input.yml
    ---
    - hosts: all
      remote_user: root
      vars_prompt:
       - name: "your_name"
         prompt: "what is your name"
       - name: "your_age"
         prompt: "how old are you"
      tasks:
      - name: output vars
        debug:
         msg: your name is {{your_name}},you are {{your_age}} years old.

    [root@tiandong tiandong]# ansible-playbook input.yml
    what is your name:
    how old are you:

    PLAY [all] *****************************************************************************************************************************************

    TASK [Gathering Facts] *****************************************************************************************************************************
    ok: [192.168.209.4]

    TASK [output vars] *********************************************************************************************************************************
    ok: [192.168.209.4] => {
        "msg": "your name is tiandong,you are 25 years old."
    }

    PLAY RECAP *****************************************************************************************************************************************
    192.168.209.4              : ok=2    changed=0    unreachable=0    failed=0

    此时需要用户输入的,使用"var_prompt"关键字定义了两个变量“your_name”,“your_age”,当运行该剧本时,会提示“what is your name”的信息,然后输入的值存到“your_name”变量中,之后会出现“how old are you”的提示,用户的输入会存到“your_age”变量中。然后执行“output vars”任务。默认是不会显示用户输入的信息,这种方法可用于输入密码之类的敏感信息。要是用户输入的信息显示出来可以加private参数(private:no)

    还可以为提示信息设置默认值。示例如下

    [root@tiandong tiandong]# vim default.yml

    ---
    - hosts: all
      remote_user: root
      vars_prompt:
       - name: "solution"
         prompt: "what is your solution?
         A: solutionA
         B: solutionB
         C: solutionC "
         private: no
         default: A
      tasks:
      - name: output vars
        debug:
         msg: The solution is {{solution}}.

  • 相关阅读:
    python基础学习1-函数相关
    python基础学习1-SET 集合
    Linux命令学习笔记1
    python基础学习1-字典的使用
    python基础学习1-列表使用
    Jzoj4743 积木
    Jzoj4786 小a的强迫症
    Jzoj4746 树塔狂想曲
    Jzoj5246 Trip
    Jzoj5245 Competing Souls
  • 原文地址:https://www.cnblogs.com/winter1519/p/9338702.html
Copyright © 2020-2023  润新知