summaryrefslogtreecommitdiffstats
path: root/moonclient
diff options
context:
space:
mode:
Diffstat (limited to 'moonclient')
0 files changed, 0 insertions, 0 deletions
4 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
heat_template_version: pike

description: >
  MySQL service deployment using puppet

parameters:
  DockerNamespace:
    description: namespace
    default: 'tripleoupstream'
    type: string
  DockerMysqlImage:
    description: image
    default: 'centos-binary-mariadb:latest'
    type: string
  EndpointMap:
    default: {}
    description: Mapping of service endpoint -> protocol. Typically set
                 via parameter_defaults in the resource registry.
    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
  MysqlRootPassword:
    type: string
    hidden: true
    default: ''

resources:

  MysqlPuppetBase:
    type: ../../../puppet/services/database/mysql.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: Containerized service MySQL using composable services.
    value:
      service_name: {get_attr: [MysqlPuppetBase, role_data, service_name]}
      config_settings:
        map_merge:
          - {get_attr: [MysqlPuppetBase, role_data, config_settings]}
          # Set PID file to what kolla mariadb bootstrap script expects
          - tripleo::profile::base::database::mysql::mysql_server_options:
              mysqld:
                pid-file: /var/lib/mysql/mariadb.pid
              mysqld_safe:
                pid-file: /var/lib/mysql/mariadb.pid
      step_config: &step_config
        list_join:
          - "\n"
          - - "['Mysql_datadir', 'Mysql_user', 'Mysql_database', 'Mysql_grant', 'Mysql_plugin'].each |String $val| { noop_resource($val) }"
            - {get_attr: [MysqlPuppetBase, role_data, step_config]}
      # BEGIN DOCKER SETTINGS #
      puppet_config:
        config_volume: mysql
        puppet_tags: file # set this even though file is the default
        step_config: *step_config
        config_image: &mysql_image
          list_join:
            - '/'
            - [ {get_param: DockerNamespace}, {get_param: DockerMysqlImage} ]
      kolla_config:
        /var/lib/kolla/config_files/mysql.json:
          command: /usr/bin/mysqld_safe
          permissions:
            - path: /var/lib/mysql
              owner: mysql:mysql
              recurse: true
      docker_config:
        # Kolla_bootstrap runs before permissions set by kolla_config
        step_2:
          mysql_init_logs:
            start_order: 0
            image: *mysql_image
            privileged: false
            user: root
            volumes:
              - /var/log/containers/mysql:/var/log/mariadb
            command: ['/bin/bash', '-c', 'chown -R mysql:mysql /var/log/mariadb']
          mysql_bootstrap:
            start_order: 1
            detach: false
            image: *mysql_image
            net: host
            # Kolla bootstraps aren't idempotent, explicitly checking if bootstrap was done
            command: ['bash', '-c', 'test -e /var/lib/mysql/mysql || kolla_start']
            volumes: &mysql_volumes
              - /var/lib/kolla/config_files/mysql.json:/var/lib/kolla/config_files/config.json
              - /var/lib/config-data/mysql/etc/my.cnf.d:/etc/my.cnf.d:ro
              - /etc/localtime:/etc/localtime:ro
              - /etc/hosts:/etc/hosts:ro
              - /var/lib/mysql:/var/lib/mysql
              - /var/log/containers/mysql:/var/log/mariadb
            environment:
              - KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
              - KOLLA_BOOTSTRAP=True
              # NOTE(mandre) skip wsrep cluster status check
              - KOLLA_KUBERNETES=True
              -
                list_join:
                  - '='
                  - - 'DB_ROOT_PASSWORD'
                    -
                      yaql:
                        expression: $.data.passwords.where($ != '').first()
                        data:
                          passwords:
                            - {get_param: MysqlRootPassword}
                            - {get_param: [DefaultPasswords, mysql_root_password]}
          mysql:
            start_order: 2
            image: *mysql_image
            restart: always
            net: host
            volumes: *mysql_volumes
            environment:
              - KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
      docker_puppet_tasks:
        # MySQL database initialization occurs only on single node
        step_2:
          config_volume: 'mysql_init_tasks'
          puppet_tags: 'mysql_database,mysql_grant,mysql_user'
          step_config: 'include ::tripleo::profile::base::database::mysql'
          config_image: *mysql_image
          volumes:
            - /var/lib/mysql:/var/lib/mysql/:ro
            - /var/log/containers/mysql:/var/log/mariadb
            - /var/lib/config-data/mysql/root:/root:ro #provides .my.cnf
      host_prep_tasks:
        - name: create persistent directories
          file:
            path: "{{ item }}"
            state: directory
          with_items:
            - /var/log/containers/mysql
            - /var/lib/mysql
      upgrade_tasks:
        - name: Stop and disable mysql service
          tags: step2
          service: name=mariadb state=stopped enabled=no