We consider a maintenance shop that is responsible for the availability of a fleet of assets; e.g., trains. Unavailability of assets may be due to active maintenance time or unavailability of spare parts. Both spare assets and spare parts may be stocked in order to ensure a certain fleet readiness, which is the probability of having sufficient assets available for the primary process (e.g., running a train schedule) at any given moment. This is different from guaranteeing a certain average availability, as is typically done in the literature on spare parts inventories. We analyze the corresponding system, assuming continuous review and base stock control. We propose an algorithm, based on a marginal analysis approach, to solve the optimization problem of minimizing holding costs for spare assets and spare parts. Since the problem is not item separable, even marginal analysis is time-consuming, but we show how to efficiently solve this problem. Using a numerical experiment, we show that our algorithm generally leads to a solution that is close to optimal and that it is much faster than an existing algorithm for a closely related problem. We further show that the additional costs that are incurred when the problem of stocking spare assets and spare parts is not solved jointly can be significant. A key managerial insight is that typically the number of spare assets to be acquired is very close to a lower bound that is determined only by the active maintenance time on the assets. It is typically not cost-effective to acquire more spare assets to cover spare parts unavailability.