[OpenStack]Deploy WordPress Using Heat

This is the HOT for WordPess deployment on top of OpenStack environment.

heat_template_version: 2014-09-06
 
description: >
  Heat Docker template using software deployments.
 
parameters:
 
  key_name:
    type: string
    description : Name of a KeyPair to enable SSH access to the instance
    default: heat
 
  instance_type:
    type: string
    description: Instance type for WordPress server
    default: m1.small
 
  image:
    type: string
    description: >
      Name or ID of the image to use for the Docker server.  This needs to be
      built with os-collect-config tools from a fedora base image.
 
resources:
  docker_sg:
    type: OS::Neutron::SecurityGroup
    properties:
      description: Ping, SSH, Docker
      rules:
      - protocol: icmp
      - protocol: tcp
        port_range_min: 22
        port_range_max: 22
      - protocol: tcp
        port_range_min: 80
        port_range_max: 80
      - protocol: tcp
        port_range_min: 2345
        port_range_max: 2345
 
  docker_config:
    type: OS::Heat::SoftwareConfig
    properties:
      group: script
      config: |
        #!/bin/bash -v
        setenforce 0
        yum -y install docker-io
        cp /usr/lib/systemd/system/docker.service /etc/systemd/system/
        sed -i -e '/ExecStart/ { s,fd://,tcp://0.0.0.0:2345, }' /etc/systemd/system/docker.service
        systemctl start docker.service
 
  docker_deployment:
    type: OS::Heat::SoftwareDeployment
    properties:
      config: {get_resource: docker_config}
      server: {get_resource: docker_host}
 
  docker_host:
    type: OS::Nova::Server
    properties:
      image: {get_param: image}
      flavor: {get_param: instance_type}
      key_name: {get_param: key_name}
      security_groups:
        - {get_resource: docker_sg}
      user_data_format: SOFTWARE_CONFIG
 
  database_password:
    type: OS::Heat::RandomString
 
  database:
    type: DockerInc::Docker::Container
    depends_on: [docker_deployment]
    properties:
      image: mysql
      name: db
      docker_endpoint:
        str_replace:
          template: http://host:2345/
          params:
            host: {get_attr: [docker_host, networks, private, 0]}
      env:
        - {str_replace: {template: MYSQL_ROOT_PASSWORD=password,
                         params: {password: {get_attr: [database_password, value]}}}}
 
  wordpress:
    type: DockerInc::Docker::Container
    depends_on: [database]
    properties:
      image: wordpress
      links:
        db: mysql
      port_bindings:
        80/tcp: [{"HostPort": "80"}]
      docker_endpoint:
        str_replace:
          template: http://host:2345/
          params:
            host: {get_attr: [docker_host, networks, private, 0]}
 
outputs:
  url:
    description: Public address of the web site
    value:
      str_replace:
        template: http://host/wordpress
        params:
          host: {get_attr: [docker_host, networks, private, 0]}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章