【发布时间】:2016-08-05 15:13:34
【问题描述】:
我知道 Ansible 的环境:playbook 顶部的命令,但我认为这对我来说不起作用,因为我在执行 playbook 之前不知道变量值。我正在尝试检索包版本和 PHP 模块并将它们记录到文件中。我想使用正则表达式来捕获版本并将其存储到环境变量中。然后我想用shell命令将该变量等于该变量的值写入环境文件。我还想从环境中提取一个数组并循环遍历它。 Ansible 似乎没有保留 shell 环境,并且环境变量在命令之间被清除。这在 Bash 中很简单。这在 Ansible 中可行吗?我正在尝试:
---
- 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') }}"
【问题讨论】:
标签: bash shell environment-variables ansible ansible-playbook