--- - name: Install Pip tags: swagger yum: name=python-pip state=present - name: Install PyYAML tags: swagger pip: name=pyYAML state=latest - name: Install Apache tags: swagger yum: name={{ item }} state=present with_items: - httpd - mod_ssl - name: Config Apache Up and Running tags: swagger service: name=httpd enabled=yes state=started - name: Create /tmp/swagger folder tags: swagger file: path=/tmp/swagger state=directory - name: Get swagger-ui distro tar tags: swagger shell: > curl -L https://api.github.com/repos/swagger-api/swagger-ui/tarball | tar xz -C /tmp/swagger --strip-components 1 - name: Create swagger directories tags: swagger file: path=/var/www/html/{{ item.name }} state=directory owner=root group=root mode=0755 with_items: swagger_docs - name: Transfer dist files to each dedicated dir at /var/www/html/ tags: swagger shell: cp -R /tmp/swagger/dist/* /var/www/html/{{ item.name }} with_items: swagger_docs - name: Get latest swagger.yaml definition files tags: swagger get_url: url=https://raw.githubusercontent.com/{{ item.github_org }}/{{ item.name }}/{{ item.branch }}/{{ item.path_to_yaml }} dest=/tmp/swagger/{{ item.name }}_swagger.yaml force=yes owner=root group=root mode=0644 with_items: swagger_docs notify: restart apache - name: Convert swagger.yaml to swagger.json tags: swagger shell: > python -c 'import sys, yaml, json; json.dump(yaml.load(sys.stdin), sys.stdout, indent=4)' < /tmp/swagger/{{ item.name }}_swagger.yaml > /var/www/html/{{ item.name }}/swagger.json with_items: swagger_docs - name: Make swagger.json point to corresponding api endpoint tags: swagger lineinfile: > dest=/var/www/html/{{ item.name }}/swagger.json regexp='( +)\"host\":\ \"(.+)\"\,' line=' \"host\": \"{{ item.api_host }}\",' state=present backup=yes with_items: swagger_docs notify: restart apache - name: Point swagger-ui to corresponding swagger definitions on host tags: swagger replace: dest=/var/www/html/{{ item.name }}/index.html regexp='url = "http:\/\/petstore\.swagger\.io\/v2\/swagger\.json";' replace='url = "https://{{ inventory_hostname }}/{{ item.name }}/swagger.json";' backup=yes with_items: swagger_docs