如何在Ansible中将新目录路径注册为变量

如何在Ansible中将新目录路径注册为变量,ansible,ansible-2.x,ansible-facts,Ansible,Ansible 2.x,Ansible Facts,快速问题:是否可以使用文件模块创建目录并注册新目录的路径,以便将其用作变量 我很想这样做,因为我正在创建一个带有时间戳的目录,但现在我很想使用该目录来存储一些数据,而且当我使用查找插件时,它似乎失败了,因为当 这里是我创建两个目录的前两个任务 -name:创建带有时间戳的目录以存储数据(如果数据不存在) 时间:组中的资源清册\u主机名['local'] 文件: 路径:“{store\u files\u path}/{{ansible\u date\u time.date}” 状态:目录 模式:“

快速问题:是否可以使用文件模块创建目录并注册新目录的路径,以便将其用作变量

我很想这样做,因为我正在创建一个带有时间戳的目录,但现在我很想使用该目录来存储一些数据,而且当我使用查找插件时,它似乎失败了,因为当

这里是我创建两个目录的前两个任务

-name:创建带有时间戳的目录以存储数据(如果数据不存在)
时间:组中的资源清册\u主机名['local']
文件:
路径:“{store\u files\u path}/{{ansible\u date\u time.date}”
状态:目录
模式:“0755”
-name:创建带有时间戳的目录,以存储当天多次运行的数据
时间:组中的资源清册\u主机名['local']
文件:
路径:“{store_files_path}/{{ansible_date_time.date}/{{ansible_date_time.time}”
状态:目录
模式:“0755”
我在其他任务中使用这个变量在该目录中存储一些数据,这非常有效<代码>“{store\u files\u path}/{{{ansible\u date\u time.date}”但现在的问题是,当使用查找插件检索该目录中的文件时,它会失败,因为找不到第二个目录(即时间戳),因为查找插件实际查找的目录的时间与当前执行任务的时间不同当执行第二个任务时

请协助,我曾想过尝试统计功能,但我不知道如何执行该想法

我的查找任务

-名称:部署到服务器
时间:资源清册\u组中的主机名['Servers']
授权密钥:
用户:{{hostvars['dummy']['user']}
国家:现在
键:“{lookup('file',{store_files_path}}/{{ansible_date_time.date}/{{ansible_date_time.time}}/file}”

有两个选项:

  • 您可以在Ansible控制计算机上保留公钥,并使用
    查找

    #示例:在ansible控制计算机上使用/home/ansible/.ssh/dummy\u id\u rsa.pub
    -授权密钥:
    用户:{{hostvars['dummy']['user']}
    密钥:“{lookup('file','/home/ansible/.ssh/dummy_id_rsa.pub')}”
    国家:“目前”
    
  • 将公钥作为字符串传递:

    vars:
    伪密钥:“ssh rsa aabc12x。。。。。。。。。。。dummy@localhost"
    任务:
    -授权密钥:
    用户:{{hostvars['dummy']['user']}
    密钥:{{dummy_pub_key}}
    国家:“目前”
    
  • 更新:

    哦,对于您最初关于将创建的路径保存到变量中的问题:

    -name:创建带有时间戳的目录以存储数据(如果数据不存在)
    时间:组中的资源清册\u主机名['local']
    文件:
    路径:“{store\u files\u path}/{{ansible\u date\u time.date}”
    状态:目录
    模式:“0755”
    注册号码:newdir\u res
    -名称:显示新创建的目录路径
    调试:
    msg:“目录路径为{{newdir_res.path}”
    
    您是否尝试过注册
    文件
    任务的结果并检查结果?是的,我有一个错误。。该任务包括一个带有未定义变量的选项。错误是:“dict对象”没有属性如何调试??注册后,您必须向我们显示生成错误的代码。此处:
    sh-name:Create Directory with timestamp来存储当天多次运行的数据,此时:inventory\u hostname in groups['local']file:path:“{{store\u files\u path}/{{ansible\u date time.date}/{{ansible\u date time.time}”state:directory mode:“0755”register:dir_path-debug:msg:“{{dir_path.stdout}”
    我也在从任务创建SSH密钥,所以这是不可能的,但是让我看看是否可以将其作为变量进行回显。是的,我已经通过在
    vars
    中设置它来显示公钥。但是您应该能够
    cat
    文件并将其存储在变量中。我也更新了原始问题的答案。哦,这就是我困惑自己的地方,我会用你的答案。让我试一试。嘿,我需要一些帮助@seshadri\t解决方案奏效了,但我仍然无法查找环境方面的内容。