/home/another-user/bin
Ansibleが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
すべてのユーザーに適用されますが、新しいパス構成はすべてのユーザーに適用されますか?調査を検討してみてください。