我有一个可能由多个用户运行的剧本。该剧本运行由我们的审计部门创建的批处理脚本。我们不允许以任何方式修改脚本。他们的脚本获取有关服务器的各种信息并将其输出到用户“文档”文件夹内的文件夹。我的目标是创建一个 Ansible 剧本,可供审计团队中的任何人运行,以便
- 删除旧的审核数据
- 运行批处理脚本
- 存档文件夹
- 下载存档文件夹
我目前创建了以下任务:
---
- name: Remove old audit data
win_file:
path=C:\Users\my-username\Documents\PCI-Audit-Evidence
state=absent
- name: Run audit check
script: ../files/Windows-2008-2012-PCI.cmd
- name: Archive audit folder for download
script: ../files/zipfolder.ps1
- name: Download audit file
fetch:
dest: "audits/{{ inventory_hostname }}/"
src: "C:/Users/my-username/Documents/PCI-Audit-Evidence.zip"
flat: yes
一切正常,没有问题。我的问题是我已将我的用户名硬编码到第一个和最后一个任务的源字段中。我需要“我的用户名”作为一个变量,该变量根据运行剧本的人而变化。我尝试过使用 Windows 环境变量“$env:username”,但这不起作用。我也尝试过“{{ ansible_user_id }}”,但在检查了 Windows 2008 服务器的事实后,ansible 实际上并未将用户名记录为事实。
我唯一能想到的就是添加另一个任务,运行一个脚本来登录服务器并运行 whoami 或其他东西,然后将其注册为变量,但这似乎过于复杂。
有更简单的方法吗?
注意:我需要来自远程系统的用户名。
此外,如果本地计算机上的文件已存在,如何获取文件并覆盖该文件?
最佳答案
您可以使用环境变量USERPROFILE
(或USERNAME
来严格回答问题):
- name: Remove old audit data
win_file:
path: "{{ ansible_env.USERPROFILE }}\Documents\PCI-Audit-Evidence"
state: absent
- name: Download audit file
fetch:
dest: "audits/{{ inventory_hostname }}/"
src: "{{ ansible_env.USERPROFILE }}\Documents\PCI-Audit-Evidence.zip"
flat: yes
关于windows - 用可变用户 ID 替换 Windows 目录路径中的用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39713507/