Ansible - 如何在 CentOS 中添加/修改 PATH 变量?

Ale*_*itz 5 centos ansible

我正在尝试添加/usr/pgsql-10/bin$PATH,因为我希望使用该机器的每个人都能够运行该psql命令。

尝试遵循这个例子:

- name: add {{extra_path}} to path
  lineinfile:
    dest: /etc/environment
    state: present
    backrefs: yes
    regexp: 'PATH=(["]*)((?!.*?{{extra_path}}).*?)(["]*)$'
    line: "PATH=\1\2:{{extra_path}}\3"
Run Code Online (Sandbox Code Playgroud)

首先,我不太明白我应该如何修改它。我应该用我的路径 ( ) 替换extra_path全部还是全部。{{extra_path}}/usr/pgsql-10/bin

我尝试了两种方法,但得到了不同的错误。更糟糕的是,我的/etc/environment甚至不包含PATH.

Vla*_*tka 6

仅声明附加路径

  vars:
    extra_path: /usr/pgsql-10/bin
Run Code Online (Sandbox Code Playgroud)

以下任务基于Response to update PATH with ansible - system Wide的想法

  • 如果文件位于控制器上,则测试本地文件
    - name: 'Add {{ extra_path }} if PATH does not exist'
      lineinfile:
        path: /etc/environment
        line: 'PATH="{{ extra_path }}"'
        insertafter: EOF
      when: lookup('file', '/etc/environment') is not search('^\s*PATH\s*=')

    - name: 'Add {{ extra_path }} to PATH'
      lineinfile:
        path: /etc/environment
        regexp: 'PATH=(["])((?!.*?{{ extra_path }}).*?)(["])$'
        line: 'PATH=\1\2:{{ extra_path }}\3'
        backrefs: yes
Run Code Online (Sandbox Code Playgroud)
  • 如果文件位于远程主机上,请先获取它们。为了使播放具有幂等性,请勿报告获取时的更改。根据您的需求选择目的地

    - name: 'Fetch /etc/environment to {{ playbook_dir }}/environments'
      fetch:
        src: /etc/environment
        dest: "{{ playbook_dir }}/environments"
      changed_when: false

    - name: 'Add {{ extra_path }} if PATH does not exist'
      lineinfile:
        path: /etc/environment
        line: 'PATH="{{ extra_path }}"'
        insertafter: EOF
      when: lookup('file', path) is not search('^\s*PATH\s*=')
      vars:
        path: "{{ path_items|path_join }}"
        path_items:
          - "{{ playbook_dir }}"
          - environments
          - "{{ inventory_hostname }}"
          - etc/environment

    - name: 'Add {{ extra_path }} to PATH'
      lineinfile:
        path: /etc/environment
        regexp: 'PATH=(["])((?!.*?{{ extra_path }}).*?)(["])$'
        line: 'PATH=\1\2:{{ extra_path }}\3'
        backrefs: yes
Run Code Online (Sandbox Code Playgroud)

请参阅Python 正则表达式