]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-cm-ansible.git/log
ceph-cm-ansible.git
6 days agoMerge pull request #858 from ceph/blink-trial-sleds main
adam kraitman [Thu, 16 Jul 2026 15:14:58 +0000 (18:14 +0300)]
Merge pull request #858 from ceph/blink-trial-sleds

tools: Add blink-trial-sleds.sh for locating NVMe sleds

6 days agotools: Add blink-trial-sleds.sh for locating NVMe sleds 858/head
David Galloway [Thu, 16 Jul 2026 14:06:26 +0000 (10:06 -0400)]
tools: Add blink-trial-sleds.sh for locating NVMe sleds

Blinks (or unblinks) the locator LED on Supermicro Microcloud NVMe
sleds via the BMC Redfish API using curl.  Takes either a CSV of
hostname,serial[,serial...] pairs or a single hostname on the command
line.  Given a hostname with no serials, it lists the drives it finds
so serial numbers can be discovered.

Also add trial-sleds.csv listing the sleds currently needing
replacement.

Signed-off-by: David Galloway <david.galloway@ibm.com>
6 days agoMerge pull request #857 from ceph/maas-relay-vlan
adam kraitman [Thu, 16 Jul 2026 07:42:02 +0000 (10:42 +0300)]
Merge pull request #857 from ceph/maas-relay-vlan

maas: Add relay_vlan support to networking reconciliation

6 days agomaas: Add relay_vlan support to networking reconciliation 857/head
David Galloway [Wed, 15 Jul 2026 22:56:27 +0000 (18:56 -0400)]
maas: Add relay_vlan support to networking reconciliation

MAAS relocates a subnet to whichever VLAN its DHCP/PXE traffic is
observed on. For VLANs whose boot traffic reaches the rack controller
relayed through another VLAN (e.g. pok vlan107 hosts PXE via the
rack's 1338 leg), this "fix-up" keeps moving the subnet off the VLAN
we configured. Setting relay_vlan on the VLAN tells MAAS the traffic
is relayed and stops the relocation.

A new optional per-VLAN `relay_vlan: <vid>` key in maas_networking is
resolved to the target VLAN's MAAS database id via _vlan_index (which
covers every VLAN MAAS knows on the fabric) and included in the VLAN
update PUT. `relay_vlan: ''` explicitly clears an existing relay;
omitting the key leaves MAAS untouched.

Pre-flight validation fails fast on configs MAAS would reject:
dhcp_on combined with relay_vlan, a VLAN relaying to itself, or a
relay target that is itself relayed (chained relays).

Signed-off-by: David Galloway <david.galloway@ibm.com>
6 days agoMerge pull request #856 from ceph/wip-micron-nvme-firmware-update
David Galloway [Wed, 15 Jul 2026 20:33:45 +0000 (16:33 -0400)]
Merge pull request #856 from ceph/wip-micron-nvme-firmware-update

testnode: add Micron NVMe firmware update tasks

8 days agotestnode: add Micron NVMe firmware update task 856/head
Adam Kraitman [Thu, 9 Jul 2026 12:10:55 +0000 (15:10 +0300)]
testnode: add Micron NVMe firmware update task

13 days agoMerge pull request #855 from ceph/mtu-ternary
David Galloway [Wed, 8 Jul 2026 19:27:36 +0000 (15:27 -0400)]
Merge pull request #855 from ceph/mtu-ternary

MaaS Networking MTU, MACs, and bonding fixes, use static IPs

2 weeks agomaas: Release discovered lease IP before STATIC link_subnet 855/head
David Galloway [Wed, 8 Jul 2026 18:13:40 +0000 (14:13 -0400)]
maas: Release discovered lease IP before STATIC link_subnet

