aboutsummaryrefslogtreecommitdiffstats
path: root/ceph-storage.yaml
blob: ecb47f268631fd8d9a3a289cc48033731b8fb5c8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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
heat_template_version: 2015-04-30
description: 'Common Ceph Storage Configuration'
parameters:
  Image:
    type: string
    default: overcloud-ceph-storage
  KeyName:
    default: default
    description: Name of an existing EC2 KeyPair to enable SSH access to the instances
    type: string
  Flavor:
    default: baremetal
    description: Flavor for block storage nodes to request when deploying.
    type: string
  CephClusterFSID:
    default: ''
    type: string
    description: The Ceph cluster FSID. Must be a UUID.
  CephMonKey:
    default: ''
    description: The Ceph monitors key. Can be created with ceph-authtool --gen-print-key.
    type: string
  CephAdminKey:
    default: ''
    description: The Ceph admin client key. Can be created with ceph-authtool --gen-print-key.
    type: string
  CephMonitors:
    default: ''
    description: The list of ip/names to use as Ceph monitors
    type: json

resources:
  CephStorage:
    type: OS::Nova::Server
    properties:
      image:
        {get_param: Image}
      flavor: {get_param: OvercloudCephStorageFlavor}
      key_name: {get_param: KeyName}
      networks:
        - network: ctlplane
      user_data_format: SOFTWARE_CONFIG
      user_data: {get_resource: NodeUserData}

  NodeUserData:
    type: OS::TripleO::NodeUserData

  NetworkConfig:
    type: OS::TripleO::CephStorage::Net::SoftwareConfig

  NetworkDeployment:
    type: OS::TripleO::SoftwareDeployment
    properties:
      config: {get_attr: [NetworkConfig, config_id]}
      server: {get_resource: CephStorage}

  CephStorageDeployment:
    type: OS::Heat::StructuredDeployment
    properties:
      server: {get_resource: CephStorage}
      config: {get_resource: CephStorageConfig}
      signal_transport: NO_SIGNAL
  CephStorageConfig:
    type: OS::Heat::StructuredConfig
    properties:
      group: os-apply-config
      config:
        ceph:
          fsid: {get_param: CephClusterFSID}
          keyrings:
            admin:
              key: {get_param: CephAdminKey}
          mon_nodes: {get_param: CephMonitors}
  ControllerCephDeployment:
    type: OS::Heat::StructuredDeployment
    properties:
      server: {get_resource: Controller}
      config: {get_resource: ControllerCephConfig}
      signal_transport: NO_SIGNAL
  ControllerCephConfig:
    type: OS::Heat::StructuredConfig
    properties:
      group: os-apply-config
      config:
        cinder:
          include_ceph_backend: true
        ceph:
          fsid: {get_param: CephClusterFSID}
          keyrings:
            mon:
              key: {get_param: CephMonKey}
            admin:
              key: {get_param: CephAdminKey}
          mon_nodes: {get_param: CephMonitors}
  NovaComputeCephDeployment:
    depends_on: [ControllerCephDeployment]
    type: OS::Heat::StructuredDeployment
    properties:
      server: {get_resource: NovaCompute}
      config: {get_resource: NovaComputeCephConfig}
      signal_transport: NO_SIGNAL
  NovaComputeCephConfig:
    type: OS::Heat::StructuredConfig
    properties:
      group: os-apply-config
      config:
        ceph:
          fsid: {get_param: CephClusterFSID}
          keyrings:
            admin:
              key: {get_param: CephAdminKey}
          mon_nodes: {get_param: CephMonitors}
outputs:
  hosts_entry:
    value:
      str_replace:
        template: "IP HOST"
        params:
          IP: {get_attr: [CephStorage, networks, ctlplane, 0]}
          HOST: {get_attr: [CephStorage, name]}