2014-04-27 3 views
1

내가 사용하는 IP 주소 목록에서 포트 80에 연결을 허용하도록 Ansible UFW을 구성하려면 :with_items를 사용하여 여러 명령을 실행하려면 어떻게해야합니까?

tasks: 
    - name: Allow port 80 HTTP 
     action: shell ufw allow from {{item}} to any 80/tcp 
     with_items: allowed_ips 

IP의 목록은 내 작전의 vars/ 디렉토리에하는 ​​YAML 파일의 해시로 저장됩니다 주소 :

나는 명령에 IP 주소를 끌어 with_items을 사용하고 있지만 Ansible이 작전을 실행 할 때마다 IP 사이에 공백 삽입, IP 주소를 연결합니다
--- 
allowed_ips: 
    xxx.xxx.xxx.xxx 
    xxx.xxx.xxx.xxx 

:

ufw allow from xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx to any 80/tcp 

ufw은이 구문을 허용하지 않으므로 ufw을 각 IP 주소에 대해 한 번 실행하고 싶습니다. 어떻게해야합니까?

답변

2

현재 allowed_ips은 목록이 아닌 하나의 변수로 작동합니다. allowed_ips 목록에있는 항목이있는 한

--- 
allowed_ips: 
    - xxx.xxx.xxx.xxx 
    - xxx.xxx.xxx.xxx 

이제 작업이 실행되는 여러 번 : 변수에게 YAML 목록을 확인합니다.

5

Ansible 1.6에는 ufw을 관리하는 모듈이 있습니다. http://docs.ansible.com/ufw_module.html 달성하려는 목록을 지원합니다.

ufw: rule=allow src={{ item }} port=80 proto=tcp 
with_items: 
- 10.0.0.0/8 
- 172.16.0.0/12 
- 192.168.0.0/16 

다른 방법으로, ufw의 역할을 사용할 준비가 몇있다 https://galaxy.ansible.com을 시도 할 수 있습니다, 그 중 일부는 또한 IP 목록을 지원합니다.

관련 문제