MAAS keeps a DISCOVERED StaticIPAddress record for a machine's active
DHCP lease. link_subnet mode=STATIC does get_or_create(ip=...) and
raises StaticIPAddressUnavailable (HTTP 404 "IP address is already in
use.") while any record holds that IP, and unlink_subnet does not
remove the discovered record. This made both the initial link and the
unlink-then-relink paths fail for hosts that are deployed with the very
IP we want to assign statically (e.g. o03's 172.21.67.13).

When the desired STATIC IP is already seen on the same interface (its
links or discovered leases), POST /ipaddresses/?op=release with
force=true discovered=true first so the STATIC claim can succeed. If
another machine holds the IP we release nothing and still fail loudly.

Signed-off-by: David Galloway <david.galloway@ibm.com>
2 weeks agomaas: Skip bond members and no-native bonds in subnet pass
David Galloway [Thu, 2 Jul 2026 13:31:35 +0000 (09:31 -0400)]
maas: Skip bond members and no-native bonds in subnet pass

MAAS rejects link_subnet on a physical that's enslaved in a bond, and
bonded members share the bond's MAC so the inventory-MAC match was
pulling them into the loop anyway. Filter them out by name.

Also exclude bonds without a native VLAN: MAAS parks their untagged
interface on the parents' VLAN, so the CIDR match would hand that VLAN's
IP to the bare bond and collide with the interface that actually owns
it. Only the bond's tagged .NNNN children should get IPs.

Signed-off-by: David Galloway <david.galloway@ibm.com>
2 weeks agomaas: Assign STATIC IPs from inventory *_ip vars
David Galloway [Thu, 2 Jul 2026 13:30:58 +0000 (09:30 -0400)]
maas: Assign STATIC IPs from inventory *_ip vars

When any inventory var ending in _ip falls inside the candidate subnet's
CIDR, link the interface STATIC on that exact address instead of relying
on DHCP or a dynamic range. Interfaces with no matching IP fall back to
iface.desired_mode or maas_iface_mode_default, which now defaults to
LINK_UP instead of DHCP.

Also relink when the mode matches but the assigned address doesn't, so a
changed inventory IP converges.

Signed-off-by: David Galloway <david.galloway@ibm.com>
2 weeks agomaas: Look up inventory MACs for the target host, not the play host
David Galloway [Thu, 2 Jul 2026 13:30:31 +0000 (09:30 -0400)]
maas: Look up inventory MACs for the target host, not the play host

update.yml runs against hosts other than inventory_hostname (machines.yml
passes inv_host for exactly this reason), so the _inv_macs collection was
reading the wrong host's *_mac vars.

Signed-off-by: David Galloway <david.galloway@ibm.com>
3 weeks agomaas: Default 1500 MTU on bonds if not defined
David Galloway [Tue, 30 Jun 2026 19:57:29 +0000 (15:57 -0400)]
maas: Default 1500 MTU on bonds if not defined

Signed-off-by: David Galloway <david.galloway@ibm.com>
4 weeks agoMerge pull request #854 from ceph/fix-handler
David Galloway [Thu, 18 Jun 2026 21:49:27 +0000 (17:49 -0400)]
Merge pull request #854 from ceph/fix-handler

maas: Fix relative path to include_tasks

4 weeks agomaas: Fix relative path to include_tasks 854/head
David Galloway [Thu, 18 Jun 2026 21:26:06 +0000 (17:26 -0400)]
maas: Fix relative path to include_tasks

Fixes
```
TASK [maas : meta] ********************************************************************************
RUNNING HANDLER [maas : include_tasks] ************************************************************
included: /Users/david/src/ceph-cm-ansible/roles/maas/tasks/_auth_header.yml for soko02.front.sepia.ceph.com
RUNNING HANDLER [maas : Build OAuth header (fresh nonce/timestamp)] *******************************
ok: [soko02.front.sepia.ceph.com]
RUNNING HANDLER [maas : Read machines from MAAS (handler)] ****************************************
included: /Users/david/src/ceph-cm-ansible/roles/maas/tasks/machines/_read_machines.yml for soko02.front.sepia.ceph.com
RUNNING HANDLER [maas : include_tasks] ************************************************************
fatal: [soko02.front.sepia.ceph.com]: FAILED! => {"reason": "Could not find or access '/Users/david/src/_auth_header.yml' on the Ansible Controller."}
```

Signed-off-by: David Galloway <david.galloway@ibm.com>
4 weeks agoMerge pull request #853 from ceph/solenable
adam kraitman [Thu, 18 Jun 2026 15:50:26 +0000 (18:50 +0300)]
Merge pull request #853 from ceph/solenable

set-bmc-static: Enable SOL

4 weeks agoset-bmc-static: Enable SOL 853/head
David Galloway [Thu, 18 Jun 2026 15:10:59 +0000 (11:10 -0400)]
set-bmc-static: Enable SOL

Signed-off-by: David Galloway <david.galloway@ibm.com>
5 weeks agoMerge pull request #851 from ceph/lan-only-access
Dan Mick [Thu, 11 Jun 2026 21:29:18 +0000 (14:29 -0700)]
Merge pull request #851 from ceph/lan-only-access

set-bmc-static: skip some tasks when certain vars|bool

5 weeks agoset-bmc-static: skip some tasks when certain vars|bool 851/head
David Galloway [Thu, 11 Jun 2026 18:27:45 +0000 (14:27 -0400)]
set-bmc-static: skip some tasks when certain vars|bool

Made this work:

```
ansible-playbook tools/set-bmc-static.yml --limit 'trial001*' -e only_lan_access=true --skip-tags test_user
```

Otherwise:

```
ansible-playbook tools/set-bmc-static.yml --limit 'trial001*' -e only_lan_access=true

PLAY [all] *********************************************************************************************************************************************************************************************

TASK [include_vars] ************************************************************************************************************************************************************************************
ok: [trial001.front.sepia.ceph.com]

TASK [include_vars] ************************************************************************************************************************************************************************************
ok: [trial001.front.sepia.ceph.com]

TASK [Make sure we have power_user and power_pass] *****************************************************************************************************************************************************
skipping: [trial001.front.sepia.ceph.com]

TASK [test factory ipmi creds] *************************************************************************************************************************************************************************
fatal: [trial001.front.sepia.ceph.com -> localhost]: FAILED! => {"changed": false, "module_stderr": "sudo: a password is required\n", "module_stdout": "", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 1}
...ignoring

TASK [test power_user/power_pass creds] ****************************************************************************************************************************************************************
fatal: [trial001.front.sepia.ceph.com -> localhost]: FAILED! => {"changed": false, "module_stderr": "sudo: a password is required\n", "module_stdout": "", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 1}
...ignoring

TASK [debug] *******************************************************************************************************************************************************************************************
ok: [trial001.front.sepia.ceph.com] => {
    "msg": "factory False power_user False"
}

TASK [if both fail, halt now] **************************************************************************************************************************************************************************
fatal: [trial001.front.sepia.ceph.com]: FAILED! => {"changed": false, "msg": "Failed as requested from task"}

PLAY RECAP *********************************************************************************************************************************************************************************************
trial001.front.sepia.ceph.com : ok=5    changed=0    unreachable=0    failed=1    skipped=1    rescued=0    ignored=2

vim tools/set-bmc-static.yml
%
ansible-playbook tools/set-bmc-static.yml --limit 'trial001*' -e only_lan_access=true

PLAY [all] *********************************************************************************************************************************************************************************************

TASK [include_vars] ************************************************************************************************************************************************************************************
ok: [trial001.front.sepia.ceph.com]

TASK [include_vars] ************************************************************************************************************************************************************************************
ok: [trial001.front.sepia.ceph.com]

TASK [Make sure we have power_user and power_pass] *****************************************************************************************************************************************************
skipping: [trial001.front.sepia.ceph.com]

TASK [test factory ipmi creds] *************************************************************************************************************************************************************************
skipping: [trial001.front.sepia.ceph.com]

TASK [test power_user/power_pass creds] ****************************************************************************************************************************************************************
skipping: [trial001.front.sepia.ceph.com]

TASK [debug] *******************************************************************************************************************************************************************************************
fatal: [trial001.front.sepia.ceph.com]: FAILED! => {"msg": "The conditional check '(power_status_factory.rc != 0) or (power_status_power.rc != 0)' failed. The error was: error while evaluating conditional ((power_status_factory.rc != 0) or (power_status_power.rc != 0)): 'dict object' has no attribute 'rc'. 'dict object' has no attribute 'rc'\n\nThe error appears to be in '/Users/david/src/ceph-cm-ansible/tools/set-bmc-static.yml': line 70, column 5, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n  - debug:\n    ^ here\n"}

PLAY RECAP *********************************************************************************************************************************************************************************************
trial001.front.sepia.ceph.com : ok=2    changed=0    unreachable=0    failed=1    skipped=3    rescued=0    ignored=0

---

ansible-playbook tools/set-bmc-static.yml --limit 'trial001*' -e only_lan_access=true --skip-tags test_user

PLAY [all] *********************************************************************************************************************************************************************************************

TASK [include_vars] ************************************************************************************************************************************************************************************
ok: [trial001.front.sepia.ceph.com]

TASK [include_vars] ************************************************************************************************************************************************************************************
ok: [trial001.front.sepia.ceph.com]

TASK [Make sure we have power_user and power_pass] *****************************************************************************************************************************************************
skipping: [trial001.front.sepia.ceph.com]

TASK [if both fail, halt now] **************************************************************************************************************************************************************************
fatal: [trial001.front.sepia.ceph.com]: FAILED! => {"msg": "The conditional check '(power_status_factory.rc != 0) and (power_status_power.rc != 0)' failed. The error was: error while evaluating conditional ((power_status_factory.rc != 0) and (power_status_power.rc != 0)): 'power_status_factory' is undefined. 'power_status_factory' is undefined\n\nThe error appears to be in '/Users/david/src/ceph-cm-ansible/tools/set-bmc-static.yml': line 81, column 5, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n  - name: if both fail, halt now\n    ^ here\n"}

PLAY RECAP *********************************************************************************************************************************************************************************************
trial001.front.sepia.ceph.com : ok=2    changed=0    unreachable=0    failed=1    skipped=1    rescued=0    ignored=0

---

ansible-playbook tools/set-bmc-static.yml --limit 'trial001*' -e only_lan_access=true --skip-tags test_user

PLAY [all] *********************************************************************************************************************************************************************************************

TASK [include_vars] ************************************************************************************************************************************************************************************
ok: [trial001.front.sepia.ceph.com]

TASK [include_vars] ************************************************************************************************************************************************************************************
ok: [trial001.front.sepia.ceph.com]

TASK [Make sure we have power_user and power_pass] *****************************************************************************************************************************************************
skipping: [trial001.front.sepia.ceph.com]

TASK [Check if we have SSH access] *********************************************************************************************************************************************************************
skipping: [trial001.front.sepia.ceph.com]

TASK [Fake SSH failure if not desired] *****************************************************************************************************************************************************************
ok: [trial001.front.sepia.ceph.com]

TASK [Initial setup of username from localhost] ********************************************************************************************************************************************************
fatal: [trial001.front.sepia.ceph.com -> localhost]: FAILED! => {"changed": false, "module_stderr": "sudo: a password is required\n", "module_stdout": "", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 1}
...ignoring

TASK [Initial setup of permissions from localhost] *****************************************************************************************************************************************************
fatal: [trial001.front.sepia.ceph.com -> localhost]: FAILED! => {"changed": false, "module_stderr": "sudo: a password is required\n", "module_stdout": "", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 1}
...ignoring

TASK [Initial setup of password from localhost] ********************************************************************************************************************************************************
fatal: [trial001.front.sepia.ceph.com -> localhost]: FAILED! => {"changed": false, "module_stderr": "sudo: a password is required\n", "module_stdout": "", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 1}
...ignoring

TASK [Enable user] *************************************************************************************************************************************************************************************
fatal: [trial001.front.sepia.ceph.com -> localhost]: FAILED! => {"changed": false, "module_stderr": "sudo: a password is required\n", "module_stdout": "", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 1}
...ignoring

TASK [meta] ********************************************************************************************************************************************************************************************

PLAY RECAP *********************************************************************************************************************************************************************************************
trial001.front.sepia.ceph.com : ok=7    changed=0    unreachable=0    failed=0    skipped=2    rescued=0    ignored=4
```

Signed-off-by: David Galloway <david.galloway@ibm.com>
6 weeks agoMerge pull request #840 from ceph/wip-maas-dg-commits
David Galloway [Tue, 9 Jun 2026 17:02:20 +0000 (13:02 -0400)]
Merge pull request #840 from ceph/wip-maas-dg-commits

maas: Networking and Machine management tasks

6 weeks agoMerge pull request #850 from dmick/users_role_and_nits
David Galloway [Tue, 9 Jun 2026 14:39:26 +0000 (10:39 -0400)]
Merge pull request #850 from dmick/users_role_and_nits

Users role and nits

6 weeks agoroles/users/tasks/filter_users.yml: gut and replace 850/head
Dan Mick [Mon, 1 Jun 2026 22:51:04 +0000 (15:51 -0700)]
roles/users/tasks/filter_users.yml: gut and replace

The old logic with jinja templates was just not robust anymore;
too easy to get a string value instead of an object floating around.
Modern ansible has filters to do this sort of thing better.  I
expect this to be compatible with existing usage of the various user
variables, but there's a set of debug, enabled by --tags=debug (that's
what the tags: never is for, to make sure it doesn't run unless
explicitly requested).

Signed-off-by: Dan Mick <dmick@ibm.com>
7 weeks agolocal_action/module is deprecated
Dan Mick [Mon, 1 Jun 2026 22:52:07 +0000 (15:52 -0700)]
local_action/module is deprecated

replace with a call to the module and a "delegate_to: localhost"

Signed-off-by: Dan Mick <dmick@ibm.com>
7 weeks agoansible.cfg: be silent about python interpreter discovery
Dan Mick [Mon, 1 Jun 2026 22:47:20 +0000 (15:47 -0700)]
ansible.cfg: be silent about python interpreter discovery

What's the point in whining if there's nothing to be done?

Signed-off-by: Dan Mick <dmick@ibm.com>
7 weeks agoansible.cfg: remove ansible-managed
Dan Mick [Mon, 1 Jun 2026 22:46:48 +0000 (15:46 -0700)]
ansible.cfg: remove ansible-managed

no longer supported as a default here.  Will set it in the various
inventories.

Signed-off-by: Dan Mick <dmick@ibm.com>
7 weeks agoMerge pull request #849 from ceph/wtf-dnf-bin playbook-sync
David Galloway [Mon, 1 Jun 2026 20:44:22 +0000 (16:44 -0400)]
Merge pull request #849 from ceph/wtf-dnf-bin

prep-fog-capture: Might want to install the script we need

7 weeks agoprep-fog-capture: Might want to install the script we need 849/head
David Galloway [Fri, 29 May 2026 20:44:57 +0000 (16:44 -0400)]
prep-fog-capture: Might want to install the script we need

Signed-off-by: David Galloway <david.galloway@ibm.com>
2 months agoMerge pull request #843 from ceph/wip-56434
Dan Mick [Tue, 19 May 2026 23:41:21 +0000 (16:41 -0700)]
Merge pull request #843 from ceph/wip-56434

long_running_cluster: Enable storing coredumps

2 months agoMerge pull request #848 from ceph/wip-37728
David Galloway [Mon, 18 May 2026 21:22:42 +0000 (17:22 -0400)]
Merge pull request #848 from ceph/wip-37728

testnode: Provide option to enable firewalld

2 months agotestnode: Provide option to enable firewalld 848/head
David Galloway [Fri, 15 May 2026 17:55:32 +0000 (13:55 -0400)]
testnode: Provide option to enable firewalld

Fixes: https://tracker.ceph.com/issues/37728
Signed-off-by: David Galloway <david.galloway@ibm.com>
2 months agoMerge pull request #845 from ceph/wip-63567
David Galloway [Fri, 15 May 2026 06:28:52 +0000 (02:28 -0400)]
Merge pull request #845 from ceph/wip-63567

testnode: Replace apt_key module

2 months agoMerge pull request #847 from ceph/teuth-journald
David Galloway [Fri, 15 May 2026 06:28:06 +0000 (02:28 -0400)]
Merge pull request #847 from ceph/teuth-journald

teuthology: Configure week-long journald

2 months agoMerge pull request #846 from ceph/minimal-responses
Dan Mick [Thu, 14 May 2026 23:40:26 +0000 (16:40 -0700)]
Merge pull request #846 from ceph/minimal-responses

nameserver: Disable minimal-responses

2 months agoteuthology: Configure week-long journald 847/head
David Galloway [Thu, 14 May 2026 22:41:12 +0000 (18:41 -0400)]
teuthology: Configure week-long journald

Fixes: https://tracker.ceph.com/issues/70634
Signed-off-by: David Galloway <david.galloway@ibm.com>
2 months agonameserver: Disable minimal-responses 846/head
David Galloway [Thu, 14 May 2026 22:08:10 +0000 (18:08 -0400)]
nameserver: Disable minimal-responses

Just upgraded vpn-pub to el9.

BIND 9.16 (EL9) changed the default behavior for minimal-responses,
causing authority and additional (glue) sections to be omitted from
responses. Set minimal-responses no explicitly to restore consistent
behavior across all nameservers regardless of BIND version.

Signed-off-by: David Galloway <david.galloway@ibm.com>
2 months agoMerge pull request #844 from ceph/wip-63562
David Galloway [Thu, 14 May 2026 18:28:48 +0000 (14:28 -0400)]
Merge pull request #844 from ceph/wip-63562

users: Change home dir path for teuthology host

2 months agotestnode: Replace apt_key module 845/head
David Galloway [Thu, 14 May 2026 18:24:09 +0000 (14:24 -0400)]
testnode: Replace apt_key module

As of this writing, apt_repos and common_apt_repos are actually unused/empty but
the functionality is still useful.

When a chacra repo is added during a teuthology job, `[trusted=yes]` is added to
the repo file so no worries there.

```
curl -s https://2.chacra.ceph.com/repos/ceph/tentacle/64721f2bfd1c725c9d5f65983a99bac4d01e22d4/ubuntu/jammy/flavors/default/repo
deb [trusted=yes] https://2.chacra.ceph.com/r/ceph/tentacle/64721f2bfd1c725c9d5f65983a99bac4d01e22d4/ubuntu/jammy/flavors/default/ jammy main
```

Fixes: https://tracker.ceph.com/issues/63567
Signed-off-by: David Galloway <david.galloway@ibm.com>
2 months agousers: Change home dir path for teuthology host 844/head
David Galloway [Thu, 14 May 2026 16:28:33 +0000 (12:28 -0400)]
users: Change home dir path for teuthology host

The home dirs live at the /tank/home mountpoint.  This change will default to /home unless the host we're running the role against is in the teuthology ansible group.

Fixes: https://tracker.ceph.com/issues/63562
Signed-off-by: David Galloway <david.galloway@ibm.com>
2 months agolong_running_cluster: Enable storing coredumps 843/head
David Galloway [Wed, 13 May 2026 21:33:37 +0000 (17:33 -0400)]
long_running_cluster: Enable storing coredumps

Fixes: https://tracker.ceph.com/issues/56434
Signed-off-by: David Galloway <david.galloway@ibm.com>
2 months agoMerge pull request #782 from ceph/wip-remove-old-grafana-repo-and-gpg-key
David Galloway [Wed, 13 May 2026 16:50:37 +0000 (12:50 -0400)]
Merge pull request #782 from ceph/wip-remove-old-grafana-repo-and-gpg-key

Add cleanup tasks to resolve Grafana apt repository conflict

2 months agoAdd cleanup tasks to resolve Grafana APT repository conflict 782/head
Adam Kraitman [Wed, 16 Jul 2025 07:18:07 +0000 (10:18 +0300)]
Add cleanup tasks to resolve Grafana APT repository conflict
The new tasks remove the conflicting key file and duplicate repository entries before adding the standardized Grafana repository, ensuring a clean APT configuration

Signed-off-by: Adam Kraitman <akraitma@li-8b09b2cc-35b7-11b2-a85c-cd1dbade58f9.ibm.com>
2 months agomaas: quote variable usages to satisfy ansible-lint var-spacing 840/head
David Galloway [Fri, 8 May 2026 20:59:38 +0000 (20:59 +0000)]
maas: quote variable usages to satisfy ansible-lint var-spacing

ansible-lint's var-spacing rule flags '{{ var }}temp' and 'prefix-{{ var }}'
because non-whitespace characters border the Jinja delimiters. Switch the
'temp' suffix to a Jinja string concatenation, and quote the YAML scalars
where a literal joins a variable so the boundaries are unambiguous.

Signed-off-by: David Galloway <david.galloway@ibm.com>
2 months agomaas: tasks to import machines & configure NICs
David Galloway [Wed, 6 May 2026 17:33:02 +0000 (13:33 -0400)]
maas: tasks to import machines & configure NICs

Signed-off-by: David Galloway <david.galloway@ibm.com>
2 months agomaas: Tasks to manage networking in MAAS
David Galloway [Mon, 4 May 2026 21:45:29 +0000 (17:45 -0400)]
maas: Tasks to manage networking in MAAS

Signed-off-by: David Galloway <david.galloway@ibm.com>
2 months agomaas: Reusable tasks to communicate with MaaS API
David Galloway [Fri, 1 May 2026 19:20:33 +0000 (15:20 -0400)]
maas: Reusable tasks to communicate with MaaS API

Since MaaS API calls require a different nonce for each call,
we have to get it a lot.  These tasks will get called before
any POST.

Signed-off-by: David Galloway <david.galloway@ibm.com>
2 months agomaas: Add secrets role for importing encrypted values
David Galloway [Fri, 1 May 2026 19:06:03 +0000 (15:06 -0400)]
maas: Add secrets role for importing encrypted values

Signed-off-by: David Galloway <david.galloway@ibm.com>
2 months agoMerge pull request #842 from ceph/braggi-disk
David Galloway [Fri, 8 May 2026 13:33:38 +0000 (09:33 -0400)]
Merge pull request #842 from ceph/braggi-disk

jenkins-builder-disk: Fix adami/braggi disk selection

2 months agoMerge pull request #841 from ceph/bath-disk
David Galloway [Thu, 7 May 2026 18:14:01 +0000 (14:14 -0400)]
Merge pull request #841 from ceph/bath-disk

jenkins-builder-disk: Missing disk selection for bath

2 months agojenkins-builder-disk: Fix adami/braggi disk selection 842/head
David Galloway [Thu, 7 May 2026 17:53:26 +0000 (13:53 -0400)]
jenkins-builder-disk: Fix adami/braggi disk selection

Signed-off-by: David Galloway <david.galloway@ibm.com>
2 months agojenkins-builder-disk: Missing disk selection for bath 841/head
David Galloway [Wed, 6 May 2026 19:01:58 +0000 (15:01 -0400)]
jenkins-builder-disk: Missing disk selection for bath

Signed-off-by: David Galloway <david.galloway@ibm.com>
2 months agoMerge pull request #839 from ceph/wip-mimir-external-url
David Galloway [Wed, 6 May 2026 17:53:47 +0000 (13:53 -0400)]
Merge pull request #839 from ceph/wip-mimir-external-url

Updated README with instructions on how to use the external Mimir URL for public_facing hosts and Moved README.md to the correct folder location

2 months agodocument agent_mimir_external_url + usage for external Mimir 839/head
Adam Kraitman [Thu, 30 Apr 2026 17:10:40 +0000 (20:10 +0300)]
document agent_mimir_external_url + usage for external Mimir

Signed-off-by: Adam Kraitman <akraitma@li-8b09b2cc-35b7-11b2-a85c-cd1dbade58f9.ibm.com>
2 months agoMerge pull request #838 from ceph/epel-mirror
Dan Mick [Thu, 30 Apr 2026 18:35:18 +0000 (11:35 -0700)]
Merge pull request #838 from ceph/epel-mirror

Use epel mirror

2 months agocommon: Use internal epel mirror 838/head
David Galloway [Thu, 30 Apr 2026 16:59:30 +0000 (12:59 -0400)]
common: Use internal epel mirror

Signed-off-by: David Galloway <david.galloway@ibm.com>
2 months agocommon: Remove epel-testing repo
David Galloway [Fri, 10 Apr 2026 19:24:19 +0000 (15:24 -0400)]
common: Remove epel-testing repo

The repo's already disabled by default and the string 'epel-testing' does not appear anywhere in ceph.git or teuthology.git.

Signed-off-by: David Galloway <david.galloway@ibm.com>
2 months agoMerge pull request #837 from ceph/wip-update-grafana-agent
David Galloway [Thu, 30 Apr 2026 13:59:26 +0000 (09:59 -0400)]
Merge pull request #837 from ceph/wip-update-grafana-agent

roles/grafana_agent: major cleanup and cross-platform fixes

2 months ago- Update default Mimir endpoint 837/head
Adam Kraitman [Wed, 15 Apr 2026 07:52:13 +0000 (10:52 +0300)]
- Update default Mimir endpoint
- Improve port 9090 conflict detection (now fails clearly on all distros)
- Fix node_exporter installation on RedHat (EPEL + correct package)
- Refactor grafana-agent.yaml.j2 to use clean static scrape config + basic_auth
- Add WAL directory management
- Add comprehensive README.md

Signed-off-by: Adam Kraitman <akraitma@li-8b09b2cc-35b7-11b2-a85c-cd1dbade58f9.ibm.com>
3 months agoMerge pull request #836 from ceph/1001
David Galloway [Wed, 1 Apr 2026 16:34:49 +0000 (12:34 -0400)]
Merge pull request #836 from ceph/1001

maas: Use 1001 for cm user

3 months agomaas: Use 1001 for cm user 836/head
David Galloway [Wed, 1 Apr 2026 14:47:10 +0000 (10:47 -0400)]
maas: Use 1001 for cm user

teuthology's ubuntu user expects UID 1000

Signed-off-by: David Galloway <david.galloway@ibm.com>
3 months agoMerge pull request #788 from ceph/wip-maas-apt
David Galloway [Tue, 31 Mar 2026 14:52:12 +0000 (10:52 -0400)]
Merge pull request #788 from ceph/wip-maas-apt

Create role to deploy and configure MAAS

3 months agoMerge pull request #835 from ceph/short
Dan Mick [Mon, 30 Mar 2026 18:21:01 +0000 (11:21 -0700)]
Merge pull request #835 from ceph/short

prep-fog-capture: Set short hostname on boot

4 months agoprep-fog-capture: Set short hostname on boot 835/head
David Galloway [Tue, 17 Mar 2026 12:47:15 +0000 (08:47 -0400)]
prep-fog-capture: Set short hostname on boot

Setting FQDN via `hostname` is not best practice

Signed-off-by: David Galloway <david.galloway@ibm.com>
4 months agoMerge pull request #834 from ceph/fix-nameserver-for-deb
Dan Mick [Fri, 13 Mar 2026 20:07:46 +0000 (13:07 -0700)]
Merge pull request #834 from ceph/fix-nameserver-for-deb

Fix nameserver for deb

4 months agonameserver: Fix vars for Debian 834/head
David Galloway [Fri, 13 Mar 2026 16:19:52 +0000 (12:19 -0400)]
nameserver: Fix vars for Debian

Signed-off-by: David Galloway <david.galloway@ibm.com>
4 months agonameserver: named.conf is in /etc/bind on Debian
Dan Mick [Fri, 13 Mar 2026 02:15:43 +0000 (19:15 -0700)]
nameserver: named.conf is in /etc/bind on Debian

Signed-off-by: Dan Mick <dmick@ibm.com>
4 months agonameserver: don't create /etc/<X>/named if it doesn't exist
Dan Mick [Fri, 13 Mar 2026 01:10:00 +0000 (18:10 -0700)]
nameserver: don't create /etc/<X>/named if it doesn't exist

It should exist.  This would have caught the error that
X is sysconfig on el systems and default on deb systems.

Signed-off-by: Dan Mick <dmick@ibm.com>
4 months agoroles/nameserver: allow defaults file to vary
Dan Mick [Fri, 13 Mar 2026 00:55:31 +0000 (17:55 -0700)]
roles/nameserver: allow defaults file to vary

deb: /etc/default/named
el: /etc/sysconfig/named

Signed-off-by: Dan Mick <dmick@ibm.com>
4 months agoMerge pull request #832 from ceph/ansible_user
David Galloway [Wed, 11 Mar 2026 15:18:14 +0000 (11:18 -0400)]
Merge pull request #832 from ceph/ansible_user

testnode: Add iozone to path

4 months agotestnode: Ensure iozone is in path 832/head
David Galloway [Wed, 11 Mar 2026 15:09:23 +0000 (11:09 -0400)]
testnode: Ensure iozone is in path

Signed-off-by: David Galloway <david.galloway@ibm.com>
4 months agotestnode: Default ansible_ssh_user to cm_user, then nothing
David Galloway [Wed, 11 Mar 2026 15:06:39 +0000 (11:06 -0400)]
testnode: Default ansible_ssh_user to cm_user, then nothing

Ansible, in their infinite wisdom, have deprecated yet another magic variable breaking backwards compatibility.

Signed-off-by: David Galloway <david.galloway@ibm.com>
4 months agoMerge pull request #831 from dmick/rocky10-iozone
David Galloway [Mon, 9 Mar 2026 16:57:04 +0000 (12:57 -0400)]
Merge pull request #831 from dmick/rocky10-iozone

testnode: add iozone to rocky_10.yml

4 months agotestnode: add iozone to rocky_10.yml 831/head
Dan Mick [Sat, 7 Mar 2026 01:16:10 +0000 (17:16 -0800)]
testnode: add iozone to rocky_10.yml

I built the RPM and installed it on the apt-mirror service
(on the POK lab Openshift)

Fixes: https://tracker.ceph.com/issues/75381
Signed-off-by: Dan Mick <dan.mick@redhat.com>
4 months agoEnhance install_grub script for ARM deployment and RHEL 10 support 788/head
Fernando Alcocer [Wed, 4 Mar 2026 17:13:57 +0000 (11:13 -0600)]
Enhance install_grub script for ARM deployment and RHEL 10 support

4 months agoMerge pull request #821 from ceph/prepfog-v2
Dan Mick [Mon, 2 Mar 2026 18:59:16 +0000 (10:59 -0800)]
Merge pull request #821 from ceph/prepfog-v2

prep-fog-capture: Refactor, split, re-add cobbler-provided hacks

4 months agoMerge pull request #830 from ceph/nameserver-apt
David Galloway [Mon, 23 Feb 2026 15:49:50 +0000 (10:49 -0500)]
Merge pull request #830 from ceph/nameserver-apt

Nameserver role updates

4 months agoMerge pull request #828 from ceph/builder-disk-uuid
David Galloway [Fri, 20 Feb 2026 22:10:08 +0000 (17:10 -0500)]
Merge pull request #828 from ceph/builder-disk-uuid

jenkins-builder-disk: Use UUID instead of disk name

4 months agonameserver: Optionally disable DNSSEC 830/head
David Galloway [Fri, 20 Feb 2026 21:52:36 +0000 (16:52 -0500)]
nameserver: Optionally disable DNSSEC

Signed-off-by: David Galloway <david.galloway@ibm.com>
4 months agonameserver: Disable ipv6 for now
David Galloway [Fri, 20 Feb 2026 21:45:36 +0000 (16:45 -0500)]
nameserver: Disable ipv6 for now

Signed-off-by: David Galloway <david.galloway@ibm.com>
4 months agonameserver: Support Ubuntu
David Galloway [Fri, 20 Feb 2026 21:32:14 +0000 (16:32 -0500)]
nameserver: Support Ubuntu

Signed-off-by: David Galloway <david.galloway@ibm.com>
4 months agoMerge pull request #829 from ceph/force-ntp
David Galloway [Fri, 20 Feb 2026 20:39:23 +0000 (15:39 -0500)]
Merge pull request #829 from ceph/force-ntp

tools: Playbook to force time sync

4 months agoMerge pull request #827 from ceph/fix-forward
David Galloway [Fri, 20 Feb 2026 20:38:59 +0000 (15:38 -0500)]
Merge pull request #827 from ceph/fix-forward

nameserver: Match A records to reverse[] in named_domains

4 months agoMerge pull request #826 from ceph/fix-ntp
David Galloway [Fri, 20 Feb 2026 20:38:51 +0000 (15:38 -0500)]
Merge pull request #826 from ceph/fix-ntp

ntp-server: Overhaul role

5 months agojenkins-builder-disk: Support disk flipping on adami too 828/head
David Galloway [Fri, 20 Feb 2026 15:34:52 +0000 (10:34 -0500)]
jenkins-builder-disk: Support disk flipping on adami too

Signed-off-by: David Galloway <david.galloway@ibm.com>
5 months agotools: Playbook to force time sync 829/head
David Galloway [Fri, 20 Feb 2026 15:09:16 +0000 (10:09 -0500)]
tools: Playbook to force time sync

Useful during our emergency bring-up of the POK lab.

We were using the RHV hypervisor hosts as the NTP servers but who knows when they will be accessible again.  For now, NTP server is on soko02

Signed-off-by: David Galloway <david.galloway@ibm.com>
5 months agojenkins-builder-disk: Use UUID instead of disk name
David Galloway [Fri, 20 Feb 2026 14:35:51 +0000 (09:35 -0500)]
jenkins-builder-disk: Use UUID instead of disk name

Avoids disk renaming tomfoolery during boot

Signed-off-by: David Galloway <david.galloway@ibm.com>
5 months agontp-server: Overhaul role 826/head
David Galloway [Fri, 20 Feb 2026 13:53:05 +0000 (08:53 -0500)]
ntp-server: Overhaul role

 - Get rid of netaddr. Modern ntpd supports CIDRs
 - Make OS agnostic
 - Support ufw, don't blow up if no firewall in use

Signed-off-by: David Galloway <david.galloway@ibm.com>
5 months agonameserver: Match A records to reverse[] in named_domains 827/head
David Galloway [Fri, 20 Feb 2026 00:21:57 +0000 (19:21 -0500)]
nameserver: Match A records to reverse[] in named_domains

This will let multiple subnets/domains use the same ipvar

For example, bath and infra-compute can both have a if_25Gb_ip
```
bath14.front.sepia.ceph.com if_25Gb_ip=10.20.192.44
infra-compute-01.os.sepia.ceph.com if_25Gb_1_ip=172.16.53.11

  front.sepia.ceph.com:
    forward: front.sepia.ceph.com
    ipvars:
      - ip
      - if_25Gb_1_ip
    dynamic: true
    ddns_hostname_prefixes:
      - ovh
    reverse:
      - 10.20.192
      - 10.20.193
  os.sepia.ceph.com:
    forward: os.sepia.ceph.com
    ipvar: if_25Gb_1_ip
    dynamic: false
    reverse:
      - 172.16.53
      - 172.16.54

```

`bath14 IN A` will get written to front.sepia.ceph.com
`infra-compute-01 IN A` will get written to os.sepia.ceph.com

Signed-off-by: David Galloway <david.galloway@ibm.com>
5 months agoRefactor MAAS configuration tasks to use ansible.builtin.stat instead of shell comman...
Fernando Alcocer [Thu, 19 Feb 2026 22:16:51 +0000 (16:16 -0600)]
Refactor MAAS configuration tasks to use ansible.builtin.stat instead of shell commands for improved reliability and clarity

5 months agoMerge pull request #801 from ceph/playbook-sync
David Galloway [Thu, 19 Feb 2026 14:12:20 +0000 (09:12 -0500)]
Merge pull request #801 from ceph/playbook-sync

Sync playbooks from David's repo

5 months agoSync playbooks from other @David's repo 801/head
Jitendra-Sahu [Tue, 9 Dec 2025 11:52:58 +0000 (17:22 +0530)]
Sync playbooks from other @David's repo

amend

Removed updated tools/jenkins-builder-disk.yml

5 months agoprep-fog-capture: Refactor, split, re-add cobbler-provided hacks 821/head
David Galloway [Wed, 18 Feb 2026 19:12:02 +0000 (14:12 -0500)]
prep-fog-capture: Refactor, split, re-add cobbler-provided hacks

- Using systemd instead of rc.local:
  - Configure netplan on boot for Ubuntu
  - Configure NetworkManager on boot for CentOS/Rocky
  - Set hostname
  - Update packages and reboot

Signed-off-by: David Galloway <david.galloway@ibm.com>
5 months agotestnode: Stop rewriting /etc/hosts
David Galloway [Mon, 9 Feb 2026 18:42:16 +0000 (13:42 -0500)]
testnode: Stop rewriting /etc/hosts

We handle this in prep-fog-capture now by writing /etc/hosts from scratch.

Signed-off-by: David Galloway <david.galloway@ibm.com>
5 months agoMerge pull request #825 from ceph/bindutils
Dan Mick [Tue, 17 Feb 2026 18:09:32 +0000 (10:09 -0800)]
Merge pull request #825 from ceph/bindutils

testnode: bind-utils for dig

5 months agotestnode: bind-utils for dig 825/head
David Galloway [Tue, 17 Feb 2026 18:02:33 +0000 (13:02 -0500)]
testnode: bind-utils for dig

Signed-off-by: David Galloway <david.galloway@ibm.com>
5 months agoMerge pull request #824 from ceph/deps
Dan Mick [Sat, 14 Feb 2026 01:02:25 +0000 (17:02 -0800)]
Merge pull request #824 from ceph/deps

testnode: semanage and bzip2 for el9/10

5 months agotestnode: semanage and bzip2 for el9/10 824/head
David Galloway [Sat, 14 Feb 2026 00:53:39 +0000 (19:53 -0500)]
testnode: semanage and bzip2 for el9/10

Fixes: https://tracker.ceph.com/issues/74570
Fixes: https://tracker.ceph.com/issues/71624
Signed-off-by: David Galloway <david.galloway@ibm.com>
5 months agoMerge pull request #820 from deepssin/centos9-perl-test-harness 791/head
David Galloway [Fri, 6 Feb 2026 20:33:14 +0000 (15:33 -0500)]
Merge pull request #820 from deepssin/centos9-perl-test-harness

Fix pjd failure: prove - command not available

5 months agoFix pjd failure: prove - command not available 820/head
deepssin [Fri, 6 Feb 2026 09:46:48 +0000 (09:46 +0000)]
Fix pjd failure: prove - command not available

Signed-off-by: deepssin <deepssin@redhat.com>
5 months agoMerge pull request #819 from ceph/c9-fuse
David Galloway [Thu, 5 Feb 2026 15:49:53 +0000 (10:49 -0500)]
Merge pull request #819 from ceph/c9-fuse

testnode: fuse and net-tools for CentOS 9

5 months agotestnode: fuse and net-tools for CentOS 9 819/head
David Galloway [Thu, 5 Feb 2026 14:57:53 +0000 (09:57 -0500)]
testnode: fuse and net-tools for CentOS 9

centos_9_stream.yml isn't actually pulled in

Signed-off-by: David Galloway <david.galloway@ibm.com>
5 months agoMerge pull request #817 from ceph/apt-https
David Galloway [Thu, 5 Feb 2026 14:32:04 +0000 (09:32 -0500)]
Merge pull request #817 from ceph/apt-https

common: s/http/https in apt sources as outbound port 80 is blocked in…