私はアノプスの環境について知っていますが、プレイブックの一番上にあるコマンドですが、プレイブックを実行する前に変数の値がわからないことがわかりました。私はパッケージのバージョンとPHPモジュールを取得してファイルに記録しようとしています。 regexを使ってバージョンを取得し、それを環境変数に格納したいと思います。次に、その変数をその変数の値と同じようにシェルコマンドで環境ファイルに書きたいと思います。私はまた、環境から配列を引き出し、それをループしたいと思います。 Ansibleはシェル環境を永続させるようには見えず、環境変数はコマンド間で抹消されます。これはBashでは単純です。これは不可能で可能ですか?私は努力しています:不可能なダイナミック環境変数の設定
---
- hosts: all
become: yes
vars:
site_variables:
code_directory: /home/
dependency_versions:
WGET_VERSION: placeholder
PHP_MODULES: placeholder
tasks:
- name: Retrieve Environment
shell: export WGET_VERSION=$(wget --version | grep -o 'Wget [0-9]*.[0-9]*\+')
shell: export PHP_MODULES=$(php -m)
shell: echo "export {{ item }}={{ lookup('env', item) }}" >> {{ site_variables.code_directory }}/.env.log
with_items:
- WGET_VERSION
- name: Write PHP Modules Out
shell: export PHP_MODULES=$(php -m)
shell: export PHP_MODULES=$(echo {{ lookup('env', 'PHP_MODULES') }} | sed 's/\[PHP Modules\]//g')
shell: export PHP_MODULES=$(echo {{ lookup('env', 'PHP_MODULES') }} | sed 's/\[Zend Modules\]//g')
shell: export PHP_MODULES=({{ lookup('env', 'PHP_MODULES') }})
shell: echo "# - {{ item.0 }}" >> {{ site_variables.code_directory }}/.env.log
with_items:
- "{{ lookup('env', 'PHP_MODULES') }}"
わかりません。私はリモートホストにsshして、手動でWGET_VERSIONを設定しました...そう、WGET_VERSION = 1.1.1としましょう。 {{lookup( 'env'、item)}}は実際に私が手動でセットアップしたremote_hostから環境変数を取得していました(1.1.1)。これはシェルのAnsibleを使って新しい値を設定していないだけです。export WGET_VERSION = $(wget --version | grep -o 'Wget [0-9] *。[0-9] * \ +')私は、最終的に配列全体を通してそれを絶対に必要とするので、これ以上考えてみる必要があるでしょう。多分、Ansibleはこれを行う方法ではないでしょう。 – Nabsta
あなたのアドバイスをいただきありがとうございます!私はAnsibleには新しく、間違いなく役立ちます。 – Nabsta
もう一度ありがとう!私は、set_fact、並列配列のセット、および正規表現をエスケープして動作させました。この場合、ストレートbashのようなものがより適切できれいです。 – Nabsta