Andrew Schoen [Tue, 3 May 2016 19:47:47 +0000 (14:47 -0500)]
Get the correct OSD ID when the cluster name includes numbers
If the ceph cluster name includes numbers, the grep used to find the OSD
IDs from /var/lib/ceph/osd/ would also return the numbers that were in
the cluster name.
For example, if the cluster was named 'mine123' and there was only one
OSD on the node, then the task that finds the OSD IDs would return
'123' and '0'.
Sébastien Han [Sun, 1 May 2016 14:46:28 +0000 (16:46 +0200)]
take over an existing cluster with ceph ansible
Introducing a playbook helper to control a ceph cluster that was not
deployed with ceph ansible.
The procedure is rather simple. If the cluster was deployed with the
following project there won’t be any issue:
* Ceph Deploy
* Puppet Ceph
* Chef Ceph
* Any other deployment tool that relies on ceph-disk
The procedure comes as fellow:
1. Install Ansible and add your monitors and osds hosts in it. For more
detailed information you can read the Ceph Ansible Wiki
2. Set generate_fsid: false in group_vars
3. Get your current cluster fsid with ceph fsid and set cluster_fsid
accordingly in group_vars
4. Run the playbook called: take-over-existing-cluster.yml like this
ansible-playbook take-over-existing-cluster.yml.
5. Eventually run Ceph Ansible to validate everything by doing:
ansible-playbook site.yml.
Andrew Schoen [Wed, 27 Apr 2016 21:10:39 +0000 (16:10 -0500)]
Adds a use_server_package_split var
This will allow a user to conditionally install the ceph package on rpm
based systems. Installing this package is not required or wanted in
versions passed infernalis.
Sébastien Han [Fri, 22 Apr 2016 15:44:56 +0000 (17:44 +0200)]
ceph-rgw: ability to bind civetweb on an IP
Introducing a new config option: `radosgw_civetweb_bind_ip` which points
to the `ansible_default_ipv4` by default. You can override this
variable. Use ansible facts to put a proper value.
Andrew Schoen [Thu, 21 Apr 2016 14:09:16 +0000 (09:09 -0500)]
correctly set mon addr when monitor_interface is defined in group_vars
This fixes the ceph.conf template so that it will look for an inventory
defined value for monitor_interface or for monitor_interface defined in
a group_vars file.
Kevin Carter [Tue, 12 Apr 2016 04:28:40 +0000 (23:28 -0500)]
Update the config_template plugin
These changes address 2 issues:
* The config template plugin in v1 mode was not respecting a list
of integers and would cause a stacktrace because the ConfigParese
module expects everything written to be a string.
* The config template plugin in v2 mode was not properly handingly
the multi-string-op type due to an oversight in the ``_option_write``
method.
With these updates the config template is now able to better support
all of the potential options that could be thrown at it when writing
an INI config file.
Signed-off-by: Kevin Carter <kevin.carter@rackspace.com>
Andrew Schoen [Fri, 8 Apr 2016 19:23:12 +0000 (14:23 -0500)]
look at monitor_interface in hostvars when choosing interface or address
This fixes a bug where monitor_interface might be set in your inventory
file and not by using group_vars or --extra-vars causing the template to
use the default address of 0.0.0.0 instead of the defined
monitor_interface.
Instead of creating the RBD client socket path three different places
in three different ways, this creates it once. Ceph on OpenStack users
have the option to customize the permissions of the RBD client
directories.
John Fulton [Fri, 8 Apr 2016 03:55:15 +0000 (23:55 -0400)]
This update has the following changes for the rolling update playbook.
1. Change how sysvinit ceph is determined to be enabled
For mons, the playbook checks if sysvinit is enabled by trying to
stat /var/lib/ceph/mon/ceph-{{ ansible_hostname }}/sysvinit [1].
However, that file is not created when a monitor is configured to
use sysvinit, instead, Ansible's service module is used [2]. Ansible
2.0 can verify if a service is enabled and does this by checking for
a glob, in this context it would be '/etc/rc?.d/S??ceph' [3]. Because
Ansible 1.9 does not support this feature, this change updates
rolling_update.yml by checking if sysvinit is enabled by having stat
glob for the same pattern and following the symlink. This is done only
for the mons.
2. Change how sysvinit ceph is restarted
The playbook passes the argument "mon" to the sysv init script
but, the init script does not necessarily take that argument and
it failed when tested on a RHEL7 system. However, dropping the
argument and just using Ansible's service module for state=restarted
worked so this change does not have this line for when
monsysvinit.stat.exists. A similar change is in this pull request
for the OSD restart (removing args=osd).
A second ceph mon restart command is run regardless of any conditions
being met. I am not sure why the service is restarted in the case of
upstart or sysvinit and then restarted again. I am going to assume
there is a subtle reason for this and not touch this second run but I
added a condition so that when ansible_os_family is Red Hat, then mon
is not passed as an argument, otherwise it is restarted as was already
in place.