且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

使用 Ansible 设置不同的 ORACLE_HOME 和 PATH 环境变量

更新时间:2021-08-31 02:11:11

您可以为每个主机定义特定于主机的变量.您可以编写您的库存文件,如:

you can define host specific variables for each of the hosts. You can write your inventory file like:

[is_hosts]
greenhat ORACLE_HOME=/tmp
localhost ORACLE_HOME=/sbin

类似于 PATH 变量

similarly for the PATH variable

那么你的任务:

演示结果的示例剧本:

- hosts: is_hosts
  gather_facts: false
  vars:

  tasks:
    - name: task 1
      shell: "env | grep -e PATH -e ORACLE_HOME"
      environment:
        # PATH: "{{ hostvars[inventory_hostname]['PATH']}}"
        ORACLE_HOME: "{{ hostvars[inventory_hostname]['ORACLE_HOME'] }}"
      register: shell_output

    - name: print results
      debug:
        var: shell_output.stdout_lines

示例输出,您可以看到 ORACLE_HOME 变量确实发生了变化,并且按照主机的定义:

sample output, you can see ORACLE_HOME variable was indeed changed, and as defined per host:

TASK [print results] ************************************************************************************************************************************************************************************************
ok: [greenhat] => {
    "shell_output.stdout_lines": [
        "ORACLE_HOME=/tmp", 
        "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"
    ]
}
ok: [localhost] => {
    "shell_output.stdout_lines": [
        "ORACLE_HOME=/sbin", 
        "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"
    ]
}