Initial commit
[ta/infra-ansible.git] / playbooks / site.yml
diff --git a/playbooks/site.yml b/playbooks/site.yml
new file mode 100644 (file)
index 0000000..be2fc87
--- /dev/null
@@ -0,0 +1,168 @@
+---
+
+# Copyright 2019 Nokia
+
+# Licensed 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.
+
+# Defines deployment design and assigns role to server groups
+
+- hosts:
+  - mons
+#  - agents
+  - osds
+#  - mdss
+#  - rgws
+#  - nfss
+#  - restapis
+#  - rbdmirrors
+#  - clients
+  - mgrs
+#  - iscsi-gws
+
+  gather_facts: false
+
+  tags:
+    - always
+
+  tasks:
+    # If we can't get python2 installed before any module is used we will fail
+    # so just try what we can to get it installed
+    - name: check for python2
+      stat:
+        path: /usr/bin/python
+      ignore_errors: yes
+      register: systempython2
+
+    - name: install python2 for debian based systems
+      raw: sudo apt-get -y install python-simplejson
+      ignore_errors: yes
+      when:
+        - systempython2.stat.exists is undefined or systempython2.stat.exists == false
+
+    - name: install python2 for fedora
+      raw: sudo dnf -y install python creates=/usr/bin/python
+      ignore_errors: yes
+      when:
+        - systempython2.stat.exists is undefined or systempython2.stat.exists == false
+
+    - name: gather and delegate facts
+      setup:
+      delegate_to: "{{ item }}"
+      delegate_facts: True
+      with_items: "{{ groups['all'] }}"
+
+    - name: install required packages for fedora > 23
+      raw: sudo dnf -y install python2-dnf libselinux-python ntp
+      when:
+        - ansible_distribution == 'Fedora'
+        - ansible_distribution_major_version|int >= 23
+
+- hosts: mons
+  gather_facts: false
+  become: True
+  roles:
+    - ceph-defaults
+    - ceph-common
+    - ceph-config
+    - ceph-mon
+
+- hosts: mgrs
+  gather_facts: false
+  become: True
+  roles:
+    - ceph-defaults
+    - ceph-common
+    - { role: ceph-config, when: "ceph_release_num.{{ ceph_release }} >= ceph_release_num.luminous" }
+    - { role: ceph-mgr, when: "ceph_release_num.{{ ceph_release }} >= ceph_release_num.luminous" }
+
+- hosts: agents
+  gather_facts: false
+  become: True
+  roles:
+    - ceph-defaults
+    - ceph-common
+    - ceph-config
+    - ceph-agent
+
+- hosts: osds
+  gather_facts: false
+  become: True
+  roles:
+    - ceph-defaults
+    - ceph-common
+    - ceph-config
+    - ceph-osd
+
+- hosts: mdss
+  gather_facts: false
+  become: True
+  roles:
+    - ceph-defaults
+    - ceph-common
+    - ceph-config
+    - ceph-mds
+
+- hosts: rgws
+  gather_facts: false
+  become: True
+  roles:
+    - ceph-defaults
+    - ceph-common
+    - ceph-config
+    - ceph-rgw
+
+- hosts: nfss
+  gather_facts: false
+  become: True
+  roles:
+    - ceph-defaults
+    - ceph-common
+    - { role: ceph-config, when: "ceph_release_num.{{ ceph_release }} >= ceph_release_num.luminous" }
+    - { role: ceph-nfs, when: "ceph_release_num.{{ ceph_release }} >= ceph_release_num.luminous" }
+
+- hosts: restapis
+  gather_facts: false
+  become: True
+  roles:
+    - ceph-defaults
+    - ceph-common
+    - ceph-config
+    - ceph-restapi
+
+- hosts: rbdmirrors
+  gather_facts: false
+  become: True
+  roles:
+    - ceph-defaults
+    - ceph-common
+    - ceph-config
+    - ceph-rbd-mirror
+
+- hosts: clients
+  gather_facts: false
+  become: True
+  roles:
+    - ceph-defaults
+    - ceph-common
+    - ceph-config
+    - ceph-client
+
+- hosts: iscsi-gws
+  gather_facts: false
+  become: True
+  roles:
+    - ceph-defaults
+    - ceph-common
+    - { role: ceph-config, when: "ceph_release_num.{{ ceph_release }} >= ceph_release_num.luminous" }
+    - { role: ceph-iscsi-gw, when: "ceph_release_num.{{ ceph_release }} >= ceph_release_num.luminous" }
+