#
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#

---
- include: pga-single-vhost.yml vars_dir="{{ inventory_dir }}/pga_config/accord"
- include: pga-single-vhost.yml vars_dir="{{ inventory_dir }}/pga_config/brandeis"
- include: pga-single-vhost.yml vars_dir="{{ inventory_dir }}/pga_config/gatech"
- include: pga-single-vhost.yml vars_dir="{{ inventory_dir }}/pga_config/georgiastate"
- include: pga-single-vhost.yml vars_dir="{{ inventory_dir }}/pga_config/iugateway"
- include: pga-single-vhost.yml vars_dir="{{ inventory_dir }}/pga_config/lsu"
- include: pga-single-vhost.yml vars_dir="{{ inventory_dir }}/pga_config/nanoconfinement"
- include: pga-single-vhost.yml vars_dir="{{ inventory_dir }}/pga_config/nanoshape"
- include: pga-single-vhost.yml vars_dir="{{ inventory_dir }}/pga_config/newmexicostate"
- include: pga-single-vhost.yml vars_dir="{{ inventory_dir }}/pga_config/nsg"
#- include: pga-single-vhost.yml vars_dir="{{ inventory_dir }}/pga_config/oiitandy"
- include: pga-single-vhost.yml vars_dir="{{ inventory_dir }}/pga_config/oscer"
- include: pga-single-vhost.yml vars_dir="{{ inventory_dir }}/pga_config/phasta"
- include: pga-single-vhost.yml vars_dir="{{ inventory_dir }}/pga_config/scigap"
- include: pga-single-vhost.yml vars_dir="{{ inventory_dir }}/pga_config/seagrid"
- include: pga-single-vhost.yml vars_dir="{{ inventory_dir }}/pga_config/simvascular"
- include: pga-single-vhost.yml vars_dir="{{ inventory_dir }}/pga_config/southdakota"
- include: pga-single-vhost.yml vars_dir="{{ inventory_dir }}/pga_config/southernillinois"
- include: pga-single-vhost.yml vars_dir="{{ inventory_dir }}/pga_config/testdrive"
- include: pga-single-vhost.yml vars_dir="{{ inventory_dir }}/pga_config/uab"
- include: pga-single-vhost.yml vars_dir="{{ inventory_dir }}/pga_config/ultrascan"
#- include: pga-single-vhost.yml vars_dir="{{ inventory_dir }}/pga_config/utah"
- include: pga-single-vhost.yml vars_dir="{{ inventory_dir }}/pga_config/wvsu"
- include: pga-single-vhost.yml vars_dir="{{ inventory_dir }}/pga_config/iugeosurvey"
- include: pga-single-vhost.yml vars_dir="{{ inventory_dir }}/pga_config/csbglsu"
- include: pga-single-vhost.yml vars_dir="{{ inventory_dir }}/pga_config/NCSAIndustry"
- include: pga-single-vhost.yml vars_dir="{{ inventory_dir }}/pga_config/Kentucky"
- include: pga-single-vhost.yml vars_dir="{{ inventory_dir }}/pga_config/searchingSRA"
- include: pga-single-vhost.yml vars_dir="{{ inventory_dir }}/pga_config/r-hpc"
- include: pga-single-vhost.yml vars_dir="{{ inventory_dir }}/pga_config/rutgersgemr"
- include: pga-single-vhost.yml vars_dir="{{ inventory_dir }}/pga_config/nexttdb"
- include: pga-single-vhost.yml vars_dir="{{ inventory_dir }}/pga_config/interactwel"
- include: pga-single-vhost.yml vars_dir="{{ inventory_dir }}/pga_config/hubzero"
- include: pga-single-vhost.yml vars_dir="{{ inventory_dir }}/pga_config/epwgateway"
- include: pga-single-vhost.yml vars_dir="{{ inventory_dir }}/pga_config/ampgateway"
- include: pga-single-vhost.yml vars_dir="{{ inventory_dir }}/pga_config/hubzero"
- include: pga-single-vhost.yml vars_dir="{{ inventory_dir }}/pga_config/saverx"
...
