我想将“ 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
简而言之,是否可以将在主机上执行的一个命令的输出设置为环境变量,而将同一主机设置为环境变量
答案 0 :(得分:1)
您几乎拥有所有必需的代码,但是您没有在正确的位置使用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变量括在“ {{ }}
”中