使用 with_items 连接字符串并分配给 Ansible 中的变量

2024-05-04

启动 ec2 实例时,我需要将两个 2 IP 保存到 vars 文件中的变量中,以便稍后在部署期间使用。

这就是我保存单个服务器 IP 的方式:

- name: Save server public IP to vars file
  lineinfile: line="server_public_ip{{':'}} {{ item.public_ip }}"
              dest="{{ansible_env.HOME}}/dynamic_ips_{{ec2_environment}}"
  with_items: server.instances  #server is registered in previous task

我在dynamic_ips文件中的输出是server_public_ip: xxx.xxx.xx.x

现在我启动了 2 台服务器并注册为服务器。

我需要将其另存为server_public_ips: xxx.xx.x.xx , xxx.x.xx.x

我尝试声明一个空字符串并向其附加 ips,类似这样,但出现错误。

set_fact:
   ips: ""
set_fact:
   ips: " {{ ips }} + {{ item.public_ip}} "
with_items: servers.instances  #servers is registered in previous task
lineinfile: line="server_public_ips{{':'}} {{ ips }}"
            dest="{{ansible_env.HOME}}/dynamic_ips_{{ec2_environment}}"

我认为可以使用 lineinfile insertafter 和正则表达式来完成。

最后,我需要这个在不同的服务器上执行此操作,

- name: Restrict access to outside world
  command: iptables INPUT {{ item }} ACCEPT
  with_items: {{ server_public_ips }}.split(,) #grant access for each ip 
  command: iptables INPUT DROP

set_fact:
   ips: " {{servers.instances | join(',') }} "

当servers.instances 是一个列表时应该实际工作。

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

使用 with_items 连接字符串并分配给 Ansible 中的变量 的相关文章

  • 如何使用Vault在Ansible中运行playbook api

    我有一本带有Vault的剧本 我可以运行它 ansible playbook info yml ask vault pass 现在 我想在 Ansible 中运行我的 playbook api 答案在如何使用Vault在Ansible v2
  • 使用 Python API 2.0.0.1 运行 Ansible Playbook

    安塞布尔版本 2 0 0 1 我现在已经四处寻找了很多 我发现的大多数文档要么不完整 要么已弃用 这篇文章适用于1 8 4版本 即 https stackoverflow com questions 27590039 running ans
  • Ansible 循环直到条件匹配。

    我想进行一系列 API 调用 每次调用后检查结果中的特定参数 如果它大于特定值 则将其保存在寄存器中并继续进一步执行剧本 基本上 我正在对 RHEV 进行 API 调用来检查存储域 然后我想检查存储域是否有足够的空间 如果有 则将该存储域i
  • 使用 with_items 连接字符串并分配给 Ansible 中的变量

    启动 ec2 实例时 我需要将两个 2 IP 保存到 vars 文件中的变量中 以便稍后在部署期间使用 这就是我保存单个服务器 IP 的方式 name Save server public IP to vars file lineinfil
  • 如何读取/理解目标主机上的ansible日志(由syslog编写)

    当你在某个主机上执行 ansible 时 它 会写入该主机上的 syslog 如下所示 Dec 1 15 00 22 run tools python ansible
  • ansible 用户模块总是显示已更改

    我正在努力正确使用 ansible 的用户模块 问题是每次我运行我的剧本时 我创建的用户always显示为已更改 即使我已经创建了它们 我在这里发现其他人也有同样的问题 https github com ansible ansible is
  • 使用 lineinfile 和 blockinfile 编辑文件还是仅使用模板复制整个文件?

    我开始使用 Ansible 编写一个剧本 为我们的应用程序部署临时环境 我试图了解对文件应用更改的最佳实践是否是在控制计算机上本地更改它们 然后将它们传播到远程服务器 或者是否应该在剧本内操作文件 通过剧本操作文件在可读性和文档方面似乎更好
  • local_action:shell 连接文件时出错

    我的剧本中有这样的错误 为什么以及如何解决它 获取远程主机的更新列表 将列表连接到一个文件中 name Save update deb packs in file on ansible host copy content update de
  • 如何使用 Ansible 遍历嵌套的 dict 结构?

    我在 ansible 剧本中有以下 dict 结构变量 apache vhosts name foo server name foo com server aliases a foo com b foo com c foo com name
  • 如何在 Ansible 中运行 MySQL 查询

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

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

    我有一个包字典 包名称是key和一些细节的字典是value php7 1 readline latest 7 1 9 1 ubuntu14 04 1 deb sury org 1 origins ppa launchpad net vers
  • 如何从 Ansible 模块获取当前主机名?

    我正在开发自定义 Ansible 模块来控制 Vagrant 控制多个 VM 服务器上的多个 VM 节点 遵循指南https docs ansible com ansible latest dev guide developing modu
  • 如何使用ansible运行询问用户输入的脚本?

    我想使用 ansible 运行 shell 脚本 但 shell 脚本需要用户输入才能成功执行 例如 我的 shell 脚本询问唯一的 idossec agent 通过ansible我可以预定义我的unique id user input
  • Ansible:如何为Solaris设置全局路径

    我正在编写 Ansible 剧本来在 Solaris 服务器上设置和安装我们的应用程序 问题是我需要执行的 bash 脚本都假设某个目录位于 PATH 上 即 data bin 如果 Ansible 没有忽略所有这些 这通常不会成为问题 p
  • 有没有办法使用正则表达式来匹配ansible中的主机?

    我正在尝试使用正则表达式模式与 ansible 匹配主机 但它没有按预期工作 我的库存情况如下 group1 hello1 world1 hello2 world2 group2 hello3 而我的任务是 debug msg item w
  • 如何在microsoft windows下使用ansible克隆git存储库

    Ansible 2 1 centos7下控制主机 windows 10数量作为客户端 我需要在远程端克隆 git 存储库 但不知道如何执行此操作 没有Windows 本机模块 http docs ansible com ansible li
  • Ansible:对任务失败执行清理

    我目前正在编写一个 Ansible play 它遵循此通用格式并通过 cron 作业运行 pre tasks Configuration package installation tasks Work with installed pack
  • 有没有办法验证 Ansible Inventory 文件中组的主机数量?

    我的要求如下所示 我有一个 Ansible 库存文件 它根据如下所示的组件分为几个组 all node1 node2 node3 node4 webapp node3 node4 ui node1 如果条件失败 则有没有办法验证清单文件中组
  • 如何使用 Ansible 设置环境变量

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

随机推荐