Refactor ceph monitor role

pull/415/head
Michael Sambol 2015-10-16 18:55:31 -05:00
parent 5a46160ad3
commit e424966cbf
8 changed files with 76 additions and 77 deletions

View File

@ -2,12 +2,13 @@
# NOTE (leseb): wait for mon discovery and quorum resolution
# the admin key is not instantanely created so we have to wait a bit
- name: wait for client.admin key exists
wait_for: path=/etc/ceph/ceph.client.admin.keyring
wait_for:
path: /etc/ceph/ceph.client.admin.keyring
- name: create ceph rest api keyring
command: >
ceph auth get-or-create client.restapi osd 'allow *' mon 'allow *' -o /etc/ceph/ceph.client.restapi.keyring
creates=/etc/ceph/ceph.client.restapi.keyring
command: ceph auth get-or-create client.restapi osd 'allow *' mon 'allow *' -o /etc/ceph/ceph.client.restapi.keyring
args:
creates: /etc/ceph/ceph.client.restapi.keyring
changed_when: false
when:
cephx and
@ -25,19 +26,19 @@
when: cephx
- name: set keys permissions
file: >
path={{ item }}
mode=0600
owner=root
group=root
file:
path: "{{ item }}"
mode: 0600
owner: root
group: root
with_items:
- "{{ ceph_keys.stdout_lines }}"
- name: copy keys to the ansible server
fetch: >
src={{ item }}
dest={{ fetch_directory }}/{{ fsid }}/{{ item }}
flat=yes
fetch:
src: "{{ item }}"
dest: "{{ fetch_directory }}/{{ fsid }}/{{ item }}"
flat: yes
with_items:
- "{{ ceph_keys.stdout_lines }}"
- /var/lib/ceph/bootstrap-osd/ceph.keyring
@ -46,10 +47,10 @@
when: cephx
- name: drop in a motd script to report status when logging in
copy: >
src=precise/92-ceph
dest=/etc/update-motd.d/92-ceph
owner=root
group=root
mode=0755
copy:
src: precise/92-ceph
dest: /etc/update-motd.d/92-ceph
owner: root
group: root
mode: 0755
when: ansible_distribution_release == 'precise'

View File

@ -1,15 +1,13 @@
---
- name: generate monitor initial keyring
local_action: >
shell python -c "import os ; import struct ; import time; import base64 ; key = os.urandom(16) ; header = struct.pack('<hiih',1,int(time.time()),0,len(key)) ; print base64.b64encode(header + key)" | tee {{ fetch_directory }}/monitor_keyring.conf
local_action: shell python -c "import os ; import struct ; import time; import base64 ; key = os.urandom(16) ; header = struct.pack('<hiih',1,int(time.time()),0,len(key)) ; print base64.b64encode(header + key)" | tee {{ fetch_directory }}/monitor_keyring.conf
creates={{ fetch_directory }}/monitor_keyring.conf
register: monitor_keyring
sudo: false
when: monitor_secret != 'AQAWqilTCDh7CBAAawXt6kyTgLFCxSvJhTEmuw=='
- name: read monitor initial keyring if it already exists
local_action: >
command cat {{ fetch_directory }}/monitor_keyring.conf
local_action: command cat {{ fetch_directory }}/monitor_keyring.conf
removes={{ fetch_directory }}/monitor_keyring.conf
changed_when: false
register: monitor_keyring
@ -17,26 +15,26 @@
when: monitor_secret != 'AQAWqilTCDh7CBAAawXt6kyTgLFCxSvJhTEmuw=='
- name: create monitor initial keyring
command: >
ceph-authtool /var/lib/ceph/tmp/keyring.mon.{{ ansible_hostname }} --create-keyring --name=mon. --add-key={{ monitor_secret }} --cap mon 'allow *'
creates=/var/lib/ceph/tmp/keyring.mon.{{ ansible_hostname }}
command: ceph-authtool /var/lib/ceph/tmp/keyring.mon.{{ ansible_hostname }} --create-keyring --name=mon. --add-key={{ monitor_secret }} --cap mon 'allow *'
args:
creates: /var/lib/ceph/tmp/keyring.mon.{{ ansible_hostname }}
- name: set initial monitor key permissions
file: >
path=/var/lib/ceph/tmp/keyring.mon.{{ ansible_hostname }}
mode=0600
owner=root
group=root
file:
path: /var/lib/ceph/tmp/keyring.mon.{{ ansible_hostname }}
mode: 0600
owner: root
group: root
- name: create monitor directory
file: >
path=/var/lib/ceph/mon/ceph-{{ ansible_hostname }}
state=directory
owner=root
group=root
mode=0755
file:
path: /var/lib/ceph/mon/ceph-{{ ansible_hostname }}
state: directory
owner: root
group: root
mode: 0755
- name: ceph monitor mkfs
command: >
ceph-mon --mkfs -i {{ ansible_hostname }} --fsid {{ fsid }} --keyring /var/lib/ceph/tmp/keyring.mon.{{ ansible_hostname }}
creates=/var/lib/ceph/mon/ceph-{{ ansible_hostname }}/keyring
command: ceph-mon --mkfs -i {{ ansible_hostname }} --fsid {{ fsid }} --keyring /var/lib/ceph/tmp/keyring.mon.{{ ansible_hostname }}
args:
creates: /var/lib/ceph/mon/ceph-{{ ansible_hostname }}/keyring

