当受管节点是 Windows 主机时如何查找“env”?

2023-12-20

我需要获取 Windows 路径变量%UserProfile%进入 Ansible 剧本;例如$env:USERPROFILE.

如果我的受管节点是 Linux 主机,我想像......

vars:
- wPath: "{{ lookup( 'env','USERPROFILE')}}"

... 会工作。

但是,当受管节点是 Windows 时,上面会返回一些括号内的乱码,这对我来说毫无用处。

如何将此类 Windows 变量导入 Ansible 中?


Since 查找插件 https://docs.ansible.com/ansible/latest/plugins/lookup.html

像所有人一样模板化 https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_templating.html#playbooks-templating...在 Ansible 控制机上执行并评估...

the envLookup – 读取环境变量的值 https://docs.ansible.com/ansible/latest/collections/ansible/builtin/env_lookup.html

允许您在调用 Ansible 时查询控制器上可用的环境变量。

要收集远程节点上的环境,建议gather_facts有关env https://stackoverflow.com/a/71692925/6771046。这也适用于 Windows 节点。

---
- hosts: windows
  become: false

  gather_facts: true
  gather_subset:
    - "env"
    - "!all"
    - "!min"

  tasks:

  - name: Show Gathered Facts
    debug:
      msg: "{{ ansible_facts }}"

答案下是否可以在 Ansible 中仅收集特定事实? https://stackoverflow.com/a/71692925/6771046还展示了如何调试。对于 Windows 节点,它可能看起来像

env:
  ALLUSERSPROFILE: "C:\ProgramData"
  APPDATA: "C:\Users\ansible-user\AppData\Roaming"
  CommonProgramFiles: "C:\Program Files\Common Files"
  CommonProgramFiles(x86): "C:\Program Files (x86)\Common Files"
  CommonProgramW6432: "C:\Program Files\Common Files"
  COMPUTERNAME: "ANSIBLE-WIN"
  ComSpec: "C:\WINDOWS\system32\cmd.exe"
  DriverData: "C:\Windows\System32\Drivers\DriverData"
  GIT_SSH_COMMAND: "C:\\WINDOWS\\System32\\OpenSSH\\ssh.exe"
  GIT_SSH_VARIANT: "ssh"
  HOMEDRIVE: "H:"
  HOMEPATH: "\"
  HOMESHARE: "\\dfs.internal.example.com\HomeDirs\Users_1\ansible-user"
  LOCALAPPDATA: "C:\Users\ansible-user\AppData\Local"
  LOGONSERVER: "\\AD"
  NUMBER_OF_PROCESSORS: "16"
  OS: "Windows_NT"
  Path: "C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPo..."
  PATHEXT: ".COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.CPL"
  PROCESSOR_ARCHITECTURE: "AMD64"
  PROCESSOR_IDENTIFIER: "AMD64 Family 25 Model 80 Stepping 0, AuthenticAMD"
  PROCESSOR_LEVEL: "25"
  PROCESSOR_REVISION: "5000"
  ProgramData: "C:\ProgramData"
  ProgramFiles: "C:\Program Files"
  ProgramFiles(x86): "C:\Program Files (x86)"
  ProgramW6432: "C:\Program Files"
  PSModulePath: "C:\Users\ansible-user\Documents\WindowsPowerShell\Modules;C:\Program Files\WindowsPowerSh..."
  PUBLIC: "C:\Users\Public"
  SESSIONNAME: "Console"
  SystemDrive: "C:"
  SystemRoot: "C:\WINDOWS"
  TEMP: "C:\Users\ansible-user\AppData\Local\Temp"
  TMP: "C:\Users\ansible-user\AppData\Local\Temp"
  UATDATA: "C:\WINDOWS\CCM\UATData\12345678-90AB-CDEF-0123-4567890ACDEF"
  USERDNSDOMAIN: "INTERNAL.EXAMPLE.COM"
  USERDOMAIN: "INTERNAL"
  USERDOMAIN_ROAMINGPROFILE: "INTERNAL"
  USERNAME: "ansible-user"
  USERPROFILE: "C:\Users\ansible-user"
  windir: "C:\WINDOWS"

之后的任务就像

