要用作环境变量的Ansible命令输出
我想使用“date”命令输出作为环境变量 假设要用作环境变量的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
- 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不是一个很好的例子来登记变量,它包含在开始时的数字和<代码>:中间,改为 - 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 }}"