- name: Update the placement of radosgw hosts
ceph_orch_apply:
fsid: "{{ fsid }}"
+ cluster: "{{ cluster }}"
spec: |
service_type: rgw
service_id: {{ ansible_facts['hostname'] }}
- name: Update the placement of alertmanager hosts
ceph_orch_apply:
fsid: "{{ fsid }}"
+ cluster: "{{ cluster }}"
spec: |
service_type: alertmanager
service_id: "{{ ansible_facts['hostname'] }}"
- name: Update the placement of prometheus hosts
ceph_orch_apply:
fsid: "{{ fsid }}"
+ cluster: "{{ cluster }}"
spec: |
service_name: prometheus
service_id: "{{ ansible_facts['hostname'] }}"
from ansible.module_utils.basic import AnsibleModule # type: ignore
try:
- from ansible.module_utils.ca_common import exit_module, build_base_cmd_orch # type: ignore
+ from ansible.module_utils.ca_common import exit_module, build_base_cmd # type: ignore
except ImportError:
- from module_utils.ca_common import exit_module, build_base_cmd_orch
+ from module_utils.ca_common import exit_module, build_base_cmd
ANSIBLE_METADATA = {
description:
- The Ceph container image to use.
required: false
+ cluster:
+ description:
+ - The Ceph cluster name. Defaults to ceph
+ required: false
spec:
description:
- The service spec to apply
def retrieve_current_spec(module: AnsibleModule, expected_spec: Dict) -> Dict:
""" retrieve current config of the service """
service: str = expected_spec["service_type"]
- cmd = build_base_cmd_orch(module)
- cmd.extend(['ls', service])
+ cmd = build_base_cmd(module)
+ cluster = module.params.get('cluster')
+ if cluster != 'ceph':
+ conf_path = f"/etc/ceph/{cluster}.conf"
+ keyring_path = f"/etc/ceph/{cluster}.client.admin.keyring"
+ cmd.extend(['--config', conf_path, '--keyring', keyring_path])
+ cmd.extend(['ceph', 'orch', 'ls', service])
if 'service_name' in expected_spec:
cmd.extend([expected_spec["service_name"]])
else:
def apply_spec(module: "AnsibleModule",
data: str) -> Tuple[int, List[str], str, str]:
- cmd = build_base_cmd_orch(module)
- cmd.extend(['apply', '-i', '-'])
+ cmd = build_base_cmd(module)
+ cluster = module.params.get('cluster')
+ if cluster != 'ceph':
+ conf_path = f"/etc/ceph/{cluster}.conf"
+ keyring_path = f"/etc/ceph/{cluster}.client.admin.keyring"
+ cmd.extend(['--config', conf_path, '--keyring', keyring_path])
+ cmd.extend(['ceph', 'orch', 'apply', '-i', '-'])
rc, out, err = module.run_command(cmd, data=data)
if rc:
docker=dict(type=bool,
required=False,
default=False),
- image=dict(type='str', required=False)
+ image=dict(type='str', required=False),
+ cluster=dict(type='str', required=False,
+ default='ceph')
)
module = AnsibleModule(