zoukankan      html  css  js  c++  java
  • 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}}.

  • 相关阅读:
    WCF Server Console
    Restart IIS With Powershell
    RestartService (recursively)
    Copy Files
    Stopping and Starting Dependent Services
    多线程同步控制 ManualResetEvent AutoResetEvent MSDN
    DTD 简介
    Using Powershell to Copy Files to Remote Computers
    Starting and Stopping Services (IIS 6.0)
    java中的NAN和INFINITY
  • 原文地址:https://www.cnblogs.com/winter1519/p/9338702.html
Copyright © 2011-2022 走看看