#
# 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.
#
name: chef-mysql-sample
services:
- type: chef:mysql
  id: db
  
  cookbook_urls:
    # only needed for chef solo; URL can be local to brooklyn, or github, etc...
    mysql: https://github.com/opscode-cookbooks/mysql/archive/v4.0.12.tar.gz
    openssl: https://github.com/opscode-cookbooks/openssl/archive/v1.1.0.tar.gz
    build-essential: https://github.com/opscode-cookbooks/build-essential/archive/v1.4.4.tar.gz
    # NB: this also supports new style community url links, assuming TGZ and directory name,
    # (eg https://community.opscode.com/cookbooks/mysql/download) but github versioned links
    # are recommended because they point to a specific released version and explicit archive type
  
  launch_run_list: [ "mysql::server" ]
  launch_attributes:
    mysql:
      # these attrs are required by the mysql cookbook under node['mysql']
      server_root_password: $brooklyn:component("db").config("mysql.password")
      server_repl_password: $brooklyn:component("db").config("mysql.password")
      server_debian_password: $brooklyn:component("db").config("mysql.password")
      # many others are attrs are supported by the cookbook and can be passed here...
      
  # how to determine if the process is running and how to kill it
  # (supported options are `service_name` and `pid_file`; normally you should just pick one.
  # here we use the pid_file because the service_name varies, mysql on centos, mysqld on ubuntu!)
  #service_name: mysqld
  pid_file: /var/run/mysqld/mysqld.pid
    
brooklyn.config:
  mysql.password: p4ssw0rd
