sgw-vm-init.tpl 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #cloud-config
  2. datasource:
  3. Ec2:
  4. strict_id: false
  5. ssh_pwauth: yes
  6. users:
  7. - name: "${ADMIN_NAME}"
  8. sudo: ALL=(ALL) NOPASSWD:ALL
  9. shell: /bin/bash
  10. ssh-authorized-keys:
  11. - "${ADMIN_SSH_KEY}"
  12. write_files:
  13. - content: |
  14. #!/bin/bash
  15. usermod -a -G docker ${ADMIN_NAME}
  16. # Get strongSwan container image version (tag)
  17. SWAN_VER=$(docker image ls strongswan --format "{{.Tag}}")
  18. # Create SGW container
  19. docker create --name=strongswan --hostname=strongswan --network=host \
  20. --cap-add=NET_ADMIN --cap-add=SYS_ADMIN --cap-add=SYS_MODULE \
  21. --env REMOTE_SGW_IP="${REMOTE_SGW_IP}" \
  22. --env POLICY_NAME="${POLICY_NAME}" \
  23. --env IKE_PROPOSAL="${IKE_PROPOSAL}" \
  24. --env ESP_PROPOSAL="${ESP_PROPOSAL}" \
  25. --env PSK="${PSK}" \
  26. strongswan:$SWAN_VER
  27. docker start strongswan
  28. # Add ip routes via ipsec0 tunnel
  29. rlist="${ROUTE_LIST}"
  30. IFS=';'; IN=($rlist); unset IFS;
  31. for r in "$${IN[@]}" ;
  32. do
  33. echo $r | tee -a /etc/rc.local
  34. echo $r | tee -a /root/add-routes.sh
  35. done
  36. # Prepare a shared volume for both containers
  37. mkdir -p /opt/webhc
  38. mount -t tmpfs tmpfs /opt/webhc -o size=1m
  39. # Create Web-HC container
  40. WEBHC_VER=$(docker image ls web-hc --format "{{.Tag}}")
  41. docker create --name=web-hc --hostname=web-hc \
  42. --network=host \
  43. --volume=/opt/webhc:/var/www/local \
  44. web-hc:$WEBHC_VER
  45. docker start web-hc
  46. # Schedule the IPsec tunnel status checker
  47. (echo "#* * * * * docker exec -it strongswan swanctl --list-conns | head -1 | awk '{split($0,a,":"); print a[1]}' | grep -q INSTALLED && touch /opt/webhc/status-ok || rm -f /opt/webhc/status-ok\"") | crontab -
  48. path: "/root/sgw-init.sh"
  49. permissions: "0740"
  50. runcmd:
  51. - sleep 1
  52. - sudo -i
  53. - /root/sgw-init.sh
  54. - chmod +x /root/add-routes.sh
  55. - /root/add-routes.sh