summaryrefslogtreecommitdiffstats
path: root/environments/puppet-ceph-devel.yaml
blob: a2d1100fda77a7bc4522bab776979414cb4f51c6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# A Heat environment file which can be used to enable a Ceph
# storage cluster using the controller and ceph nodes.
# Rbd backends are enabled for Cinder, Glance, Gnocchi and Nova.
parameter_defaults:
  #NOTE: These ID's and keys should be regenerated for
  # a production deployment. What is here is suitable for
  # developer and CI testing only.
  CephClusterFSID: '4b5c8c0a-ff60-454b-a1b4-9747aa737d19'
  CephMonKey: 'AQC+Ox1VmEr3BxAALZejqeHj50Nj6wJDvs96OQ=='
  CephAdminKey: 'AQDLOh1VgEp6FRAAFzT7Zw+Y9V6JJExQAsRnRQ=='
  NovaEnableRbdBackend: true
  CinderEnableRbdBackend: true
  GlanceBackend: rbd
  GnocchiBackend: rbd
  CinderEnableIscsiBackend: false
  ControllerEnableCephStorage: true
{ color: #f8f8f2 } /* Name.Builtin */ .highlight .nc { color: #a6e22e } /* Name.Class */ .highlight .no { color: #66d9ef } /* Name.Constant */ .highlight .nd { color: #a6e22e } /* Name.Decorator */ .highlight .ni { color: #f8f8f2 } /* Name.Entity */ .highlight .ne { color: #a6e22e } /* Name.Exception */ .highlight .nf { color: #a6e22e } /* Name.Function */ .highlight .nl { color: #f8f8f2 } /* Name.Label */ .highlight .nn { color: #f8f8f2 } /* Name.Namespace */ .highlight .nx { color: #a6e22e } /* Name.Other */ .highlight .py { color: #f8f8f2 } /* Name.Property */ .highlight .nt { color: #f92672 } /* Name.Tag */ .highlight .nv { color: #f8f8f2 } /* Name.Variable */ .highlight .ow { color: #f92672 } /* Operator.Word */ .highlight .w { color: #f8f8f2 } /* Text.Whitespace */ .highlight .mb { color: #ae81ff } /* Literal.Number.Bin */ .highlight .mf { color: #ae81ff } /* Literal.Number.Float */ .highlight .mh { color: #ae81ff } /* Literal.Number.Hex */ .highlight .mi { color: #ae81ff } /* Literal.Number.Integer */ .highlight .mo { color: #ae81ff } /* Literal.Number.Oct */ .highlight .sa { color: #e6db74 } /* Literal.String.Affix */ .highlight .sb { color: #e6db74 } /* Literal.String.Backtick */ .highlight .sc { color: #e6db74 } /* Literal.String.Char */ .highlight .dl { color: #e6db74 } /* Literal.String.Delimiter */ .highlight .sd { color: #e6db74 } /* Literal.String.Doc */ .highlight .s2 { color: #e6db74 } /* Literal.String.Double */ .highlight .se { color: #ae81ff } /* Literal.String.Escape */ .highlight .sh { color: #e6db74 } /* Literal.String.Heredoc */ .highlight .si { color: #e6db74 } /* Literal.String.Interpol */ .highlight .sx { color: #e6db74 } /* Literal.String.Other */ .highlight .sr { color: #e6db74 } /* Literal.String.Regex */ .highlight .s1 { color: #e6db74 } /* Literal.String.Single */ .highlight .ss { color: #e6db74 } /* Literal.String.Symbol */ .highlight .bp { color: #f8f8f2 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #a6e22e } /* Name.Function.Magic */ .highlight .vc { color: #f8f8f2 } /* Name.Variable.Class */ .highlight .vg { color: #f8f8f2 } /* Name.Variable.Global */ .highlight .vi { color: #f8f8f2 } /* Name.Variable.Instance */ .highlight .vm { color: #f8f8f2 } /* Name.Variable.Magic */ .highlight .il { color: #ae81ff } /* Literal.Number.Integer.Long */ } @media (prefers-color-scheme: light) { .highlight .hll { background-color: #ffffcc } .highlight .c { color: #888888 } /* Comment */ .highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ .highlight .k { color: #008800; font-weight: bold } /* Keyword */ .highlight .ch { color: #888888 } /* Comment.Hashbang */ .highlight .cm { color: #888888 } /* Comment.Multiline */ .highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */ .highlight .cpf { color: #888888 } /* Comment.PreprocFile */ .highlight .c1 { color: #888888 } /* Comment.Single */ .highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */ .highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ .highlight .ge { font-style: italic } /* Generic.Emph */ .highlight .gr { color: #aa0000 } /* Generic.Error */ .highlight .gh { color: #333333 } /* Generic.Heading */ .highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ .highlight .go { color: #888888 } /* Generic.Output */ .highlight .gp { color: #555555 } /* Generic.Prompt */ .highlight .gs { font-weight: bold } /* Generic.Strong */ .highlight .gu { color: #666666 } /* Generic.Subheading */ .highlight .gt { color: #aa0000 } /* Generic.Traceback */ .highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */ .highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */ .highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */ .highlight .kp { color: #008800 } /* Keyword.Pseudo */ .highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */ .highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */ .highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */ .highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */ .highlight .na { color: #336699 } /* Name.Attribute */ .highlight .nb { color: #003388 } /* Name.Builtin */ .highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */ .highlight .no { color: #003366; font-weight: bold } /* Name.Constant */ .highlight .nd { color: #555555 } /* Name.Decorator */ .highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */ .highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */ .highlight .nl { color: #336699; font-style: italic } /* Name.Label */ .highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */ .highlight .py { color: #336699; font-weight: bold } /* Name.Property */ .highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #336699 } /* Name.Variable */ .highlight .ow { color: #008800 } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */ }
heat_template_version: 2015-04-30
description: 'All Nodes Config for Puppet'

parameters:
  compute_hosts:
    type: comma_delimited_list
  controller_hosts:
    type: comma_delimited_list
  controller_ips:
    type: comma_delimited_list
  block_storage_hosts:
    type: comma_delimited_list
  object_storage_hosts:
    type: comma_delimited_list
  ceph_storage_hosts:
    type: comma_delimited_list
  controller_names:
    type: comma_delimited_list
  rabbit_node_ips:
    type: comma_delimited_list
  mongo_node_ips:
    type: comma_delimited_list
  redis_node_ips:
    type: comma_delimited_list
  memcache_node_ips:
    type: comma_delimited_list
  mysql_node_ips:
    type: comma_delimited_list
  horizon_node_ips:
    type: comma_delimited_list
  heat_api_node_ips:
    type: comma_delimited_list
  swift_proxy_node_ips:
    type: comma_delimited_list
  ceilometer_api_node_ips:
    type: comma_delimited_list
  aodh_api_node_ips:
    type: comma_delimited_list
  nova_api_node_ips:
    type: comma_delimited_list
  nova_metadata_node_ips:
    type: comma_delimited_list
  glance_api_node_ips:
    type: comma_delimited_list
  glance_registry_node_ips:
    type: comma_delimited_list
  gnocchi_api_node_ips:
    type: comma_delimited_list
  cinder_api_node_ips:
    type: comma_delimited_list
  neutron_api_node_ips:
    type: comma_delimited_list
  keystone_public_api_node_ips:
    type: comma_delimited_list
  keystone_admin_api_node_ips:
    type: comma_delimited_list
  sahara_api_node_ips:
    type: comma_delimited_list

  DeployIdentifier:
    type: string
    description: >
      Setting this to a unique value will re-run any deployment tasks which
      perform configuration on a Heat stack-update.
  UpdateIdentifier:
    type: string
    description: >
      Setting to a previously unused value during stack-update will trigger
      package update on all nodes
  StackAction:
    type: string
    description: >
      Heat action on performed top-level stack.
    constraints:
    - allowed_values: ['CREATE', 'UPDATE']

resources:

  allNodesConfigImpl:
    type: OS::Heat::StructuredConfig
    properties:
      group: os-apply-config
      config:
        hosts:
          list_join:
          - "\n"
          - - list_join:
              - "\n"
              - {get_param: compute_hosts}
            - list_join:
              - "\n"
              - {get_param: controller_hosts}
            - list_join:
              - "\n"
              - {get_param: block_storage_hosts}
            - list_join:
              - "\n"
              - {get_param: object_storage_hosts}
            - list_join:
              - "\n"
              - {get_param: ceph_storage_hosts}
        hiera:
          datafiles:
            RedHat:
              raw_data: {get_file: hieradata/RedHat.yaml}
            all_nodes:
              mapped_data:
                controller_node_ips:
                  list_join:
                  - ','
                  - {get_param: controller_ips}
                controller_node_names:
                  list_join:
                  - ','
                  - {get_param: controller_names}
                galera_node_names:
                  list_join:
                  - ','
                  - {get_param: controller_names}
                rabbit_node_ips: &rabbit_nodes_array
                  str_replace:
                    template: "['SERVERS_LIST']"
                    params:
                      SERVERS_LIST:
                        list_join:
                        - "','"
                        - {get_param: rabbit_node_ips}
                mongo_node_ips:
                  str_replace:
                    template: "['SERVERS_LIST']"
                    params:
                      SERVERS_LIST:
                        list_join:
                        - "','"
                        - {get_param: mongo_node_ips}
                redis_node_ips:
                  str_replace:
                    template: "['SERVERS_LIST']"
                    params:
                      SERVERS_LIST:
                        list_join:
                        - "','"
                        - {get_param: redis_node_ips}
                memcache_node_ips:
                  str_replace:
                    template: "['SERVERS_LIST']"
                    params:
                      SERVERS_LIST:
                        list_join:
                        - "','"
                        - {get_param: memcache_node_ips}
                memcache_node_ips_v6:
                  str_replace:
                    template: "['inet6:[SERVERS_LIST]']"
                    params:
                      SERVERS_LIST:
                        list_join:
                        - "]','inet6:["
                        - {get_param: memcache_node_ips}
                mysql_node_ips:
                  str_replace:
                    template: "['SERVERS_LIST']"
                    params:
                      SERVERS_LIST:
                        list_join:
                        - "','"
                        - {get_param: mysql_node_ips}
                horizon_node_ips:
                  str_replace:
                    template: "['SERVERS_LIST']"
                    params:
                      SERVERS_LIST:
                        list_join:
                        - "','"
                        - {get_param: horizon_node_ips}
                heat_api_node_ips:
                  str_replace:
                    template: "['SERVERS_LIST']"
                    params:
                      SERVERS_LIST:
                        list_join:
                        - "','"
                        - {get_param: heat_api_node_ips}
                swift_proxy_node_ips:
                  str_replace:
                    template: "['SERVERS_LIST']"
                    params:
                      SERVERS_LIST:
                        list_join:
                        - "','"
                        - {get_param: swift_proxy_node_ips}
                ceilometer_api_node_ips:
                  str_replace:
                    template: "['SERVERS_LIST']"
                    params:
                      SERVERS_LIST:
                        list_join:
                        - "','"
                        - {get_param: ceilometer_api_node_ips}
                aodh_api_node_ips:
                  str_replace:
                    template: "['SERVERS_LIST']"
                    params:
                      SERVERS_LIST:
                        list_join:
                        - "','"
                        - {get_param: aodh_api_node_ips}
                gnocchi_api_node_ips:
                  str_replace:
                    template: "['SERVERS_LIST']"
                    params:
                      SERVERS_LIST:
                        list_join:
                        - "','"
                        - {get_param: gnocchi_api_node_ips}
                nova_api_node_ips:
                  str_replace:
                    template: "['SERVERS_LIST']"
                    params:
                      SERVERS_LIST:
                        list_join:
                        - "','"
                        - {get_param: nova_api_node_ips}
                nova_metadata_node_ips:
                  str_replace:
                    template: "['SERVERS_LIST']"
                    params:
                      SERVERS_LIST:
                        list_join:
                        - "','"
                        - {get_param: nova_metadata_node_ips}
                glance_api_node_ips:
                  str_replace:
                    template: "['SERVERS_LIST']"
                    params:
                      SERVERS_LIST:
                        list_join:
                        - "','"
                        - {get_param: glance_api_node_ips}
                glance_registry_node_ips:
                  str_replace:
                    template: "['SERVERS_LIST']"
                    params:
                      SERVERS_LIST:
                        list_join:
                        - "','"
                        - {get_param: glance_registry_node_ips}
                cinder_api_node_ips:
                  str_replace:
                    template: "['SERVERS_LIST']"
                    params:
                      SERVERS_LIST:
                        list_join:
                        - "','"
                        - {get_param: cinder_api_node_ips}
                neutron_api_node_ips:
                  str_replace:
                    template: "['SERVERS_LIST']"
                    params:
                      SERVERS_LIST:
                        list_join:
                        - "','"
                        - {get_param: neutron_api_node_ips}
                # TODO: pass a `midonet_api_node_ips` var
                midonet_api_node_ips:
                  str_replace:
                    template: "['SERVERS_LIST']"
                    params:
                      SERVERS_LIST:
                        list_join:
                        - "','"
                        - {get_param: neutron_api_node_ips}
                keystone_public_api_node_ips:
                  str_replace:
                    template: "['SERVERS_LIST']"
                    params:
                      SERVERS_LIST:
                        list_join:
                        - "','"
                        - {get_param: keystone_public_api_node_ips}
                keystone_admin_api_node_ips:
                  str_replace:
                    template: "['SERVERS_LIST']"
                    params:
                      SERVERS_LIST:
                        list_join:
                        - "','"
                        - {get_param: keystone_admin_api_node_ips}
                sahara_api_node_ips:
                  str_replace:
                    template: "['SERVERS_LIST']"
                    params:
                      SERVERS_LIST:
                        list_join:
                        - "','"
                        - {get_param: sahara_api_node_ips}

                # NOTE(gfidente): interpolation with %{} in the
                # hieradata file can't be used as it returns string
                ceilometer::rabbit_hosts: *rabbit_nodes_array
                aodh::rabbit_hosts: *rabbit_nodes_array
                cinder::rabbit_hosts: *rabbit_nodes_array
                glance::notify::rabbitmq::rabbit_hosts: *rabbit_nodes_array
                heat::rabbit_hosts: *rabbit_nodes_array
                neutron::rabbit_hosts: *rabbit_nodes_array
                nova::rabbit_hosts: *rabbit_nodes_array
                keystone::rabbit_hosts: *rabbit_nodes_array
                sahara::rabbit_hosts: *rabbit_nodes_array

                deploy_identifier: {get_param: DeployIdentifier}
                update_identifier: {get_param: UpdateIdentifier}
                stack_action: {get_param: StackAction}

outputs:
  config_id:
    description: The ID of the allNodesConfigImpl resource.
    value:
      {get_resource: allNodesConfigImpl}
  hosts_entries:
    description: |
      The content that should be appended to your /etc/hosts if you want to get
      hostname-based access to the deployed nodes (useful for testing without
      setting up a DNS).
    value: {get_attr: [allNodesConfigImpl, config, hosts]}