Ansible 具有“替代目录布局”并使用保管库

2023-12-05

我正在尝试使用替代目录布局和里面的 ansible-vaults。 但是当我运行我的剧本时,保管库加密的变量无法使用该目录结构解析。那么我做错了什么?

我通过以下方式执行:

ansible-playbook -i inventories/inv/hosts playbooks/inv/invTest.yml --check --ask-vault

这是我的结构:

.
├── inventories
│   ├── inv
│   │   ├── group_vars
│   │   │   ├── var.yml
│   │   │   └── vault.yml
│   │   └── hosts
│   └── staging
│       ├── group_vars
│       │   ├── var.yml
│       │   └── vault.yml
│       └── hosts
├── playbooks
│   ├── staging
│   │   └── stagingTest.yml
│   └── inv
│       ├── invTest.retry
│       └── invTest.yml
└── roles
    ├── basic-linux
    │   ├── defaults
    │   │   └── main.yml
    │   └── tasks
    │       └── main.yml
    ├── test
    │   ├── defaults
    │   │   └── main.yml
    │   └── tasks
    │       └── main.yml
    └── webserver
        ├── defaults
        │   └── main.yml
        ├── files
        ├── handler
        │   └── main.yml
        ├── tasks
        │   └── main.yml
        └── templates

这是我的主机文件(inventories/inv/hosts):

[inv]
testvm-01    ansible_ssh_port=22    ansible_ssh_host=172.16.0.101    ansible_ssh_user=root
testvm-02    ansible_ssh_port=22    ansible_ssh_host=172.16.0.102    ansible_ssh_user=root

剧本(playbooks/inv/invTest.yml):

---
  - name: this is test
    hosts: inv
    roles:
      - { role: ../../roles/test }
...

使用保管库加密的 var 的角色(roles/test/tasks/main.yml):

---
  - name: create test folder
    file:
        path: "/opt/test/{{ app_user }}/"
        state: directory
        owner: "{{ default_user }}"
        group: "{{ default_group }}"
        mode: 2755
        recurse: yes
...

指向金库的 var (inventories/inv/group_vars/var.yml):

---
app_user: '{{ vault_app_user }}'
app_pass: '{{ vault_app_pass }}'
...

保管库文件(ansible-vault edit inventories/inv/group_vars/vault.yml):

vault_app_user: itest
vault_app_pass: itest123

我收到的错误消息是这样的:

