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 具有“替代目录布局”并使用保管库 的相关文章

  • 从上一个任务获取更改/失败的主机列表 |安西布尔

    All 示例 如果我有 20 个主机用于剧本并使用 Serial 10 运行它们 则以下 shell 命令一次在 10 个主机上运行 完成后 将调用处理程序任务 其中创建 dict dict 的任务不会提供字典输出 因此第二个任务 失败的主
  • 带变量的 ansible regex_search

    如何在ansible playbook中使用正则表达式查找匹配项 其中变量出现在regex search争论 以下剧本在使用以下命令运行时找不到匹配项 ansible playbook playbook yml hosts localhos
  • 如何从用户定义的 ansible.cfg 设置 ansible_config 变量

    我有一个目录结构 在其中保存我的剧本 如下所示 home monk Ansible work ansible cfg playbook dir 1 playbook 1 yml playbook dir 2 playbook 2 yml p
  • 如何读取/理解目标主机上的ansible日志(由syslog编写)

    当你在某个主机上执行 ansible 时 它 会写入该主机上的 syslog 如下所示 Dec 1 15 00 22 run tools python ansible
  • 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 测试变量以什么开头

    我需要能够安装 MySQL 库 Python 有 1 个用于 v2 的包和另一个用于 v3 的包 我需要能够告诉 Ansible 要安装哪个包 name Ensure MySQL python is installed pip name M
  • 如何在 Jinja 中过滤字典?

    我有一个包字典 包名称是key和一些细节的字典是value php7 1 readline latest 7 1 9 1 ubuntu14 04 1 deb sury org 1 origins ppa launchpad net vers
  • 如何使用ansible将vars文件包含在vars文件中?

    是否可以将 Ansible 中的 vars 文件动态包含到另一个 vars 文件中 IE 我有 vars 文件 definitions product web v2 suite mysuite include default step ym
  • 所有 Ansible playbook 属性

    我刚刚开始使用 Ansible 在阅读了教程 Ansible 团队将其命名为 docs 我想查看可在剧本中使用的所有属性的完整列表 有人能够提供这样的清单吗 我唯一能通过谷歌搜索的是这个老例子 https gist github com m
  • 开发/生产中的 Ansible 服务器/组

    我所处的情况是看不到正确的使用方法 我有多个分配了不同角色的服务器 分布在多个组中 与生产 登台环境相比 我在本地 Vagrant 环境中遇到了一些使用 group vars 的困难 在生产中 有更多的服务器 分配的组更少 在我的 Vagr
  • 使用带有文件模块的ansible创建目录列表很慢

    我有一个角色 必须创建目录列表 哪些目录最终出现在列表中取决于运行时评估的几个条件 当我使用file模块 如图所示 这非常慢 创建甚至检查每个目录是否存在大约需要半秒 在我遇到的场景中很容易就达到几分钟 流水线已启用 name Create
  • 正在中止,目标使用 selinux 但未安装 Python 绑定 (libselinux-Python)

    我正在尝试运行 Ansible playbook 命令并收到如下错误 fatal localhost FAILED gt changed false msg Aborting target uses selinux but python b
  • Ansible:使用变量定义 playbook 主机

    我安装了以下版本 ansible 2 3 0 开发2131eaba0c 我想将我的主机变量指定为外部变量 然后在playbook与此类似 hosts integration In my 组变量 全部文件我有以下定义的变量 integrati
  • 如何使用ansible运行询问用户输入的脚本?

    我想使用 ansible 运行 shell 脚本 但 shell 脚本需要用户输入才能成功执行 例如 我的 shell 脚本询问唯一的 idossec agent 通过ansible我可以预定义我的unique id user input
  • 在 sudo 用户下应用角色

    是否可以在 Ansible 中应用 sudo 等特定角色 具体来说 这些是从 ansible galaxy 获取的角色 因此来源不在我的控制范围内 这个例子 https raymii org s tutorials Ansible Bett
  • ansible playbook失败:超时(12秒)等待权限升级提示:“}

    我正在尝试在虚拟机上自动执行一些手动任务 作为其中的一部分 我的虚拟机没有直接的根访问权限 所以我必须使用不同的用户 然后升级到root 当我尝试切换到 root 用户时 密码提示与默认提示不同 我看到的提示如下图 user1 vm 1 t
  • 如何在microsoft windows下使用ansible克隆git存储库

    Ansible 2 1 centos7下控制主机 windows 10数量作为客户端 我需要在远程端克隆 git 存储库 但不知道如何执行此操作 没有Windows 本机模块 http docs ansible com ansible li
  • 如何使用 Ansible 设置环境变量

    我需要设置变量 例如JAVA HOME并更新PATH 有多种方法可以做到这一点 一种方法是更新 etc environment变量并包含一行JAVA HOME使用文件行 http docs ansible com ansible linei

随机推荐

  • 如何将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