- name: Show Specific Fact
  debug:
    msg: "{{ ansible_facts.env.USERPROFILE }}"

是可能的,并且可以提供所请求的信息。

由于几乎没有关于从 Windows 远程节点收集的内容的可用文档,因此我喜欢引用以下示例数据结构:

  • Windows Node 收集的事实YAML https://github.com/automateyournetwork/WindowsFacts/blob/master/documentation/servers/WINDOWS/yaml/server_facts.yml
  • Windows Node 收集的事实JSON https://github.com/automateyournetwork/WindowsFacts/blob/master/documentation/servers/WINDOWS/json/server_facts.json

它们来自一个使用 Ansible 收集 Windows 事实的 Ansible 手册setup module https://github.com/automateyournetwork/WindowsFacts/tree/master。它还在一些示例中展示了如何利用事实。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当受管节点是 Windows 主机时如何查找“env”? 的相关文章

  • powershell stdin 管道和重定向

    你好 我一直在制作一个小的跨平台脚 本 我可以将其卷曲并通过管道传输到bash和Powershell中 基本思想是服务器向解释器发送一个命令 然后它给出一个命令将所有输出重定向到标准输出 bash 中的一个例子是 some commands
  • 使用taskkill停止Windows服务

    我需要帮助来使用 C 终止 Windows 服务 现在要终止该服务 请使用以下选项 从命令 sc queryex ServiceName 发现后PID服务的 taskkill pid 1234 exemple f 为了便于阅读 但如果您明白
  • 使用 BitmapEncoder 生成时如何使 GIF 循环重复

    我能够使用 BitmapEncoder C WinRT 创建动画 gif 但是 我一直无法弄清楚如何让GIF循环回来并从头开始 没有尝试太多 因为我不确定要尝试什么 搜索了更多要在 GIF 上设置的属性 但找不到任何相关内容 好吧 终于能弄
  • launch.json 中不允许使用属性 env [VSCode]

    我所做的就是在 VS 中初始化一个模板 Azure Functions 项目 当我尝试通过设置运行配置环境变量时launch json VS直接警告我这是不 允许的 此外 即使当我尝试运行我的 ps1无论如何 对于 env 来说 它不起作用
  • Pester 没有捕获抛出的错误

    当我运行以下纠缠测试时 我希望它能够捕获预期的错误 但事实并非如此 但是 当我使用不同的函数和不同的 throw 语句运行测试时 它会起作用 纠缠测试 Describe Remove GenericCredential Function T
  • 如何在Windows 8上正确使用SCardGetStatusChange?

    智能卡服务在 Windows 8 上的行为有所不同 并且 MSDN 尚未更新其文档 任何人都可以提供有关如何正确调用 SCardGetStatusChange 来监视 Windows 8 上的智能卡操作的代码片段吗 提前致谢 这是我为个人博
  • 如何从 C# 运行 PowerShell 脚本

    我正在尝试使用 C 运行 PowerShell 脚本 但没有成功 这是我的功能 private void ExecutePowerShellCommand string scriptfile RunspaceConfiguration ru
  • 有没有办法同时拥有加密和非加密的主机变量?

    如果我加密host vars 文件与ansible vault 除了清单文件中的主机变量之外 我似乎没有机会拥有未加密的主机变量 我错过了什么吗 事实证明 http docs ansible com ansible intro invent
  • 从 Python 下载/安装 Windows 更新

    我正在编写一个脚本来自动安装 Windows 更新 我可以将其部署在多台计算机上 这样我就不必担心手动更新它们 我想用 Python 编写这个 但找不到任何关于如何完成此操作的信息 我需要知道如何搜索更新 下载更新并从 python 脚本安
  • Delphi中使用FindVCLWindow调用WinHelp32(WinXP Pro SP3 32bit)

    有什么问题吗 procedure TForm1 VCLHelpClick Sender TObject var Ctrl TWinControl begin Ctrl FindVCLWindow Mouse CursorPos if Ctr
  • 在Windows 7上安装curl后缺少libcurl-4.dll

    按照这个人的安装curl后指示 https stackoverflow com a 28757477 1186038 除了第 2 步 已安装Win64 OpenSSL v1 0 1u 轻型相反 因为下载页面中缺少版本 k http slpr
  • 在 Windows 7 上的 Sourcetree 中比较 Word docx 文件

    我一直在尝试获取在 Windows 7 上的 Sourcetree 中工作的 Word docx 文件的文本差异 我已按照此处的说明进行操作将 Microsoft Word 与 git 结合使用 http blog martinfenner
  • 如何创建向后兼容 Windows 7 的缩放和尺寸更改每显示器 DPI 感知应用程序?

    我是 WPF 和 DPI 感知 API 的新手 正在编写一个在 Windows 7 8 1 和 10 中运行的应用程序 我使用具有不同每个显示器 DPI 设置的多个显示器 并且有兴趣将我的应用程序制作为跨桌面配置尽可能兼容 我已经知道可以将
  • VB - 以隐式方式链接 DLL

    我正在开发 VB6 图形界面 并且需要隐式链接到 DLL 这样做的动机来自于我上一个问题 https stackoverflow com questions 5194573 有问题的 DLL 使用静态 TLS declspec thread
  • 为什么 fopen 无法打开已存在的文件?

    我在 Windows XP 上使用 Visual Studio 6 是的 我知道它很旧 构建 维护 C DLL 我遇到了 fopen 无法打开现有文件的问题 它总是返回 NULL 我试过了 通过将 errno 和 doserrno 设置为零
  • 将 Powershell 输出转换为 Markdown 文件

    我有以下代码 xmlFile C Users kraer Desktop bom xml xml xml Get Content xmlFile xml bom components component ForEach Object fin
  • 仅在单个端口 8080 上转发到本地主机(Windows)可能吗? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我知道如何在 Windows 上使用 xampp 设置本地网络服务器 我在主机文件 c windows system32 drivers etc ho
  • 如何有效截断文件头?

    大家都知道truncate file size 函数 通过截断文件尾部将文件大小更改为给定大小 但是如何做同样的事情 只截断文件的尾部和头部呢 通常 您必须重写整个文件 最简单的方法是跳过前几个字节 将其他所有内容复制到临时文件中 并在完成
  • Windows 上的递归移动命令

    我需要做一个 sh 的 bat 副本 我不太了解 Windows cmd 在 Linux 上我可以做 mv or rsync a SOURCE DEST remove sent files ignore existing whole fil
  • 如何在 Windows 命令行中使用参数运行 Python 脚本

    这是我的蟒蛇hello py script def hello a b print hello and that s your sum sum a b print sum import sys if name main hello sys

