我有一个这样的清单:
[all:vars]
env_cidr_prefix='172.25'
antother_var="foo"
[VPN_SERVER]
vpn-server ansible_host="{{ env_cidr_prefix}}.0.1"
在ansible playbook期间,库存只保存私有ip地址。我不想用公共ip替换“ansible_host=”
的内容
- name: grab the vpn public_ip
set_fact: PUBLIC_IP="{{ instance_eip.public_ip }}"
when: inventory_hostname |search("vpn-server")
- name: update inventory with the vpn public ip
replace:
path: "{{ inventory_file }}"
regexp: "{{ ansible_host }}"
replace: "{{ PUBLIC_IP }}"
when: inventory_hostname |search("vpn-server")
ansible_host="172.25.0.1"
ansible_host="{{ env_cidr_prefix}}.0.1"
ok: [vpn-server] => {
"changed": false,
"invocation": {
"module_args": {
"after": null,
"attributes": null,
"backup": false,
"before": null,
"content": null,
"delimiter": null,
"directory_mode": null,
"encoding": "utf-8",
"follow": false,
"force": null,
"group": null,
"mode": null,
"owner": null,
"path": "/home/toluna/ansible/openvpn/env.properties",
"regexp": "172.25.0.11",
"remote_src": null,
"replace": "1.1.1.1",
"selevel": null,
"serole": null,
"setype": null,
"seuser": null,
"src": null,
"unsafe_writes": null,
"validate": null
}
},
"msg": ""
}
注意,我不能使用add_host
模块,因为剧本在不同的阶段运行
有没有更好的方法做这件事?谢谢
好的,经过测试,我想我明白你想要实现什么。
这里有几个部分:
库存文件如下所示:
vpn-server ansible_host="{{ env_cidr_prefix}}.0.1"
- name : Test
hosts: "{{ variable_vpn_ip | default('vpn-server') }}"
并将其称为从一个您将特别更改的变量中读取,或者:
ansible-playbook play.yml -e "variable_vpn_ip=172.25.0.1"
我试图使用多个清单文件和动态清单与Ansible1.4和开发。Ansible返回不匹配的主机。 我有一个模拟的场景,在一个目录中有两个主机文件测试,目录的内容被列出。
正确的方法是什么?
目前,我正在使用执行以下操作: 如果我想从我的项目中移除依赖项,那么使用标准JRE库的的工作和最小化实现是什么呢? 注: 的工作方式如下: resolvedString=“敏捷的棕色狐狸跳过了懒惰的狗。”
问题内容: 目前,我正在这样做: 考虑到我想从项目中删除依赖的事实,使用标准JRE库将是一种可行且简单的实现方式吗? 注意事项 : 像这样工作: 产生resolveString =“快速的棕狐跳过了懒狗。 问题答案: 如果性能不是优先事项,则 可以使用类的方法: 一个更高性能但更丑陋的版本,只是为了好玩:) 根据我的测试,它大约是regex版本的2倍,比apache commons版本的3倍快。因
我正在使用Ansible来设置EC2实例并部署一个应用程序。有一个hosts脚本,它收集标签、相关服务器和分组信息。我想把这些动作作为一个剧本来运行,所以 如果需要,将创建新实例 主机脚本加载清单(包括服务器的事实) 部署剧本有效 但我还没找到一个命令让它翻倍。
问题内容: 如果给定其他配置文件,则rebar不会自动重建文件。因此,我尝试在Makefile级别上执行此操作: 希望的意图很明显:当我使用需要特定配置文件的目标时,请检查上次是否使用了相同的文件;运行并记录我们现在使用的配置。 但这不起作用,并且文件会不断重新编译: 尽管config.tmp包含“ normal”: 我想念什么? 问题答案: 在定义变量时,您缺少用于实际调用外部程序的部分。