2017-01-03 3 views
2

にConda環境のアクティブ化。は、私は、既存のConda環境で実行することが必要とする(ここで<em>は、空気の流れを実行しているが、それは本当に</em>何でもかまいません)タスク</strong>の<strong>リストを実行しようとしていますAnsibleの脚本

私は、これらのタスクを実行したいと思います。もちろん

- name: activate conda environment 
# does not work, just for the sake of understanding 
command: source activate my_conda_env 

- name: initialize the database 
    command: airflow initdb 

- name: start the web server 
    command: 'airflow webserver -p {{ airflow_webserver_port }}' 

- name: start the scheduler 
    command: airflow scheduler 

、各タスクは独立しており、最初のタスクでconda environment活性化は、次のタスクでは無視されるよう、これは動作しません。

condaの代わりにpython virtualenvを使用すると同じ問題が発生すると思います。

Conda環境で各タスクを実行するにはどうすればよいですか?

答えて

1

各コマンドは異なるプロセスで実行されます。

sourceコマンドは、環境変数を現在のプロセス(およびその子)に読み込むために使用されるため、activate conda environmentタスクにのみ適用されます。あなたがやろうとすることができる何

は次のとおりです。

- name: initialize the database 
    shell: source /full/path/to/conda/activate my_conda_env && airflow initdb 
    args: 
    executable: /bin/bash 

- name: start the web server 
    shell: 'source /full/path/to/conda/activate my_conda_env && airflow webserver -p {{ airflow_webserver_port }}' 
    args: 
    executable: /bin/bash 

- name: start the scheduler 
    shell: source /full/path/to/conda/activate my_conda_env && airflow scheduler 
    args: 
    executable: /bin/bash 

which activateとターゲットマシン上activateへの完全なパスが何をチェック、前に(あなたはどのような環境が供給される前にそれを行う必要があります)。 Condaがユーザーのスペースにインストールされている場合は、Ansible接続に同じユーザーを使用する必要があります。

関連する問題

 関連する問題