RHEL7でAnsibleを使用して$ PATHにプロジェクトを永久に追加する

RHEL7でAnsibleを使用して$ PATHにプロジェクトを永久に追加する

/home/another-user/binAnsibleがRHEL 7 VMの$ PATH変数に正常に追加するには、次の特定の構文のどれを変更する必要がありますか?

プレイブックの現在のバージョン:

私たちが使用したプレイブックは次のように変数を設定し、その/home/another-user/bin変数を使って行を追加します/etc/environment

vars:
  extra_path: /home/another-user/bin
vars_files:
  - myVars.yaml
#Other stuff

- name: Update /etc/environment for newly loaded apps
  lineinfile:
    dest: /etc/environment
    line: "export PATH={{ extra_path }}:$PATH"
    owner: root
  become: true
  become_user: root
  vars:
    ansible_become_password: "{{ root_pass_word }}"

悪い結果

問題は、上記の例では$ PATHの既存のエントリをすべて削除するため、catその他のような基本コマンドが認識されなくなることです。

[my-user@ip-10-0-0-171 ~]$ echo $PATH
/home/another-user/bin:$PATH:/usr/local/sbin:/usr/sbin:/home/my-user/.local/bin:/home/my-user/bin
[my-user@ip-10-0-0-171 ~]$ cat /etc/environment
-bash: cat: command not found
[my-user@ip-10-0-0-171 ~]$

正規表現を使ってこことスタックオーバーフローで異なる例を見つけましたが、command not found何らかの方法で修正すると同じ問題が発生します。/etc/environment

ベストアンサー1

この/etc/environmentファイルはシェルスクリプトとして評価されません。引用してみてくださいマニュアルページ(明確にするために再配置):

構成ファイルには、改行区切りの「KEY = VALUE」環境変数割り当てのリストが含まれています。

これらの割り当ての右側は、「${OTHER_KEY}」および「$OTHER_KEY」形式を使用して、以前に定義された環境変数を参照できます。

...

シェル構文の他の要素はサポートされていません。

したがって、挿入された行exportにはファイルに無効なコマンドが含まれています/etc/environment。以下から変更されました:

line: "export PATH={{ extra_path }}:$PATH"

到着

line: "PATH={{ extra_path }}:$PATH"

うまくいくでしょう。


ここで確認する必要があるもう1つは、追加したい新しいパスです/home/another-user/bin。ユーザーのホームディレクトリは通常700権限で保護されているため、コンテンツは所有者(つまりそのホームディレクトリに対応するユーザー)にのみ表示されます。/etc/environmentすべてのユーザーに適用されますが、新しいパス構成はすべてのユーザーに適用されますか?調査を検討してみてください。

おすすめ記事