随机推荐

  • tf.get_collection 提取一个范围的变量

    I have n 例如 n 3 范围和x 例如 x 4 每个作用域中定义的变量数量 范围是 model generator 0 model generator 1 model generator 2 计算损失后 我想根据运行时的标准从其中一
  • 根据条件删除行

    因此 第 1 列由各种名称组成 如果该列中特定单元格中的名称不属于名称子集 我想删除整行 我尝试使用嵌套的 If 和 For 来遍历行 但事实证明按升序删除行不起作用 现在 我希望 for 循环从最终值开始到初始值 并且我在最后使用了 St
  • addEventListener 匿名函数中的 Javascript 变量范围

    单击每个 div 时 如果单击了 div 1 则应发出警报 1 如果单击了 div 2 则应发出警报 5 我试图使此代码尽可能简单 因为这是在更大的应用程序中需要的
  • 如何在各种环境下使用和配置omniauth与yahoo、google、facebook策略?

    我正在开发一个 Rails 3 2 应用程序 该应用程序将允许用户向多个提供商进行身份验证 雅虎 谷歌 Facebook 和 或 Twitter 我们正在使用omniauth 虽然我了解基本工作流程 但我找不到一个包容性文档来说明应如何配置
  • 重写骨干模型中的 fetch() 方法

    我想重写 Backbone 模型中的默认 fetch 方法 从而仅在需要时调用它 像这样的东西 Account Check Backbone Model extend model Account Item url Settings Url
  • CSS中宽度除以高度得到屏幕比例

    我尝试获取屏幕的比 例 这是我尝试过的CSS 但它不起作用 height calc 50vw calc 1vw 1vh 3 如何获得屏幕宽度除以屏幕高度 Thanks First of all calc is not nestable 1
  • Makefile 找不到 macports 安装的 boost 库

    我刚刚使用 macports 安装了 boost 1 42 0sudo port install boost 一切都很好 现在我有一个项目 我正在尝试使用 makefile 构建 一切都构建得很好 直到涉及到需要 boost 库的文件为止
  • 如何在远程 ssh 连接中本地绘制 R 绘图?

    我目前通过 ssh 连接到一台远程计算机 我在 VIM 中设置了 R 我两边都用ubuntu 当我尝试从 R 绘制某些内容时 它将出现在远程计算机而不是本地计算机上 有什么办法可以在本地制作 R 绘图吗 您可以将 SSH 与 X切换以将图形
  • DIV 左侧垂直滚动条

    是否可以用css将DIV的垂直滚动条放在div的左侧 jscript 怎么样 我有一个简单的用例 所以选择了一个简单的 css 解决方案 div style height 250px div style padding 3px Conten
  • 使用 vanilla JS 添加 CSS 规则的最短方法

    我正在开发一个库 试图将其保持在 1KB 以下 我已经非常接近我的极限了 我需要添加一个 CSS 规则来控制显示隐藏行为 hidden display none important HTML 页面没有任何样式标签 这将是我唯一需要的规则 我
  • 无法从 Windows 注册表运行 vbs 文件

    我有一个调用 vbscript 文件的注册表项 如下所示 右键单击 cur 文件选择 更改光标 选项时将触发该注册表项 C Program Files Cursor Manager CustomCursor vbs 1 2 下面是vbs文件
  • 如何减少 Eclipse Ganymede 的内存使用?

    我使用最新的 Eclipse Ganymede 版本 特别是针对 Java EE 和 Web 开发人员的发行版 我安装了一些额外的插件 例如 Subclipse Spring FindBugs 并删除了所有 Mylyn 插件 我在 Ecli
  • 使用继承与接口的装饰器设计模式

    我想使用继承来实现装饰器设计模式 Decorator extends Component 因为我需要访问组件类的受保护字段 方法 问题在于 Component 类代表一种算法 它在构造时执行一些预处理并保存大量数据 现在 每次装饰组件时 我
  • 如何设置与单击一次应用程序的文件关联?

    我有一个点击一次的应用程序 我有一个关联文件 用于存储应用程序的数据 当用户单击这些文件之一时 我希望它打开单击一次应用程序并加载文件 我可以在发布中设置文件关联 图标和名称设置正确 单击文件将打开应用程序 但应用程序似乎没有传递文件的路径
  • 如果从 C# 代码调用,则捕获 EXE 文件中的错误

    我正在从 C 代码运行 exe 文件 由于某些原因 该 exe 文件中出现错误 它一直等待并最终给出弹出错误 abc exe已停止工作 等 但它不退出 The below code is calling it successfully pu
  • NetworkX:在Python中连接两个独立图的节点

    这个问题是关于尝试建模相互依存的网络 https en wikipedia org wiki Interdependent networks与 NetworkX 一起 有专用的包 例如Pymnet http people maths ox
  • node.js - 向子进程发送快捷键

    我的程序生成 ssh 作为子进程 连接到服务器 然后能够写入流并读取其输出 这一切都很好 当我将 ls 写入进程流时 我会得到文件列表 但现在 我想发送此进程的快捷键 以便我可以中止 ssh 会话中正在运行的进程 我知道这也可以通过流来完成
  • 如何在OpenCV中将16位图像转换为32位图像?

    我是 OpenCV 新手 我的程序读取 16 位无符号整数的图像数据 我需要将图像数据乘以 16 位无符号整数的增益 因此 生成的数据应保存在 32 位图像文件中 我尝试了以下操作 但得到了 8 位全白图像 请帮忙 Mat inputDat
  • 无法读取.net core 2.1中的用户机密

    我在尝试读取用户机密时遇到问题 我在startup cs中的代码如下 public Startup IHostingEnvironment env var builder new ConfigurationBuilder SetBasePa
  • 当受管节点是 Windows 主机时如何查找“env”?

    我需要获取 Windows 路径变量 UserProfile 进入 Ansible 剧本 例如 env USERPROFILE 如果我的受管节点是 Linux 主机 我想像 vars wPath lookup env USERPROFILE