要用作环境变量的Ansible命令输出

要用作环境变量的Ansible命令输出,ansible,Ansible,我想使用“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

我想使用“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


我想在远程主机上以上述格式运行date命令,然后在目标主机上将变量保存为environment。这是因为我必须使用这个变量在3-4个剧本的执行结束时获取一些数据。。数据将取决于剧本的开始时间和结束时间。基本上有两个环境变量
start\u time
end\u time
,我可以在最后使用它们


简言之,是否可以将主机上执行的一个命令的输出设置为环境变量ansible中的同一主机上的一个

 - 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 }}"
注:我还必须纠正不正确的缩进,并在第一个
debug
任务中将
vars
替换为
var
。一般建议使用ansible playbook——语法检查来验证您的playbook


最后一件事:最好将ansible变量括在“
{{}

中,您可以提供更多信息。此外,ansible GARGET\u fact提供日期时间信息
ansible\u date\u time.date
你可以用它来简化事情。唯一需要注意的是收集事实必须设置为true。谢谢,我现在收到错误:失败!=>{“MSG”:“模板字符串中的模板错误:4”,“{05AU201201:20:01 }”:}代码>日期+%D%B%Y:%H:%M不是一个很好的例子来登记变量,它包含在开始时的数字和<代码>:中间,改为日期+%B%y%H%M
 - 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 }}"