1. ホーム
  2. linux

[解決済み] AnsibleでLinuxの環境変数を設定する方法

2022-08-04 06:29:03

質問

こんにちは、Ansibleで環境変数を設定する方法を探しています。

このような単純なシェルコマンドのようなものです。

EXPORT LC_ALL=C

シェルコマンドで試しましたが、エラーになりました。 環境モジュールを使ってみましたが、何も起こりませんでした。

何が足りないのでしょうか?

どのように解決するのですか?

複数の方法がありますが、ご質問の内容からは、何が必要なのかがよくわかりません。

1. タスクごとに定義される環境変数が必要な場合、これを実行します。

- hosts: dev
  tasks:
    - name: Echo my_env_var
      shell: "echo $MY_ENV_VARIABLE"
      environment:
        MY_ENV_VARIABLE: whatever_value

    - name: Echo my_env_var again
      shell: "echo $MY_ENV_VARIABLE"

注意点 MY_ENV_VARIABLE は最初のタスクにのみ有効であることに注意してください。 environment はそれをシステムに恒久的に設定するものではありません。

TASK: [Echo my_env_var] ******************************************************* 
changed: [192.168.111.222] => {"changed": true, "cmd": "echo $MY_ENV_VARIABLE", ... "stdout": "whatever_value"}

TASK: [Echo my_env_var again] ************************************************* 
changed: [192.168.111.222] => {"changed": true, "cmd": "echo $MY_ENV_VARIABLE", ... "stdout": ""}

うまくいけば、すぐに environment を使うことができるようになります。 プレイレベル にも適用できるようになります。 現在、AnsibleのGitHubでこの機能のプルリクエストが公開されています。 https://github.com/ansible/ansible/pull/8651

UPDATE:2015年1月2日現在、統合されました。

2. 恒久的な環境変数が欲しい場合 + システム全体 / 特定のユーザのみ

Linuxディストリビューション/シェルでどのようにそれを行うかを調べる必要があり、そのための複数の場所があります。たとえば、Ubuntuでは、たとえば、ファイルの中でそれを定義します。

  • ~/.profile
  • /etc/environment
  • /etc/profile.d ディレクトリ
  • ...

Ubuntuのドキュメントがここにあります。 https://help.ubuntu.com/community/EnvironmentVariables

結局のところ、例えばUbuntuで環境変数を設定するには Ubuntuでは lineinfile モジュールを使って、特定のファイルに必要な行を追加します。どこに追加すれば恒久的なものになるかは、OSのドキュメントを参照してください。