我希望使用"date“命令输出作为环境变量。
假设
- tasks:
- name: Getting start date
shell: date +%d%b%Y:%H:%M
register: start_date
- debug:
vars: start_date.stdout
environment:
start_date_env: start_date.stdout
- name: Echo my_env_var
shell: echo $start_date_env
register: some
- debug:
var: some.stdout
O/P
changed: [host1]
cmd: date +%d%b%Y:%H:%M
stdout: 05Aug2018:09:30
TASK [Echo my_env_var] ***********************************************************************************************************************
cmd: echo $start_date_env
ok: [host1] => {
"some.stdout": ""
我希望在远程主机上以上述格式运行date命令,然后可能将变量保存为目标主机上的环境。这是因为我必须使用这个变量在3-4剧本的执行结束时获取一些数据。数据依赖于剧本的start_time
和剧本的end_time
。基本上是两个环境变量start_time
和end_time
,我最终可以使用它们。
简而言之,是否可以将在主机上执行的一个命令的输出设置为环境变量-- ansible中的同一个主机?
发布于 2018-08-05 08:49:58
您拥有几乎所有必要的代码,但是您没有在正确的位置使用environment
- hosts: localhost
tasks:
- name: Getting start date
shell: date +%b%Y%H%M
register: start_date
- debug:
var: "{{ start_date.stdout }}"
- name: Echo my_env_var
shell: echo $start_date_env
environment:
start_date_env: start_date.stdout
register: some
- debug:
var: "{{ some.stdout }}"
注意,我还必须更正不正确的缩进,并在第一个vars
任务中用var
替换debug
。作为一个一般性的建议,使用ansible-playbook --syntax-check
来验证您的剧本。
最后一件事:最好在"{{ }}
“中把ansible变量括起来
https://stackoverflow.com/questions/51694003
复制相似问题