8.Ansible Variables介绍

  1. 什么是Ansible Variables
    就像任何其他脚本或编程语言一样,变量用于存储变化的值。例如, 假设我们要尝试执行相同的操作, 将修补程序应用于数百台服务器。我们只需要一个playbook就可以满足所有100台服务器的需求。但是, 不同的主机名、 用户名或密码的信息都是不同的,就需要用变量存储.

  2. Variables`怎么定义?

    我们之前在Inventory部分已经使用过变量, 如果您还记得Inventory文件,ansible_host, ansible_connectionansible_ssh_pass都是变量的示例。我们可以根据需要定义任意多个变量。
    在这里插入图片描述
    我们还可以在Play中定义变量。这是我们之前创建的一个Playbook, 用于将DNS条目添加到conf文件中。要添加一个变量, 我们只需添加一个vars指令, 后面跟一个键值对格式的变量。在本例中, dns_server后跟DNS服务器的IP
    我们也可以在一个单独的变量专用文件中定义变量。

  3. 如何使用Variables?
    现在我们已经定义了变量, 但是我们如何使用它们呢?我们可以将硬编码值替换为变量中的值, 以使用变量。只需输入变量名, 然后用花括号括起来, 如下所示。
    在这里插入图片描述
    当我们运行剧本时, Ansible会将其替换为变量中的值。如果其他人想重新使用此Playbook, 则必须修改Playbook以更改这些值。如果将这些可能变化的值移动到Inventory文件中,并在Playbook中使用双花括号引用它, 我们将来就可以只修改Inventory文件, 而不必修改Playbook本身。

    更好的方法是将变量移动到一个以hosts命名的文件中, 在本例中是web。现在, 这是一个hosts变量文件, 在该hosts上运行Playbook时,该文件中定义得所有值都可供使用.这样组织得更好。

    请记住, 我们在行动手册中使用变量时使用的格式,叫Jinjia模板
    最后, 在使用Jinja的变量进行模板化时, 如果你从变量开始赋值,注意将其包含在单引号中,然而, 如果变量位于这样的句子之间, 那么就不需要这样做。

    例子: inventory文件,里面定义了变量

    localhost ansible_connection=local nameserver_ip=8.8.8.8 snmp_port=160-161
    node01 ansible_host=node01 ansible_ssh_pass=caleston123
    node02 ansible_host=node02 ansible_ssh_pass=caleston123
    [web_nodes]
    node01
    node02
    

    Playbook里面引用:

    ---
    - name: 'Add nameserver in resolv.conf file on localhost'
      hosts: localhost
      become: yes
      tasks:
        - name: 'Add nameserver in resolv.conf file'
          lineinfile:
            path: /etc/resolv.conf
            line: 'nameserver {{  nameserver_ip  }}'
        - name: 'Disable SNMP Port'
          firewalld:
            port: '{{snmp_port}}'
            permanent: true
            state: disabled
    

    直接在Playbook里面定义变量,并且使用:

    --
    - hosts: localhost
      vars:
        car_model: 'BMW M3'
        country_name: USA
        title: 'Systems Engineer'
      tasks:
        - command: 'echo "My car is {{ car_model }}"'
        - command: 'echo "I live in the {{ country_name }}"'
        - command: 'echo "I work as a {{ title }}"'
    

    更多关于Ansible的文章,请参考我的Ansible专栏:https://blog.csdn.net/u011069294/category_12331290.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值