Initial commit
[ta/infra-ansible.git] / roles / bootstrap-host / tasks / main.yml
diff --git a/roles/bootstrap-host/tasks/main.yml b/roles/bootstrap-host/tasks/main.yml
new file mode 100644 (file)
index 0000000..927001f
--- /dev/null
@@ -0,0 +1,141 @@
+---
+# Copyright 2015, Rackspace US, Inc.
+#
+# 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.
+
+# Before we do anything, check the minimum requirements
+- include: check-requirements.yml
+  tags:
+    - check-requirements
+
+# We will look for the most specific variable files first and eventually
+# end up with the least-specific files.
+- name: Gather variables for each operating system
+  include_vars: "{{ item }}"
+  with_first_found:
+    - "{{ ansible_distribution | lower }}-{{ ansible_distribution_version | lower }}.yml"
+    - "{{ ansible_distribution | lower }}-{{ ansible_distribution_major_version | lower }}.yml"
+    - "{{ ansible_os_family | lower }}-{{ ansible_distribution_major_version | lower }}.yml"
+    - "{{ ansible_distribution | lower }}.yml"
+    - "{{ ansible_os_family | lower }}.yml"
+  tags:
+    - always
+
+- name: Create the required directories
+  file:
+    path: "{{ item }}"
+    state: directory
+    mode: u=rwx,g=rwx,o=rwx
+  with_items:
+    - "/openstack"
+  tags:
+    - create-directories
+
+# Create sudo user
+- include: create_sudo_user.yml
+  tags:
+    - create-sudo-user
+
+- include: install_packages.yml
+  tags:
+    - install-packages
+
+# Prepare the data disk, if one is provided
+- include: prepare_data_disk.yml
+  when: bootstrap_host_data_disk_device != None
+  tags:
+    - prepare-data-disk
+
+# Prepare the swap space loopback disk
+# This is only necessary if there isn't swap already
+- include: prepare_loopback_swap.yml
+  when:
+    - ansible_swaptotal_mb < 1
+  tags:
+    - prepare-loopback-swap
+
+# Prepare the Cinder LVM VG loopback disk
+# This is only necessary if bootstrap_host_loopback_cinder is set to yes
+- include: prepare_loopback_cinder.yml
+  when:
+    - bootstrap_host_loopback_cinder | bool
+  tags:
+    - prepare-loopback-cinder
+
+# Prepare the Nova instance storage loopback disk
+- include: prepare_loopback_nova.yml
+  when:
+    - bootstrap_host_loopback_nova | bool
+  tags:
+    - prepare-loopback-nova
+
+# Prepare the Swift data storage loopback disks
+- include: prepare_loopback_swift.yml
+  when:
+    - bootstrap_host_loopback_swift | bool
+  tags:
+    - prepare-loopback-swift
+
+# Prepare the Ceph cluster UUID and loopback disks
+- include: prepare_ceph.yml
+  when:
+    - bootstrap_host_ceph | bool
+  tags:
+    - prepare-ceph
+
+# Prepare the network interfaces
+- include: prepare_networking.yml
+  tags:
+    - prepare-networking
+
+# Prepare the network interfaces using os-net-config
+- include: prepare_os_net_config.yml
+  tags:
+    - prepare-os-net-config
+
+# Ensure that there are both private and public ssh keys for root
+- include: prepare_ssh_keys.yml
+  tags:
+    - prepare-ssh-keys
+
+# Put the OpenStack-Ansible configuration for an All-In-One on the host
+- include: prepare_aio_config.yml
+  when: bootstrap_host_aio_config | bool
+  tags:
+    - prepare-aio-config
+
+# Change owner for /etc/openstack_deploy
+- name: Set permissions for /etc/openstack_deploy
+  file:
+    path: "/etc/openstack_deploy"
+    owner: "{{ sudo_user }}"
+    group: "{{ sudo_user }}"
+    recurse: yes
+    mode: 0700
+
+- name: 2nd phase, set different permissions only for /etc/openstack_deploy -directory
+  file:
+    path: "/etc/openstack_deploy"
+    owner: "{{ sudo_user }}"
+    group: "{{ sudo_user }}"
+    recurse: no
+    mode: u=rwX,g=rX,o=rX
+
+# Change owner of /etc/userconfig
+- name: Set permissions for /etc/userconfig
+  file:
+    path: "/etc/userconfig"
+    owner: "{{ sudo_user }}"
+    group: "{{ sudo_user }}"
+    recurse: yes
+    mode: 0700