Bash Ansible在任务内创建可重用的动态环境变量
在Ansible中执行任务期间,是否可以设置可重用的动态环境变量? 像这样:Bash Ansible在任务内创建可重用的动态环境变量,bash,ansible,Bash,Ansible,在Ansible中执行任务期间,是否可以设置可重用的动态环境变量? 像这样: Ansible正在为每个单独的命令执行子shell。不能从子shell在父进程中设置变量 不要使用raw。如果您绝对必须使用raw,请尝试重新思考。 如果您仍然必须这样做,它仍然会创建一个子shell,并且不会执行您想要的操作 您需要将该值移动到ansible父进程 - command: curl --silent http://127.0.0.1:1234/secret register: tmpvar # p
Ansible正在为每个单独的命令执行子shell。不能从子shell在父进程中设置变量 不要使用
raw
。如果您绝对必须使用raw
,请尝试重新思考。
如果您仍然必须这样做,它仍然会创建一个子shell,并且不会执行您想要的操作
您需要将该值移动到ansible父进程
- command: curl --silent http://127.0.0.1:1234/secret
register: tmpvar
# pull just the bit you want - tmpvar has lots of extraneous stuff
- set_fact:
SECRET: "{{ tmpvar.stdout }}"
- shell: |
SECRET="{{ SECRET }}"
echo $SECRET
那么您希望什么时候解析变量呢?cron模块在这里是一个糟糕的例子。我更新了问题,使之更简单。这里不需要环境变量。但可能吗?这取决于。你对是/否答案感兴趣吗?这不是它的目的。也没有真正需要shell赋值,但是我认为它可能会影响到您要做的事情~耸耸肩~
- command: curl --silent http://127.0.0.1:1234/secret
register: tmpvar
# pull just the bit you want - tmpvar has lots of extraneous stuff
- set_fact:
SECRET: "{{ tmpvar.stdout }}"
- shell: |
SECRET="{{ SECRET }}"
echo $SECRET