View File

@ -1,9 +1,9 @@
---
- name: push ceph files to the ansible server
fetch: >
src={{ item.0 }}
dest={{ fetch_directory }}/docker_mon_files/{{ item.0 }}
flat=yes
fetch:
src: "{{ item.0 }}"
dest: "{{ fetch_directory }}/docker_mon_files/{{ item.0 }}"
flat: yes
with_together:
- ceph_config_keys
- statconfig.results

View File

@ -19,12 +19,12 @@
register: statconfig
- name: try to fetch ceph config and keys
copy: >
src={{ fetch_directory }}/docker_mon_files/{{ item.0 }}
dest={{ item.0 }}
owner=root
group=root
mode=644
copy:
src: "{{ fetch_directory }}/docker_mon_files/{{ item.0 }}"
dest: "{{ item.0 }}"
owner: root
group: root
mode: 644
changed_when: false
with_together:
- ceph_config_keys

View File

@ -1,8 +1,8 @@
---
- name: create bootstrap directories
file: >
path=/var/lib/ceph/bootstrap-{{ item }}
state=directory
file:
path: /var/lib/ceph/bootstrap-{{ item }}
state: directory
with_items:
- osd
- mds
@ -10,6 +10,6 @@
# NOTE (leseb): for version 1.1.0 because https://github.com/ansible/ansible-modules-core/issues/1227
- name: install docker-py
pip: >
name=docker-py
version=1.1.0
pip:
name: docker-py
version: 1.1.0

View File

@ -1,9 +1,9 @@
---
- name: run the ceph Monitor docker image
docker: >
image="{{ ceph_mon_docker_username }}/{{ ceph_mon_docker_imagename }}"
name="{{ ansible_hostname }}"
net="host"
state="running"
env="MON_IP={{ hostvars[inventory_hostname]['ansible_' + ceph_mon_docker_interface]['ipv4']['address'] }},CEPH_DAEMON=MON,CEPH_PUBLIC_NETWORK={{ ceph_mon_docker_subnet }},{{ ceph_mon_extra_envs }}"
volumes="/var/lib/ceph:/var/lib/ceph,/etc/ceph:/etc/ceph"
docker:
image: "{{ ceph_mon_docker_username }}/{{ ceph_mon_docker_imagename }}"
name: "{{ ansible_hostname }}"
net: "host"
state: "running"
env: "MON_IP={{ hostvars[inventory_hostname]['ansible_' + ceph_mon_docker_interface]['ipv4']['address'] }},CEPH_DAEMON=MON,CEPH_PUBLIC_NETWORK={{ ceph_mon_docker_subnet }},{{ ceph_mon_extra_envs }}"
volumes: "/var/lib/ceph:/var/lib/ceph,/etc/ceph:/etc/ceph"

View File

@ -10,8 +10,8 @@
failed_when: false
- name: create openstack keys
command: >
ceph auth get-or-create {{ item.name }} {{ item.value }} -o /etc/ceph/ceph.{{ item.name }}.keyring
creates=/etc/ceph/ceph.{{ item.name }}.keyring
command: ceph auth get-or-create {{ item.name }} {{ item.value }} -o /etc/ceph/ceph.{{ item.name }}.keyring
args:
creates: /etc/ceph/ceph.{{ item.name }}.keyring
with_items: openstack_keys
changed_when: false

View File

@ -1,11 +1,11 @@
---
- name: activate monitor with upstart
file: >
path=/var/lib/ceph/mon/ceph-{{ ansible_hostname }}/{{ item }}
state=touch
owner=root
group=root
mode=0600
file:
path: /var/lib/ceph/mon/ceph-{{ ansible_hostname }}/{{ item }}
state: touch
owner: root
group: root
mode: 0600
with_items:
- done
- upstart
@ -13,11 +13,11 @@
changed_when: false
- name: start and add that the monitor service to the init sequence (ubuntu)
service: >
name=ceph-mon
state=started
enabled=yes
args="id={{ ansible_hostname }}"
service:
name: ceph-mon
state: started
enabled: yes
args: "id={{ ansible_hostname }}"
when: ansible_distribution == "Ubuntu"
# NOTE (leseb): somehow the service ansible module is messing things up