失败的! => {“failed”:true,“msg”:“字段“args”具有无效值,该值似乎包含未定义的变量。错误为:{{ app_user }}:“app_user”未定义\ n\n错误似乎位于“roles/test/tasks/main.yml”中:但可能\n位于文件的其他位置,具体取决于具体的语法问题。\n\n有问题的行似乎是:\n\n \n - 名称:创建测试文件夹\n ^ 此处\n"}


您定义变量app_user在一个名为var.yml存储在 group_vars 文件夹中。

在您的执行行中,您指向inventories/inv/hosts作为您的库存目录。

在此路径中使用什么字符串并不重要——从 Ansible 的角度来看,它只会看到:

hosts
group_vars
├── var.yml
└── vault.yml

它将读取var.yml对于名为的主机组var and vault.yml对于名为的主机组vault.

就你而言——永远不会。


您可能想这样组织文件:

inventories
└── production
    ├── group_vars
    │   └── inv
    │       ├── var.yml
    │       └── vault.yml
    └── hosts

这样,文件在group_vars/inv将为组中的主机读取inv.

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

Ansible 具有“替代目录布局”并使用保管库 的相关文章

  • Ansible:从意图文件创建字典

    shell gt cat myfile yml ABC ABC C01 host a1 prefixlen 19 host a2 prefixlen 19 DEF DEF C01 host d1 prefixlen 19 host d2 p
  • 如何根据任务或任务集切换用户?

    我的 ansible 手册中反复出现的主题是我经常必须使用 sudo 权限执行命令 sudo yes 因为我想为某个用户执行此操作 理想情况下 我宁愿使用 sudo 切换到该用户并正常执行命令 因为这样我就不必执行通常的后命令清理工作 例如
  • 将事实收集到事实缓存的最快方法

    我正在尝试让 Ansible 与 limit 一起工作 为此我需要有关其他主机的事实 我正在使用fact caching进行缓存 我应该运行什么命令 以便它只收集所有主机上的所有事实并缓存它们 而不运行任何任务 像这样的东西设置模块 htt
  • 根据磁盘可用空间获取节点IP

    我正在尝试编写一个 Ansible 剧本来检查多个服务器上的磁盘空间 到目前为止 这是我的 Ansible 剧本 hosts all become yes tasks name Check freespace shell df h awk
  • Ansible with_items 与循环

    使用有什么区别带有项目 https docs ansible com ansible 2 4 playbooks loops html vs loops http docs ansible com ansible latest user g
  • 如何将文件从 Ansible Tower 上传到 Artifactory?

    我每次都会收到此错误 但仅在尝试从 Ansible Tower 上传到 Artifactory 时出现在特定文件上 这些文件都是在清单主机上创建的Oracle Collection Tool 然后在上传到 Artifactory 之前获取到
  • 带有 cacert 选项的 Ansible URI 模块

    我正在尝试做相当于 curl X POST data
  • ansible安装node.js版本6

    要安装 Node 6 x 版本 请执行以下命令 curl sL https deb nodesource com setup 6 x sudo E bash sudo apt get install y nodejs 现在我到底该如何在an
  • 使用 ansible SSH 到远程服务器

    我正在使用 ansible 来自动化一些任务 其中之一要求我ssh到服务器A 然后从A到B 然后从B到C 我似乎找不到任何方法来做到这一点 有什么建议么 鉴于您不使用 Paramiko 进行 ssh transport ssh https
  • Ansible 权限问题

    我正在尝试将当前用户添加到系统中的某个组 然后执行需要该组权限的命令 我的剧本是这样的 name Add this user to RVM group sudo true user state present name vagrant ap
  • ansible 用户模块总是显示已更改

    我正在努力正确使用 ansible 的用户模块 问题是每次我运行我的剧本时 我创建的用户always显示为已更改 即使我已经创建了它们 我在这里发现其他人也有同样的问题 https github com ansible ansible is
  • Ansible git clone“权限被拒绝”但直接 git clone 工作

    我在使用 Ansible 时遇到了一个令人不安的问题 我使用当前主机的 ssh 密钥在我的环境中设置 git 克隆 name Add user Public Key copy src Users alexgrs ssh id rsa pub
  • 如何使用 Ansible when 条件在文件中搜索字符串

    我有一个变量中用 n 分隔的搜索字符串列表listofips 我想在文件中搜索该字符串hello csv在我的下面playbook dir 我可能遇到一些语法问题 我不确定 但下面是我尝试过的 set fact listofips 10 0
  • Ansible 无法运行任何命令或 shell

    我在 RPi 上运行任何命令或 shell 时遇到问题 当我使用以下代码时 name Example command ansible builtin command cmd cat etc motd 我收到此错误 Unsupported p
  • ansible 重新启动 2.1.1.0 失败

    我一直在尝试创建一个非常简单的 Ansible 剧本 它将重新启动服务器并等待它回来 我过去在 Ansible 1 9 上有一个可以运行的 但我最近升级到 2 1 1 0 并且失败了 我正在重新启动的主机名为 idm IP 为 192 16
  • 如何在 Ansible 中运行 MySQL 查询

    我需要编写一个 Ansible 脚本来在 MySQL 数据库中执行 SQL 查询 这是我尝试过的 你能指导一下吗 hosts localhost tasks name retrive data command mysql u root h
  • 使用 ansible 处理程序滚动重启

    我想运行一个 ansible playbook 它会安装一个服务 如果自上次运行以来发生任何更改 或多或少是 ansible 处理程序的规范用例 则重新启动它 但我想要一个不同的并行性用于安装而不是重新启动 我想一次在所有主机上安装 但是
  • Ansible 多个清单文件

    我正在尝试将多个清单文件和动态清单与 Ansible 1 4 和 dev 一起使用 Ansible 返回没有匹配的主机 我有一个模拟场景 目录中有两个主机文件test列出该目录的内容 主机1 ini group1 test1 ansible
  • 如何从 Ansible 模块获取当前主机名?

    我正在开发自定义 Ansible 模块来控制 Vagrant 控制多个 VM 服务器上的多个 VM 节点 遵循指南https docs ansible com ansible latest dev guide developing modu
  • 如何使用 Vagrant 自动安装 Ansible Galaxy 角色?

    仅使用一本剧本 则不可能让 Ansible 自动安装依赖角色 至少按照这个所以线程 https stackoverflow com questions 25230376 how to automatically install ansibl

随机推荐

  • 如何将Matlab中的数据导出到excel循环?

    我有一个 for循环 的代码 对于我 1 4 陈述 y sim 净 我 结尾 现在我需要将 y 的值导出到 Excel 工作表 为此我用了 xlswrite 输出数据 xls y 输出数据 A1 但我的问题是excel的ID 即 A1 应该
  • 使用 PDFBox 生成的 PDF 为空白

    我在尝试着将内容写入 PDF文件 我已经写了代码 public ByteArrayOutputStream createPDF String text throws IOException COSVisitorException PDDoc
  • 在 python 中使用 asyncio 运行多个套接字

    设置 Python 3 7 4 我正在尝试使用 asyncio 在不同端口上侦听来创建 6 个套接字 我尝试像这样实现它 Code import asyncio async def client thread reader writer w
  • 切换路由时组件中的非作用域样式仅应用一次

    Vue js 作用域 CSS 文档提到 您可以在同一组件中包含作用域样式和非作用域样式 我建造了示例应用程序vue router并使用两个单个文件组件而不是示例的字符串模板 渲染符合预期 然后 我尝试在组件中应用作用域样式和非作用域样式 在
  • 为每个用户创建个人页面,PHP

    我想要做的是为每个在我的页面上注册的用户创建一个网页 例如 www someweb com 用户名 这将是他们的网页 我知道这可以很容易地完成mkdir 和其他相关功能 但问题是我的根文件夹不是chmod 777我不想chmod 777由于
  • Highcharts 工具提示背景根据线

    我正在尝试使用 Highcharts 使工具提示的背景颜色与线条的颜色相匹配 我正在尝试找到最合理的本机方法来处理这个问题 如果可以避免添加 div div 格式化程序有背景颜色 那就太好了 但如果没有 我想这也有效 线条颜色和数量会发生很
  • 测试移动网站[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我们正准备推出一个移动网站
  • 使用 XmlReader.Create(uri) 防止或处理超时

    有时 我在通过 URL 读取 XML 时会遇到超时异常 我可以采取什么措施来防止这种情况发生 还是远程服务器有问题 下面是我的简单代码 XmlDocument doc new XmlDocument doc Load XmlReader C
  • 带有 mod_wsgi 的 Django 返回 403 错误

    我正在尝试将 Django 与 Apache 和 mod wsgi 一起使用 使用默认的 Django Web 服务器 一切进展顺利 但现在在尝试加载页面时出现 403 访问禁止 错误 我在这里搜索了以前的帖子并阅读了官方文档 但那里的解决
  • 是否可以在opengl中使用深度缓冲区渲染3D纹理

    我正在尝试实现一些程序并使用这个经典代码 glBindFramebuffer GL FRAMEBUFFER framebuffer 绑定深度缓冲区 glGenRenderbuffers 1 depthbuffer glBindRenderb
  • jQuery 将 HTML 表转换为 XML

    我使用以下 jQuery 代码从远程主机检索 HTML var loadUrl URL html result html ajax load load loadUrl table schedule 这给了我以下 HTML table cla
  • 项目文件存储在 git 存储库“.git”文件夹中的哪里? [复制]

    这个问题在这里已经有答案了 我为我的许多项目创建了一个远程存储库 因此它是我的目标push的 与 git 的理念相反 但它充当中央存储库 然而当我去 git服务器上的文件夹有以下形式的目录结构 branches hooks applypat
  • Ember JS 的可重用组件/视图

    我正在尝试创建一个可重用的组件或视图 用于创建包含在 Bootstrap 控制组中的标签和文本输入 该组件需要创建如下内容 div class control group div
  • 如何修复 InvalidStateError:没有远程 SDP 时无法添加 ICE 候选者

    我正在创建一个 webRTC 视频聊天 当从 Firefox 发起呼叫时显示呼叫者所有活动成员 并且接收者使用 chrome 此错误显示 未捕获 承诺 DOMException 无法在 RTCPeerConnection 上执行 addIc
  • 在 Express 中更新 cookie 会话,但未在浏览器中注册

    我已经设置了一个工作登录测试 如下所示 var express require express var fs require fs var http require http var path require path var routes
  • WCF 服务移至 SSL 后,PrincipalPermission.Demand() 失败

    我的 Silverlight WCF 应用程序在每个服务方法中使用 PrimaryPermission 来确保用户经过身份验证 当我将所有内容配置为 HTTP 时 这一切都很好 但是一旦我将服务端点 绑定配置为支持 HTTPS SSL 当我
  • 热图上的特定异常值 - matplotlib

    我正在生成一个带有固定离群值数据的热图 我需要将这些离群值显示为我使用的 热 cmap 调色板中的颜色 通过使用 cmap set bad green 和 np ma masked values data outlier 我得到了一个看起来
  • TypeError: to_excel() 缺少 1 个必需的位置参数 - 尽管使用 excel writer

    我在使用 pandas 保存到 Excel 时遇到问题 并出现以下错误 File C Users Colleen Documents Non online code kit names py line 36 in save sheet na
  • azure数据工厂:如何将文件夹的所有文件合并到一个文件中

    我需要创建一个大文件 通过合并分散在 Azure Blob 存储中包含的多个子文件夹中的多个文件 还需要进行转换 每个文件包含单个元素的 JSON 数组 因此最终文件将包含一个JSON 元素数组 最终目的是在 Hadoop 和 MapRed
  • Ansible 具有“替代目录布局”并使用保管库

    我正在尝试使用替代目录布局和里面的 ansible vaults 但是当我运行我的剧本时 保管库加密的变量无法使用该目录结构解析 那么我做错了什么 我通过以下方式执行 ansible playbook i inventories inv h