启动 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