summaryrefslogtreecommitdiffstats
path: root/vstf/install.sh
AgeCommit message (Expand)AuthorFilesLines
2015-12-22 Upload the contribution of vstf as bottleneck network framework.Yiting.Li1-0/+39
'>41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168
heat_template_version: pike

description: >
  OpenStack containerized EC2 API service

parameters:
  DockerEc2ApiImage:
    description: image
    type: string
  DockerEc2ApiConfigImage:
    description: The container image to use for the ec2_api config_volume
    type: string
  EndpointMap:
    default: {}
    description: Mapping of service endpoint -> protocol. Typically set
                 via parameter_defaults in the resource registry.
    type: json
  ServiceData:
    default: {}
    description: Dictionary packing service data
    type: json
  ServiceNetMap:
    default: {}
    description: Mapping of service_name -> network name. Typically set
                 via parameter_defaults in the resource registry.  This
                 mapping overrides those in ServiceNetMapDefaults.
    type: json
  DefaultPasswords:
    default: {}
    type: json
  RoleName:
    default: ''
    description: Role name on which the service is applied
    type: string
  RoleParameters:
    default: {}
    description: Parameters specific to the role
    type: json

resources:

  ContainersCommon:
    type: ./containers-common.yaml

  MySQLClient:
    type: ../../puppet/services/database/mysql-client.yaml

  Ec2ApiPuppetBase:
      type: ../../puppet/services/ec2-api.yaml
      properties:
        EndpointMap: {get_param: EndpointMap}
        ServiceNetMap: {get_param: ServiceNetMap}
        DefaultPasswords: {get_param: DefaultPasswords}
        RoleName: {get_param: RoleName}
        RoleParameters: {get_param: RoleParameters}

outputs:
  role_data:
    description: Role data for the EC2 API role.
    value:
      service_name: {get_attr: [Ec2ApiPuppetBase, role_data, service_name]}
      config_settings: {get_attr: [Ec2ApiPuppetBase, role_data, config_settings]}
      step_config: &step_config
        list_join:
          - "\n"
          - - {get_attr: [Ec2ApiPuppetBase, role_data, step_config]}
            - {get_attr: [MySQLClient, role_data, step_config]}
      service_config_settings: {get_attr: [Ec2ApiPuppetBase, role_data, service_config_settings]}
      # BEGIN DOCKER SETTINGS
      puppet_config:
        config_volume: ec2_api
        puppet_tags: ec2api_api_paste_ini,ec2api_config
        step_config: *step_config
        config_image: {get_param: DockerEc2ApiConfigImage}
      kolla_config:
        /var/lib/kolla/config_files/ec2_api.json:
          command: /usr/bin/ec2-api
          config_files:
            - source: "/var/lib/kolla/config_files/src/*"
              dest: "/"
              merge: true
              preserve_properties: true
          permissions:
            - path: /var/log/ec2api
              owner: ec2api:ec2api
              recurse: true
        /var/lib/kolla/config_files/ec2_api_metadata.json:
          command: /usr/bin/ec2-api-metadata
          config_files:
            - source: "/var/lib/kolla/config_files/src/*"
              dest: "/"
              merge: true
              preserve_properties: true
          permissions:
            - path: /var/log/ec2api # default log dir for metadata service as well
              owner: ec2api:ec2api
              recurse: true
      docker_config:
        # db sync runs before permissions set by kolla_config
        step_2:
          ec2_api_init_logs:
            image: &ec2_api_image {get_param: DockerEc2ApiImage}
            privileged: false
            user: root
            volumes:
              - /var/log/containers/ec2_api:/var/log/ec2api
              # mount ec2_api_metadata to "ec2api-metadata" only here to fix
              # permissions of both directories in one go
              - /var/log/containers/ec2_api_metadata:/var/log/ec2api-metadata
            command: ['/bin/bash', '-c', 'chown -R ec2api:ec2api /var/log/ec2api /var/log/ec2api-metadata']
        step_3:
          ec2_api_db_sync:
            image: *ec2_api_image
            net: host
            detach: false
            privileged: false
            user: root
            volumes:
              list_concat:
                - {get_attr: [ContainersCommon, volumes]}
                -
                  - /var/lib/config-data/ec2_api/etc/ec2api/:/etc/ec2api/:ro
                  - /var/log/containers/ec2_api:/var/log/ec2api
            command: "/usr/bin/bootstrap_host_exec ec2_api su ec2api -s /bin/bash -c '/usr/bin/ec2-api-manage db_sync'"
        step_4:
          ec2_api:
            image: *ec2_api_image
            net: host
            privileged: false
            restart: always
            volumes:
              list_concat:
                - {get_attr: [ContainersCommon, volumes]}
                -
                  - /var/lib/kolla/config_files/ec2_api.json:/var/lib/kolla/config_files/config.json:ro
                  - /var/lib/config-data/puppet-generated/ec2_api/:/var/lib/kolla/config_files/src:ro
                  - /var/log/containers/ec2_api:/var/log/ec2api
            environment:
              - KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
          ec2_api_metadata:
            image: *ec2_api_image
            net: host
            privileged: false
            restart: always
            volumes:
              list_concat:
                - {get_attr: [ContainersCommon, volumes]}
                -
                  - /var/lib/kolla/config_files/ec2_api_metadata.json:/var/lib/kolla/config_files/config.json:ro
                  - /var/lib/config-data/puppet-generated/ec2_api/:/var/lib/kolla/config_files/src:ro
                  - /var/log/containers/ec2_api_metadata:/var/log/ec2api
            environment:
              - KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
      host_prep_tasks:
        - name: create persistent log directories
          file:
            path: /var/log/containers/{{ item }}
            state: directory
          with_items:
            - ec2_api
            - ec2_api_metadata
      upgrade_tasks:
        - name: Stop and disable EC2-API services
          tags: step2
          service: name={{ item }} state=stopped enabled=no
          with_items:
            - openstack-ec2-api
            - openstack-ec2-api-metadata